| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 // This code was auto-generated, is not intended to be edited, and is subject to | 5 // This code was auto-generated, is not intended to be edited, and is subject to |
| 6 // significant change. Please see the README file for more information. | 6 // significant change. Please see the README file for more information. |
| 7 | 7 |
| 8 library engine.scanner_test; | 8 library engine.scanner_test; |
| 9 | 9 |
| 10 import 'package:analyzer/src/generated/java_core.dart'; | 10 import 'package:analyzer/src/generated/java_core.dart'; |
| 11 import 'package:analyzer/src/generated/java_junit.dart'; | 11 import 'package:analyzer/src/generated/java_junit.dart'; |
| 12 import 'package:analyzer/src/generated/source.dart'; | 12 import 'package:analyzer/src/generated/source.dart'; |
| 13 import 'package:analyzer/src/generated/error.dart'; | 13 import 'package:analyzer/src/generated/error.dart'; |
| 14 import 'package:analyzer/src/generated/scanner.dart'; | 14 import 'package:analyzer/src/generated/scanner.dart'; |
| 15 import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap; | 15 import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap; |
| 16 import 'package:unittest/unittest.dart' as _ut; | 16 import 'package:unittest/unittest.dart' as _ut; |
| 17 import 'test_support.dart'; | 17 import 'test_support.dart'; |
| 18 | 18 |
| 19 /** | |
| 20 * Instances of the class `TokenStreamValidator` are used to validate the correc
t construction | |
| 21 * of a stream of tokens. | |
| 22 */ | |
| 23 class TokenStreamValidator { | |
| 24 /** | |
| 25 * Validate that the stream of tokens that starts with the given token is corr
ect. | |
| 26 * | |
| 27 * @param token the first token in the stream of tokens to be validated | |
| 28 */ | |
| 29 void validate(Token token) { | |
| 30 JavaStringBuilder builder = new JavaStringBuilder(); | |
| 31 _validateStream(builder, token); | |
| 32 if (builder.length > 0) { | |
| 33 JUnitTestCase.fail(builder.toString()); | |
| 34 } | |
| 35 } | |
| 36 | |
| 37 void _validateStream(JavaStringBuilder builder, Token token) { | |
| 38 if (token == null) { | |
| 39 return; | |
| 40 } | |
| 41 Token previousToken = null; | |
| 42 int previousEnd = -1; | |
| 43 Token currentToken = token; | |
| 44 while (currentToken != null && currentToken.type != TokenType.EOF) { | |
| 45 _validateStream(builder, currentToken.precedingComments); | |
| 46 TokenType type = currentToken.type; | |
| 47 if (type == TokenType.OPEN_CURLY_BRACKET || type == TokenType.OPEN_PAREN |
| type == TokenType.OPEN_SQUARE_BRACKET || type == TokenType.STRING_INTERPOLATIO
N_EXPRESSION) { | |
| 48 if (currentToken is! BeginToken) { | |
| 49 builder.append("\r\nExpected BeginToken, found "); | |
| 50 builder.append(currentToken.runtimeType.toString()); | |
| 51 builder.append(" "); | |
| 52 _writeToken(builder, currentToken); | |
| 53 } | |
| 54 } | |
| 55 int currentStart = currentToken.offset; | |
| 56 int currentLength = currentToken.length; | |
| 57 int currentEnd = currentStart + currentLength - 1; | |
| 58 if (currentStart <= previousEnd) { | |
| 59 builder.append("\r\nInvalid token sequence: "); | |
| 60 _writeToken(builder, previousToken); | |
| 61 builder.append(" followed by "); | |
| 62 _writeToken(builder, currentToken); | |
| 63 } | |
| 64 previousEnd = currentEnd; | |
| 65 previousToken = currentToken; | |
| 66 currentToken = currentToken.next; | |
| 67 } | |
| 68 } | |
| 69 | |
| 70 void _writeToken(JavaStringBuilder builder, Token token) { | |
| 71 builder.append("["); | |
| 72 builder.append(token.type); | |
| 73 builder.append(", '"); | |
| 74 builder.append(token.lexeme); | |
| 75 builder.append("', "); | |
| 76 builder.append(token.offset); | |
| 77 builder.append(", "); | |
| 78 builder.append(token.length); | |
| 79 builder.append("]"); | |
| 80 } | |
| 81 } | |
| 82 | |
| 83 class CharSequenceReaderTest extends JUnitTestCase { | 19 class CharSequenceReaderTest extends JUnitTestCase { |
| 84 void test_advance() { | 20 void test_advance() { |
| 85 CharSequenceReader reader = new CharSequenceReader("x"); | 21 CharSequenceReader reader = new CharSequenceReader("x"); |
| 86 JUnitTestCase.assertEquals(0x78, reader.advance()); | 22 JUnitTestCase.assertEquals(0x78, reader.advance()); |
| 87 JUnitTestCase.assertEquals(-1, reader.advance()); | 23 JUnitTestCase.assertEquals(-1, reader.advance()); |
| 88 JUnitTestCase.assertEquals(-1, reader.advance()); | 24 JUnitTestCase.assertEquals(-1, reader.advance()); |
| 89 } | 25 } |
| 90 | 26 |
| 91 void test_creation() { | 27 void test_creation() { |
| 92 JUnitTestCase.assertNotNull(new CharSequenceReader("x")); | 28 JUnitTestCase.assertNotNull(new CharSequenceReader("x")); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 runJUnitTest(__test, __test.test_peek); | 85 runJUnitTest(__test, __test.test_peek); |
| 150 }); | 86 }); |
| 151 _ut.test('test_setOffset', () { | 87 _ut.test('test_setOffset', () { |
| 152 final __test = new CharSequenceReaderTest(); | 88 final __test = new CharSequenceReaderTest(); |
| 153 runJUnitTest(__test, __test.test_setOffset); | 89 runJUnitTest(__test, __test.test_setOffset); |
| 154 }); | 90 }); |
| 155 }); | 91 }); |
| 156 } | 92 } |
| 157 } | 93 } |
| 158 | 94 |
| 159 class TokenTypeTest extends EngineTestCase { | |
| 160 void test_isOperator() { | |
| 161 JUnitTestCase.assertTrue(TokenType.AMPERSAND.isOperator); | |
| 162 JUnitTestCase.assertTrue(TokenType.AMPERSAND_AMPERSAND.isOperator); | |
| 163 JUnitTestCase.assertTrue(TokenType.AMPERSAND_EQ.isOperator); | |
| 164 JUnitTestCase.assertTrue(TokenType.BANG.isOperator); | |
| 165 JUnitTestCase.assertTrue(TokenType.BANG_EQ.isOperator); | |
| 166 JUnitTestCase.assertTrue(TokenType.BAR.isOperator); | |
| 167 JUnitTestCase.assertTrue(TokenType.BAR_BAR.isOperator); | |
| 168 JUnitTestCase.assertTrue(TokenType.BAR_EQ.isOperator); | |
| 169 JUnitTestCase.assertTrue(TokenType.CARET.isOperator); | |
| 170 JUnitTestCase.assertTrue(TokenType.CARET_EQ.isOperator); | |
| 171 JUnitTestCase.assertTrue(TokenType.EQ.isOperator); | |
| 172 JUnitTestCase.assertTrue(TokenType.EQ_EQ.isOperator); | |
| 173 JUnitTestCase.assertTrue(TokenType.GT.isOperator); | |
| 174 JUnitTestCase.assertTrue(TokenType.GT_EQ.isOperator); | |
| 175 JUnitTestCase.assertTrue(TokenType.GT_GT.isOperator); | |
| 176 JUnitTestCase.assertTrue(TokenType.GT_GT_EQ.isOperator); | |
| 177 JUnitTestCase.assertTrue(TokenType.INDEX.isOperator); | |
| 178 JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isOperator); | |
| 179 JUnitTestCase.assertTrue(TokenType.IS.isOperator); | |
| 180 JUnitTestCase.assertTrue(TokenType.LT.isOperator); | |
| 181 JUnitTestCase.assertTrue(TokenType.LT_EQ.isOperator); | |
| 182 JUnitTestCase.assertTrue(TokenType.LT_LT.isOperator); | |
| 183 JUnitTestCase.assertTrue(TokenType.LT_LT_EQ.isOperator); | |
| 184 JUnitTestCase.assertTrue(TokenType.MINUS.isOperator); | |
| 185 JUnitTestCase.assertTrue(TokenType.MINUS_EQ.isOperator); | |
| 186 JUnitTestCase.assertTrue(TokenType.MINUS_MINUS.isOperator); | |
| 187 JUnitTestCase.assertTrue(TokenType.PERCENT.isOperator); | |
| 188 JUnitTestCase.assertTrue(TokenType.PERCENT_EQ.isOperator); | |
| 189 JUnitTestCase.assertTrue(TokenType.PERIOD_PERIOD.isOperator); | |
| 190 JUnitTestCase.assertTrue(TokenType.PLUS.isOperator); | |
| 191 JUnitTestCase.assertTrue(TokenType.PLUS_EQ.isOperator); | |
| 192 JUnitTestCase.assertTrue(TokenType.PLUS_PLUS.isOperator); | |
| 193 JUnitTestCase.assertTrue(TokenType.QUESTION.isOperator); | |
| 194 JUnitTestCase.assertTrue(TokenType.SLASH.isOperator); | |
| 195 JUnitTestCase.assertTrue(TokenType.SLASH_EQ.isOperator); | |
| 196 JUnitTestCase.assertTrue(TokenType.STAR.isOperator); | |
| 197 JUnitTestCase.assertTrue(TokenType.STAR_EQ.isOperator); | |
| 198 JUnitTestCase.assertTrue(TokenType.TILDE.isOperator); | |
| 199 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isOperator); | |
| 200 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH_EQ.isOperator); | |
| 201 } | |
| 202 | |
| 203 void test_isUserDefinableOperator() { | |
| 204 JUnitTestCase.assertTrue(TokenType.AMPERSAND.isUserDefinableOperator); | |
| 205 JUnitTestCase.assertTrue(TokenType.BAR.isUserDefinableOperator); | |
| 206 JUnitTestCase.assertTrue(TokenType.CARET.isUserDefinableOperator); | |
| 207 JUnitTestCase.assertTrue(TokenType.EQ_EQ.isUserDefinableOperator); | |
| 208 JUnitTestCase.assertTrue(TokenType.GT.isUserDefinableOperator); | |
| 209 JUnitTestCase.assertTrue(TokenType.GT_EQ.isUserDefinableOperator); | |
| 210 JUnitTestCase.assertTrue(TokenType.GT_GT.isUserDefinableOperator); | |
| 211 JUnitTestCase.assertTrue(TokenType.INDEX.isUserDefinableOperator); | |
| 212 JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isUserDefinableOperator); | |
| 213 JUnitTestCase.assertTrue(TokenType.LT.isUserDefinableOperator); | |
| 214 JUnitTestCase.assertTrue(TokenType.LT_EQ.isUserDefinableOperator); | |
| 215 JUnitTestCase.assertTrue(TokenType.LT_LT.isUserDefinableOperator); | |
| 216 JUnitTestCase.assertTrue(TokenType.MINUS.isUserDefinableOperator); | |
| 217 JUnitTestCase.assertTrue(TokenType.PERCENT.isUserDefinableOperator); | |
| 218 JUnitTestCase.assertTrue(TokenType.PLUS.isUserDefinableOperator); | |
| 219 JUnitTestCase.assertTrue(TokenType.SLASH.isUserDefinableOperator); | |
| 220 JUnitTestCase.assertTrue(TokenType.STAR.isUserDefinableOperator); | |
| 221 JUnitTestCase.assertTrue(TokenType.TILDE.isUserDefinableOperator); | |
| 222 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isUserDefinableOperator); | |
| 223 } | |
| 224 | |
| 225 static dartSuite() { | |
| 226 _ut.group('TokenTypeTest', () { | |
| 227 _ut.test('test_isOperator', () { | |
| 228 final __test = new TokenTypeTest(); | |
| 229 runJUnitTest(__test, __test.test_isOperator); | |
| 230 }); | |
| 231 _ut.test('test_isUserDefinableOperator', () { | |
| 232 final __test = new TokenTypeTest(); | |
| 233 runJUnitTest(__test, __test.test_isUserDefinableOperator); | |
| 234 }); | |
| 235 }); | |
| 236 } | |
| 237 } | |
| 238 | |
| 239 class IncrementalScannerTest extends EngineTestCase { | 95 class IncrementalScannerTest extends EngineTestCase { |
| 240 /** | 96 /** |
| 241 * The first token from the token stream resulting from parsing the original s
ource, or | 97 * The first token from the token stream resulting from parsing the original s
ource, or |
| 242 * `null` if [scan] has not been invoked. | 98 * `null` if [scan] has not been invoked. |
| 243 */ | 99 */ |
| 244 Token _originalTokens; | 100 Token _originalTokens; |
| 245 | 101 |
| 246 /** | 102 /** |
| 247 * The scanner used to perform incremental scanning, or `null` if [scan] has n
ot been | 103 * The scanner used to perform incremental scanning, or `null` if [scan] has n
ot been |
| 248 * invoked. | 104 * invoked. |
| (...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 750 runJUnitTest(__test, __test.test_replace_operator_oneForOne); | 606 runJUnitTest(__test, __test.test_replace_operator_oneForOne); |
| 751 }); | 607 }); |
| 752 _ut.test('test_tokenMap', () { | 608 _ut.test('test_tokenMap', () { |
| 753 final __test = new IncrementalScannerTest(); | 609 final __test = new IncrementalScannerTest(); |
| 754 runJUnitTest(__test, __test.test_tokenMap); | 610 runJUnitTest(__test, __test.test_tokenMap); |
| 755 }); | 611 }); |
| 756 }); | 612 }); |
| 757 } | 613 } |
| 758 } | 614 } |
| 759 | 615 |
| 616 class KeywordStateTest extends JUnitTestCase { |
| 617 void test_KeywordState() { |
| 618 // |
| 619 // Generate the test data to be scanned. |
| 620 // |
| 621 List<Keyword> keywords = Keyword.values; |
| 622 int keywordCount = keywords.length; |
| 623 List<String> textToTest = new List<String>(keywordCount * 3); |
| 624 for (int i = 0; i < keywordCount; i++) { |
| 625 String syntax = keywords[i].syntax; |
| 626 textToTest[i] = syntax; |
| 627 textToTest[i + keywordCount] = "${syntax}x"; |
| 628 textToTest[i + keywordCount * 2] = syntax.substring(0, syntax.length - 1); |
| 629 } |
| 630 // |
| 631 // Scan each of the identifiers. |
| 632 // |
| 633 KeywordState firstState = KeywordState.KEYWORD_STATE; |
| 634 for (int i = 0; i < textToTest.length; i++) { |
| 635 String text = textToTest[i]; |
| 636 int index = 0; |
| 637 int length = text.length; |
| 638 KeywordState state = firstState; |
| 639 while (index < length && state != null) { |
| 640 state = state.next(text.codeUnitAt(index)); |
| 641 index++; |
| 642 } |
| 643 if (i < keywordCount) { |
| 644 // keyword |
| 645 JUnitTestCase.assertNotNull(state); |
| 646 JUnitTestCase.assertNotNull(state.keyword()); |
| 647 JUnitTestCase.assertEquals(keywords[i], state.keyword()); |
| 648 } else if (i < keywordCount * 2) { |
| 649 // keyword + "x" |
| 650 JUnitTestCase.assertNull(state); |
| 651 } else { |
| 652 // keyword.substring(0, keyword.length() - 1) |
| 653 JUnitTestCase.assertNotNull(state); |
| 654 } |
| 655 } |
| 656 } |
| 657 |
| 658 static dartSuite() { |
| 659 _ut.group('KeywordStateTest', () { |
| 660 _ut.test('test_KeywordState', () { |
| 661 final __test = new KeywordStateTest(); |
| 662 runJUnitTest(__test, __test.test_KeywordState); |
| 663 }); |
| 664 }); |
| 665 } |
| 666 } |
| 667 |
| 760 class ScannerTest extends JUnitTestCase { | 668 class ScannerTest extends JUnitTestCase { |
| 761 void fail_incomplete_string_interpolation() { | 669 void fail_incomplete_string_interpolation() { |
| 762 // https://code.google.com/p/dart/issues/detail?id=18073 | 670 // https://code.google.com/p/dart/issues/detail?id=18073 |
| 763 _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 9, "\"fo
o \${bar", [ | 671 _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 9, "\"fo
o \${bar", [ |
| 764 new StringToken(TokenType.STRING, "\"foo ", 0), | 672 new StringToken(TokenType.STRING, "\"foo ", 0), |
| 765 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 5), | 673 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 5), |
| 766 new StringToken(TokenType.IDENTIFIER, "bar", 7)]); | 674 new StringToken(TokenType.IDENTIFIER, "bar", 7)]); |
| 767 } | 675 } |
| 768 | 676 |
| 769 void test_ampersand() { | 677 void test_ampersand() { |
| (...skipping 1605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2375 class ScannerTest_ExpectedLocation { | 2283 class ScannerTest_ExpectedLocation { |
| 2376 final int _offset; | 2284 final int _offset; |
| 2377 | 2285 |
| 2378 final int _lineNumber; | 2286 final int _lineNumber; |
| 2379 | 2287 |
| 2380 final int _columnNumber; | 2288 final int _columnNumber; |
| 2381 | 2289 |
| 2382 ScannerTest_ExpectedLocation(this._offset, this._lineNumber, this._columnNumbe
r); | 2290 ScannerTest_ExpectedLocation(this._offset, this._lineNumber, this._columnNumbe
r); |
| 2383 } | 2291 } |
| 2384 | 2292 |
| 2385 class KeywordStateTest extends JUnitTestCase { | |
| 2386 void test_KeywordState() { | |
| 2387 // | |
| 2388 // Generate the test data to be scanned. | |
| 2389 // | |
| 2390 List<Keyword> keywords = Keyword.values; | |
| 2391 int keywordCount = keywords.length; | |
| 2392 List<String> textToTest = new List<String>(keywordCount * 3); | |
| 2393 for (int i = 0; i < keywordCount; i++) { | |
| 2394 String syntax = keywords[i].syntax; | |
| 2395 textToTest[i] = syntax; | |
| 2396 textToTest[i + keywordCount] = "${syntax}x"; | |
| 2397 textToTest[i + keywordCount * 2] = syntax.substring(0, syntax.length - 1); | |
| 2398 } | |
| 2399 // | |
| 2400 // Scan each of the identifiers. | |
| 2401 // | |
| 2402 KeywordState firstState = KeywordState.KEYWORD_STATE; | |
| 2403 for (int i = 0; i < textToTest.length; i++) { | |
| 2404 String text = textToTest[i]; | |
| 2405 int index = 0; | |
| 2406 int length = text.length; | |
| 2407 KeywordState state = firstState; | |
| 2408 while (index < length && state != null) { | |
| 2409 state = state.next(text.codeUnitAt(index)); | |
| 2410 index++; | |
| 2411 } | |
| 2412 if (i < keywordCount) { | |
| 2413 // keyword | |
| 2414 JUnitTestCase.assertNotNull(state); | |
| 2415 JUnitTestCase.assertNotNull(state.keyword()); | |
| 2416 JUnitTestCase.assertEquals(keywords[i], state.keyword()); | |
| 2417 } else if (i < keywordCount * 2) { | |
| 2418 // keyword + "x" | |
| 2419 JUnitTestCase.assertNull(state); | |
| 2420 } else { | |
| 2421 // keyword.substring(0, keyword.length() - 1) | |
| 2422 JUnitTestCase.assertNotNull(state); | |
| 2423 } | |
| 2424 } | |
| 2425 } | |
| 2426 | |
| 2427 static dartSuite() { | |
| 2428 _ut.group('KeywordStateTest', () { | |
| 2429 _ut.test('test_KeywordState', () { | |
| 2430 final __test = new KeywordStateTest(); | |
| 2431 runJUnitTest(__test, __test.test_KeywordState); | |
| 2432 }); | |
| 2433 }); | |
| 2434 } | |
| 2435 } | |
| 2436 | |
| 2437 /** | 2293 /** |
| 2438 * The class `TokenFactory` defines utility methods that can be used to create t
okens. | 2294 * The class `TokenFactory` defines utility methods that can be used to create t
okens. |
| 2439 */ | 2295 */ |
| 2440 class TokenFactory { | 2296 class TokenFactory { |
| 2441 static Token tokenFromKeyword(Keyword keyword) => new KeywordToken(keyword, 0)
; | 2297 static Token tokenFromKeyword(Keyword keyword) => new KeywordToken(keyword, 0)
; |
| 2442 | 2298 |
| 2443 static Token tokenFromString(String lexeme) => new StringToken(TokenType.STRIN
G, lexeme, 0); | 2299 static Token tokenFromString(String lexeme) => new StringToken(TokenType.STRIN
G, lexeme, 0); |
| 2444 | 2300 |
| 2445 static Token tokenFromType(TokenType type) => new Token(type, 0); | 2301 static Token tokenFromType(TokenType type) => new Token(type, 0); |
| 2446 | 2302 |
| 2447 static Token tokenFromTypeAndString(TokenType type, String lexeme) => new Stri
ngToken(type, lexeme, 0); | 2303 static Token tokenFromTypeAndString(TokenType type, String lexeme) => new Stri
ngToken(type, lexeme, 0); |
| 2448 } | 2304 } |
| 2449 | 2305 |
| 2306 /** |
| 2307 * Instances of the class `TokenStreamValidator` are used to validate the correc
t construction |
| 2308 * of a stream of tokens. |
| 2309 */ |
| 2310 class TokenStreamValidator { |
| 2311 /** |
| 2312 * Validate that the stream of tokens that starts with the given token is corr
ect. |
| 2313 * |
| 2314 * @param token the first token in the stream of tokens to be validated |
| 2315 */ |
| 2316 void validate(Token token) { |
| 2317 JavaStringBuilder builder = new JavaStringBuilder(); |
| 2318 _validateStream(builder, token); |
| 2319 if (builder.length > 0) { |
| 2320 JUnitTestCase.fail(builder.toString()); |
| 2321 } |
| 2322 } |
| 2323 |
| 2324 void _validateStream(JavaStringBuilder builder, Token token) { |
| 2325 if (token == null) { |
| 2326 return; |
| 2327 } |
| 2328 Token previousToken = null; |
| 2329 int previousEnd = -1; |
| 2330 Token currentToken = token; |
| 2331 while (currentToken != null && currentToken.type != TokenType.EOF) { |
| 2332 _validateStream(builder, currentToken.precedingComments); |
| 2333 TokenType type = currentToken.type; |
| 2334 if (type == TokenType.OPEN_CURLY_BRACKET || type == TokenType.OPEN_PAREN |
| type == TokenType.OPEN_SQUARE_BRACKET || type == TokenType.STRING_INTERPOLATIO
N_EXPRESSION) { |
| 2335 if (currentToken is! BeginToken) { |
| 2336 builder.append("\r\nExpected BeginToken, found "); |
| 2337 builder.append(currentToken.runtimeType.toString()); |
| 2338 builder.append(" "); |
| 2339 _writeToken(builder, currentToken); |
| 2340 } |
| 2341 } |
| 2342 int currentStart = currentToken.offset; |
| 2343 int currentLength = currentToken.length; |
| 2344 int currentEnd = currentStart + currentLength - 1; |
| 2345 if (currentStart <= previousEnd) { |
| 2346 builder.append("\r\nInvalid token sequence: "); |
| 2347 _writeToken(builder, previousToken); |
| 2348 builder.append(" followed by "); |
| 2349 _writeToken(builder, currentToken); |
| 2350 } |
| 2351 previousEnd = currentEnd; |
| 2352 previousToken = currentToken; |
| 2353 currentToken = currentToken.next; |
| 2354 } |
| 2355 } |
| 2356 |
| 2357 void _writeToken(JavaStringBuilder builder, Token token) { |
| 2358 builder.append("["); |
| 2359 builder.append(token.type); |
| 2360 builder.append(", '"); |
| 2361 builder.append(token.lexeme); |
| 2362 builder.append("', "); |
| 2363 builder.append(token.offset); |
| 2364 builder.append(", "); |
| 2365 builder.append(token.length); |
| 2366 builder.append("]"); |
| 2367 } |
| 2368 } |
| 2369 |
| 2370 class TokenTypeTest extends EngineTestCase { |
| 2371 void test_isOperator() { |
| 2372 JUnitTestCase.assertTrue(TokenType.AMPERSAND.isOperator); |
| 2373 JUnitTestCase.assertTrue(TokenType.AMPERSAND_AMPERSAND.isOperator); |
| 2374 JUnitTestCase.assertTrue(TokenType.AMPERSAND_EQ.isOperator); |
| 2375 JUnitTestCase.assertTrue(TokenType.BANG.isOperator); |
| 2376 JUnitTestCase.assertTrue(TokenType.BANG_EQ.isOperator); |
| 2377 JUnitTestCase.assertTrue(TokenType.BAR.isOperator); |
| 2378 JUnitTestCase.assertTrue(TokenType.BAR_BAR.isOperator); |
| 2379 JUnitTestCase.assertTrue(TokenType.BAR_EQ.isOperator); |
| 2380 JUnitTestCase.assertTrue(TokenType.CARET.isOperator); |
| 2381 JUnitTestCase.assertTrue(TokenType.CARET_EQ.isOperator); |
| 2382 JUnitTestCase.assertTrue(TokenType.EQ.isOperator); |
| 2383 JUnitTestCase.assertTrue(TokenType.EQ_EQ.isOperator); |
| 2384 JUnitTestCase.assertTrue(TokenType.GT.isOperator); |
| 2385 JUnitTestCase.assertTrue(TokenType.GT_EQ.isOperator); |
| 2386 JUnitTestCase.assertTrue(TokenType.GT_GT.isOperator); |
| 2387 JUnitTestCase.assertTrue(TokenType.GT_GT_EQ.isOperator); |
| 2388 JUnitTestCase.assertTrue(TokenType.INDEX.isOperator); |
| 2389 JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isOperator); |
| 2390 JUnitTestCase.assertTrue(TokenType.IS.isOperator); |
| 2391 JUnitTestCase.assertTrue(TokenType.LT.isOperator); |
| 2392 JUnitTestCase.assertTrue(TokenType.LT_EQ.isOperator); |
| 2393 JUnitTestCase.assertTrue(TokenType.LT_LT.isOperator); |
| 2394 JUnitTestCase.assertTrue(TokenType.LT_LT_EQ.isOperator); |
| 2395 JUnitTestCase.assertTrue(TokenType.MINUS.isOperator); |
| 2396 JUnitTestCase.assertTrue(TokenType.MINUS_EQ.isOperator); |
| 2397 JUnitTestCase.assertTrue(TokenType.MINUS_MINUS.isOperator); |
| 2398 JUnitTestCase.assertTrue(TokenType.PERCENT.isOperator); |
| 2399 JUnitTestCase.assertTrue(TokenType.PERCENT_EQ.isOperator); |
| 2400 JUnitTestCase.assertTrue(TokenType.PERIOD_PERIOD.isOperator); |
| 2401 JUnitTestCase.assertTrue(TokenType.PLUS.isOperator); |
| 2402 JUnitTestCase.assertTrue(TokenType.PLUS_EQ.isOperator); |
| 2403 JUnitTestCase.assertTrue(TokenType.PLUS_PLUS.isOperator); |
| 2404 JUnitTestCase.assertTrue(TokenType.QUESTION.isOperator); |
| 2405 JUnitTestCase.assertTrue(TokenType.SLASH.isOperator); |
| 2406 JUnitTestCase.assertTrue(TokenType.SLASH_EQ.isOperator); |
| 2407 JUnitTestCase.assertTrue(TokenType.STAR.isOperator); |
| 2408 JUnitTestCase.assertTrue(TokenType.STAR_EQ.isOperator); |
| 2409 JUnitTestCase.assertTrue(TokenType.TILDE.isOperator); |
| 2410 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isOperator); |
| 2411 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH_EQ.isOperator); |
| 2412 } |
| 2413 |
| 2414 void test_isUserDefinableOperator() { |
| 2415 JUnitTestCase.assertTrue(TokenType.AMPERSAND.isUserDefinableOperator); |
| 2416 JUnitTestCase.assertTrue(TokenType.BAR.isUserDefinableOperator); |
| 2417 JUnitTestCase.assertTrue(TokenType.CARET.isUserDefinableOperator); |
| 2418 JUnitTestCase.assertTrue(TokenType.EQ_EQ.isUserDefinableOperator); |
| 2419 JUnitTestCase.assertTrue(TokenType.GT.isUserDefinableOperator); |
| 2420 JUnitTestCase.assertTrue(TokenType.GT_EQ.isUserDefinableOperator); |
| 2421 JUnitTestCase.assertTrue(TokenType.GT_GT.isUserDefinableOperator); |
| 2422 JUnitTestCase.assertTrue(TokenType.INDEX.isUserDefinableOperator); |
| 2423 JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isUserDefinableOperator); |
| 2424 JUnitTestCase.assertTrue(TokenType.LT.isUserDefinableOperator); |
| 2425 JUnitTestCase.assertTrue(TokenType.LT_EQ.isUserDefinableOperator); |
| 2426 JUnitTestCase.assertTrue(TokenType.LT_LT.isUserDefinableOperator); |
| 2427 JUnitTestCase.assertTrue(TokenType.MINUS.isUserDefinableOperator); |
| 2428 JUnitTestCase.assertTrue(TokenType.PERCENT.isUserDefinableOperator); |
| 2429 JUnitTestCase.assertTrue(TokenType.PLUS.isUserDefinableOperator); |
| 2430 JUnitTestCase.assertTrue(TokenType.SLASH.isUserDefinableOperator); |
| 2431 JUnitTestCase.assertTrue(TokenType.STAR.isUserDefinableOperator); |
| 2432 JUnitTestCase.assertTrue(TokenType.TILDE.isUserDefinableOperator); |
| 2433 JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isUserDefinableOperator); |
| 2434 } |
| 2435 |
| 2436 static dartSuite() { |
| 2437 _ut.group('TokenTypeTest', () { |
| 2438 _ut.test('test_isOperator', () { |
| 2439 final __test = new TokenTypeTest(); |
| 2440 runJUnitTest(__test, __test.test_isOperator); |
| 2441 }); |
| 2442 _ut.test('test_isUserDefinableOperator', () { |
| 2443 final __test = new TokenTypeTest(); |
| 2444 runJUnitTest(__test, __test.test_isUserDefinableOperator); |
| 2445 }); |
| 2446 }); |
| 2447 } |
| 2448 } |
| 2449 |
| 2450 main() { | 2450 main() { |
| 2451 CharSequenceReaderTest.dartSuite(); | 2451 CharSequenceReaderTest.dartSuite(); |
| 2452 IncrementalScannerTest.dartSuite(); | 2452 IncrementalScannerTest.dartSuite(); |
| 2453 KeywordStateTest.dartSuite(); | 2453 KeywordStateTest.dartSuite(); |
| 2454 ScannerTest.dartSuite(); | 2454 ScannerTest.dartSuite(); |
| 2455 TokenTypeTest.dartSuite(); | 2455 TokenTypeTest.dartSuite(); |
| 2456 } | 2456 } |
| OLD | NEW |