1 19 20 package org.netbeans.lib.lexer.test.simple; 21 22 import java.util.Arrays ; 23 import java.util.Collection ; 24 import java.util.Iterator ; 25 import java.util.List ; 26 import java.util.Set ; 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 38 public class GenLanguageTest extends TestCase { 39 40 private static final int IDS_SIZE = 13; 41 42 public GenLanguageTest(String testName) { 43 super(testName); 44 } 45 46 protected void setUp() throws java.lang.Exception { 47 } 48 49 protected void tearDown() throws java.lang.Exception { 50 } 51 52 public void testTokenIds() { 53 Language<TokenId> language = GenLanguage.language(); 55 Set <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 Collection <TokenId> testIds = Arrays.asList(idArray); 76 LexerTestUtilities.assertCollectionsEqual("Ids do not match with test ones", 77 ids, testIds); 78 79 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 e) { 94 } 96 97 try { 98 language.validTokenId(-1); 99 fail("Error: exception not thrown"); 100 } catch (IndexOutOfBoundsException e) { 101 } 103 104 try { 105 language.validTokenId(20); 106 fail("Error: exception not thrown"); 107 } catch (IndexOutOfBoundsException e) { 108 } 110 111 assertEquals(15, language.maxOrdinal()); 112 113 Set cats = language.tokenCategories(); 115 Collection testCats = Arrays.asList(new String [] { "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 <String > testIdCats 162 = language.tokenCategories(GenLanguage.IDENTIFIER_ID); 163 LexerTestUtilities.assertCollectionsEqual( 164 Arrays.asList(new String [] { 165 "test-category", 166 }), 167 testIdCats 168 ); 169 170 List <String > testIdCats2 171 = language.tokenCategories(GenLanguage.PLUS_ID); 172 LexerTestUtilities.assertCollectionsEqual( 173 Arrays.asList(new String [] { 174 "test-category", 175 "operator", 176 }), 177 testIdCats2 178 ); 179 180 181 Collection <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 |