KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > lib > lexer > test > simple > GenLanguageTest


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.lib.lexer.test.simple;
21
22 import java.util.Arrays JavaDoc;
23 import java.util.Collection JavaDoc;
24 import java.util.Iterator JavaDoc;
25 import java.util.List JavaDoc;
26 import java.util.Set JavaDoc;
27 import junit.framework.TestCase;
28 import org.netbeans.api.lexer.Language;
29 import org.netbeans.api.lexer.TokenId;
30 import org.netbeans.lib.lexer.test.LexerTestUtilities;
31
32
33 /**
34  * Test several simple lexer impls.
35  *
36  * @author mmetelka
37  */

38 public class GenLanguageTest extends TestCase {
39
40     private static final int IDS_SIZE = 13;
41
42     public GenLanguageTest(String JavaDoc testName) {
43         super(testName);
44     }
45     
46     protected void setUp() throws java.lang.Exception JavaDoc {
47     }
48
49     protected void tearDown() throws java.lang.Exception JavaDoc {
50     }
51
52     public void testTokenIds() {
53         // Check that token ids are all present and correctly ordered
54
Language<TokenId> language = GenLanguage.language();
55         Set JavaDoc<TokenId> ids = language.tokenIds();
56         assertTrue("Invalid ids.size() - expected " + IDS_SIZE, ids.size() == IDS_SIZE);
57         
58         TokenId[] idArray = {
59             GenLanguage.IDENTIFIER_ID,
60             GenLanguage.PLUS_ID,
61             GenLanguage.MINUS_ID,
62             GenLanguage.PLUS_MINUS_PLUS_ID,
63             GenLanguage.SLASH_ID,
64             GenLanguage.STAR_ID,
65             GenLanguage.ML_COMMENT_ID,
66             GenLanguage.WHITESPACE_ID,
67             GenLanguage.SL_COMMENT_ID,
68             GenLanguage.ERROR_ID,
69             GenLanguage.PUBLIC_ID,
70             GenLanguage.PRIVATE_ID,
71             GenLanguage.STATIC_ID,
72         };
73
74         // Check operations with ids
75
Collection JavaDoc<TokenId> testIds = Arrays.asList(idArray);
76         LexerTestUtilities.assertCollectionsEqual("Ids do not match with test ones",
77                 ids, testIds);
78         
79         // Check that ids.iterator() is ordered by ordinal
80
int ind = 0;
81         for (TokenId id : ids) {
82             assertTrue("Token ids not sorted by ordinal at index=" + ind, id == idArray[ind]);
83             ind++;
84             assertSame(language.tokenId(id.name()), id);
85             assertSame(language.tokenId(id.ordinal()), id);
86             assertSame(language.validTokenId(id.name()), id);
87             assertSame(language.validTokenId(id.ordinal()), id);
88         }
89         
90         try {
91             language.validTokenId("invalid-name");
92             fail("Error: exception not thrown");
93         } catch (IllegalArgumentException JavaDoc e) {
94             // OK
95
}
96         
97         try {
98             language.validTokenId(-1);
99             fail("Error: exception not thrown");
100         } catch (IndexOutOfBoundsException JavaDoc e) {
101             // OK
102
}
103         
104         try {
105             language.validTokenId(20);
106             fail("Error: exception not thrown");
107         } catch (IndexOutOfBoundsException JavaDoc e) {
108             // OK
109
}
110         
111         assertEquals(15, language.maxOrdinal());
112         
113         // Check token categories
114
Set JavaDoc cats = language.tokenCategories();
115         Collection JavaDoc testCats = Arrays.asList(new String JavaDoc[] { "operator", "test-category", "whitespace", "error", "comment", "keyword" });
116         LexerTestUtilities.assertCollectionsEqual("Invalid token categories",
117                 cats, testCats);
118         
119         LexerTestUtilities.assertCollectionsEqual(
120                 Arrays.asList(new TokenId[] {
121                     GenLanguage.PLUS_ID,
122                     GenLanguage.MINUS_ID,
123                     GenLanguage.PLUS_MINUS_PLUS_ID,
124                     GenLanguage.STAR_ID,
125                     GenLanguage.SLASH_ID,
126                 }),
127                 language.tokenCategoryMembers("operator")
128         );
129         
130         LexerTestUtilities.assertCollectionsEqual(
131                 Arrays.asList(new TokenId[] {
132                     GenLanguage.PLUS_ID,
133                     GenLanguage.MINUS_ID,
134                     GenLanguage.IDENTIFIER_ID,
135                 }),
136                 language.tokenCategoryMembers("test-category")
137         );
138
139         LexerTestUtilities.assertCollectionsEqual(
140                 Arrays.asList(new TokenId[] {
141                     GenLanguage.WHITESPACE_ID,
142                 }),
143                 language.tokenCategoryMembers("whitespace")
144         );
145
146         LexerTestUtilities.assertCollectionsEqual(
147                 Arrays.asList(new TokenId[] {
148                     GenLanguage.ERROR_ID,
149                 }),
150                 language.tokenCategoryMembers("error")
151         );
152
153         LexerTestUtilities.assertCollectionsEqual(
154                 Arrays.asList(new TokenId[] {
155                     GenLanguage.ML_COMMENT_ID,
156                     GenLanguage.SL_COMMENT_ID,
157                 }),
158                 language.tokenCategoryMembers("comment")
159         );
160                 
161         List JavaDoc<String JavaDoc> testIdCats
162             = language.tokenCategories(GenLanguage.IDENTIFIER_ID);
163         LexerTestUtilities.assertCollectionsEqual(
164                 Arrays.asList(new String JavaDoc[] {
165                     "test-category",
166                 }),
167                 testIdCats
168         );
169
170         List JavaDoc<String JavaDoc> testIdCats2
171             = language.tokenCategories(GenLanguage.PLUS_ID);
172         LexerTestUtilities.assertCollectionsEqual(
173                 Arrays.asList(new String JavaDoc[] {
174                     "test-category",
175                     "operator",
176                 }),
177                 testIdCats2
178         );
179
180
181         // Check Language.merge()
182
Collection JavaDoc<TokenId> mergedIds
183                 = language.merge(
184                     Arrays.asList(new TokenId[] { GenLanguage.IDENTIFIER_ID }),
185                     language.merge(language.tokenCategoryMembers("comment"),
186                         language.tokenCategoryMembers("error"))
187                 );
188         LexerTestUtilities.assertCollectionsEqual("Invalid language.merge()",
189                 Arrays.asList(new TokenId[] {
190                     GenLanguage.ML_COMMENT_ID,
191                     GenLanguage.SL_COMMENT_ID,
192                     GenLanguage.ERROR_ID,
193                     GenLanguage.IDENTIFIER_ID,
194                 }),
195                 mergedIds
196         );
197
198     }
199
200 }
201
Popular Tags