OLD | NEW |
1 // This code was auto-generated, is not intended to be edited, and is subject to | 1 // This code was auto-generated, is not intended to be edited, and is subject to |
2 // significant change. Please see the README file for more information. | 2 // significant change. Please see the README file for more information. |
3 library engine.scanner_test; | 3 library engine.scanner_test; |
4 import 'dart:collection'; | 4 import 'dart:collection'; |
5 import 'package:analyzer_experimental/src/generated/java_core.dart'; | 5 import 'package:analyzer_experimental/src/generated/java_core.dart'; |
6 import 'package:analyzer_experimental/src/generated/java_engine.dart'; | 6 import 'package:analyzer_experimental/src/generated/java_engine.dart'; |
7 import 'package:analyzer_experimental/src/generated/java_junit.dart'; | 7 import 'package:analyzer_experimental/src/generated/java_junit.dart'; |
8 import 'package:analyzer_experimental/src/generated/source.dart'; | 8 import 'package:analyzer_experimental/src/generated/source.dart'; |
9 import 'package:analyzer_experimental/src/generated/error.dart'; | 9 import 'package:analyzer_experimental/src/generated/error.dart'; |
10 import 'package:analyzer_experimental/src/generated/scanner.dart'; | 10 import 'package:analyzer_experimental/src/generated/scanner.dart'; |
11 import 'package:unittest/unittest.dart' as _ut; | 11 import 'package:unittest/unittest.dart' as _ut; |
12 import 'test_support.dart'; | 12 import 'test_support.dart'; |
13 class KeywordStateTest extends JUnitTestCase { | 13 class KeywordStateTest extends JUnitTestCase { |
14 void test_KeywordState() { | 14 void test_KeywordState() { |
15 List<Keyword> keywords = Keyword.values; | 15 List<Keyword> keywords = Keyword.values; |
16 int keywordCount = keywords.length; | 16 int keywordCount = keywords.length; |
17 List<String> textToTest = new List<String>(keywordCount * 3); | 17 List<String> textToTest = new List<String>(keywordCount * 3); |
18 for (int i = 0; i < keywordCount; i++) { | 18 for (int i = 0; i < keywordCount; i++) { |
19 String syntax2 = keywords[i].syntax; | 19 String syntax = keywords[i].syntax; |
20 textToTest[i] = syntax2; | 20 textToTest[i] = syntax; |
21 textToTest[i + keywordCount] = "${syntax2}x"; | 21 textToTest[i + keywordCount] = "${syntax}x"; |
22 textToTest[i + keywordCount * 2] = syntax2.substring(0, syntax2.length - 1
); | 22 textToTest[i + keywordCount * 2] = syntax.substring(0, syntax.length - 1); |
23 } | 23 } |
24 KeywordState firstState = KeywordState.KEYWORD_STATE; | 24 KeywordState firstState = KeywordState.KEYWORD_STATE; |
25 for (int i = 0; i < textToTest.length; i++) { | 25 for (int i = 0; i < textToTest.length; i++) { |
26 String text = textToTest[i]; | 26 String text = textToTest[i]; |
27 int index = 0; | 27 int index = 0; |
28 int length2 = text.length; | 28 int length = text.length; |
29 KeywordState state = firstState; | 29 KeywordState state = firstState; |
30 while (index < length2 && state != null) { | 30 while (index < length && state != null) { |
31 state = state.next(text.codeUnitAt(index)); | 31 state = state.next(text.codeUnitAt(index)); |
32 index++; | 32 index++; |
33 } | 33 } |
34 if (i < keywordCount) { | 34 if (i < keywordCount) { |
35 JUnitTestCase.assertNotNull(state); | 35 JUnitTestCase.assertNotNull(state); |
36 JUnitTestCase.assertNotNull(state.keyword()); | 36 JUnitTestCase.assertNotNull(state.keyword()); |
37 JUnitTestCase.assertEquals(keywords[i], state.keyword()); | 37 JUnitTestCase.assertEquals(keywords[i], state.keyword()); |
38 } else if (i < keywordCount * 2) { | 38 } else if (i < keywordCount * 2) { |
39 JUnitTestCase.assertNull(state); | 39 JUnitTestCase.assertNull(state); |
40 } else { | 40 } else { |
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
798 }); | 798 }); |
799 } | 799 } |
800 } | 800 } |
801 class StringScannerTest extends AbstractScannerTest { | 801 class StringScannerTest extends AbstractScannerTest { |
802 void test_setSourceStart() { | 802 void test_setSourceStart() { |
803 int offsetDelta = 42; | 803 int offsetDelta = 42; |
804 GatheringErrorListener listener = new GatheringErrorListener(); | 804 GatheringErrorListener listener = new GatheringErrorListener(); |
805 StringScanner scanner = new StringScanner(null, "a", listener); | 805 StringScanner scanner = new StringScanner(null, "a", listener); |
806 scanner.setSourceStart(3, 9, offsetDelta); | 806 scanner.setSourceStart(3, 9, offsetDelta); |
807 scanner.tokenize(); | 807 scanner.tokenize(); |
808 List<int> lineStarts2 = scanner.lineStarts; | 808 List<int> lineStarts = scanner.lineStarts; |
809 JUnitTestCase.assertNotNull(lineStarts2); | 809 JUnitTestCase.assertNotNull(lineStarts); |
810 JUnitTestCase.assertEquals(3, lineStarts2.length); | 810 JUnitTestCase.assertEquals(3, lineStarts.length); |
811 JUnitTestCase.assertEquals(33, lineStarts2[2]); | 811 JUnitTestCase.assertEquals(33, lineStarts[2]); |
812 } | 812 } |
813 Token scan(String source, GatheringErrorListener listener) { | 813 Token scan(String source, GatheringErrorListener listener) { |
814 StringScanner scanner = new StringScanner(null, source, listener); | 814 StringScanner scanner = new StringScanner(null, source, listener); |
815 Token result = scanner.tokenize(); | 815 Token result = scanner.tokenize(); |
816 listener.setLineInfo(new TestSource(), scanner.lineStarts); | 816 listener.setLineInfo(new TestSource(), scanner.lineStarts); |
817 return result; | 817 return result; |
818 } | 818 } |
819 static dartSuite() { | 819 static dartSuite() { |
820 _ut.group('StringScannerTest', () { | 820 _ut.group('StringScannerTest', () { |
821 _ut.test('test_ampersand', () { | 821 _ut.test('test_ampersand', () { |
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1492 } | 1492 } |
1493 void validateStream(JavaStringBuilder builder, Token token) { | 1493 void validateStream(JavaStringBuilder builder, Token token) { |
1494 if (token == null) { | 1494 if (token == null) { |
1495 return; | 1495 return; |
1496 } | 1496 } |
1497 Token previousToken = null; | 1497 Token previousToken = null; |
1498 int previousEnd = -1; | 1498 int previousEnd = -1; |
1499 Token currentToken = token; | 1499 Token currentToken = token; |
1500 while (currentToken != null && currentToken.type != TokenType.EOF) { | 1500 while (currentToken != null && currentToken.type != TokenType.EOF) { |
1501 validateStream(builder, currentToken.precedingComments); | 1501 validateStream(builder, currentToken.precedingComments); |
1502 TokenType type2 = currentToken.type; | 1502 TokenType type = currentToken.type; |
1503 if (identical(type2, TokenType.OPEN_CURLY_BRACKET) || identical(type2, Tok
enType.OPEN_PAREN) || identical(type2, TokenType.OPEN_SQUARE_BRACKET) || identic
al(type2, TokenType.STRING_INTERPOLATION_EXPRESSION)) { | 1503 if (identical(type, TokenType.OPEN_CURLY_BRACKET) || identical(type, Token
Type.OPEN_PAREN) || identical(type, TokenType.OPEN_SQUARE_BRACKET) || identical(
type, TokenType.STRING_INTERPOLATION_EXPRESSION)) { |
1504 if (currentToken is! BeginToken) { | 1504 if (currentToken is! BeginToken) { |
1505 builder.append("\r\nExpected BeginToken, found "); | 1505 builder.append("\r\nExpected BeginToken, found "); |
1506 builder.append(currentToken.runtimeType.toString()); | 1506 builder.append(currentToken.runtimeType.toString()); |
1507 builder.append(" "); | 1507 builder.append(" "); |
1508 writeToken(builder, currentToken); | 1508 writeToken(builder, currentToken); |
1509 } | 1509 } |
1510 } | 1510 } |
1511 int currentStart = currentToken.offset; | 1511 int currentStart = currentToken.offset; |
1512 int currentLength = currentToken.length; | 1512 int currentLength = currentToken.length; |
1513 int currentEnd = currentStart + currentLength - 1; | 1513 int currentEnd = currentStart + currentLength - 1; |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1932 assertToken(TokenType.SLASH_EQ, "/="); | 1932 assertToken(TokenType.SLASH_EQ, "/="); |
1933 } | 1933 } |
1934 void test_star() { | 1934 void test_star() { |
1935 assertToken(TokenType.STAR, "*"); | 1935 assertToken(TokenType.STAR, "*"); |
1936 } | 1936 } |
1937 void test_star_eq() { | 1937 void test_star_eq() { |
1938 assertToken(TokenType.STAR_EQ, "*="); | 1938 assertToken(TokenType.STAR_EQ, "*="); |
1939 } | 1939 } |
1940 void test_startAndEnd() { | 1940 void test_startAndEnd() { |
1941 Token token = scan2("a"); | 1941 Token token = scan2("a"); |
1942 Token previous2 = token.previous; | 1942 Token previous = token.previous; |
1943 JUnitTestCase.assertEquals(token, previous2.next); | 1943 JUnitTestCase.assertEquals(token, previous.next); |
1944 JUnitTestCase.assertEquals(previous2, previous2.previous); | 1944 JUnitTestCase.assertEquals(previous, previous.previous); |
1945 Token next2 = token.next; | 1945 Token next = token.next; |
1946 JUnitTestCase.assertEquals(next2, next2.next); | 1946 JUnitTestCase.assertEquals(next, next.next); |
1947 JUnitTestCase.assertEquals(token, next2.previous); | 1947 JUnitTestCase.assertEquals(token, next.previous); |
1948 } | 1948 } |
1949 void test_string_multi_double() { | 1949 void test_string_multi_double() { |
1950 assertToken(TokenType.STRING, "\"\"\"multi-line\nstring\"\"\""); | 1950 assertToken(TokenType.STRING, "\"\"\"multi-line\nstring\"\"\""); |
1951 } | 1951 } |
1952 void test_string_multi_interpolation_block() { | 1952 void test_string_multi_interpolation_block() { |
1953 assertTokens("\"Hello \${name}!\"", [new StringToken(TokenType.STRING, "\"He
llo ", 0), new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7),
new StringToken(TokenType.IDENTIFIER, "name", 9), new Token(TokenType.CLOSE_CUR
LY_BRACKET, 13), new StringToken(TokenType.STRING, "!\"", 14)]); | 1953 assertTokens("\"Hello \${name}!\"", [new StringToken(TokenType.STRING, "\"He
llo ", 0), new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7),
new StringToken(TokenType.IDENTIFIER, "name", 9), new Token(TokenType.CLOSE_CUR
LY_BRACKET, 13), new StringToken(TokenType.STRING, "!\"", 14)]); |
1954 } | 1954 } |
1955 void test_string_multi_interpolation_identifier() { | 1955 void test_string_multi_interpolation_identifier() { |
1956 assertTokens("\"Hello \$name!\"", [new StringToken(TokenType.STRING, "\"Hell
o ", 0), new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 7), ne
w StringToken(TokenType.IDENTIFIER, "name", 8), new StringToken(TokenType.STRING
, "!\"", 12)]); | 1956 assertTokens("\"Hello \$name!\"", [new StringToken(TokenType.STRING, "\"Hell
o ", 0), new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 7), ne
w StringToken(TokenType.IDENTIFIER, "name", 8), new StringToken(TokenType.STRING
, "!\"", 12)]); |
1957 } | 1957 } |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2061 * as the original source. | 2061 * as the original source. |
2062 * @param source the source to be scanned | 2062 * @param source the source to be scanned |
2063 */ | 2063 */ |
2064 void assertKeywordToken(String source) { | 2064 void assertKeywordToken(String source) { |
2065 Token token = scan2(source); | 2065 Token token = scan2(source); |
2066 JUnitTestCase.assertNotNull(token); | 2066 JUnitTestCase.assertNotNull(token); |
2067 JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type); | 2067 JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type); |
2068 JUnitTestCase.assertEquals(0, token.offset); | 2068 JUnitTestCase.assertEquals(0, token.offset); |
2069 JUnitTestCase.assertEquals(source.length, token.length); | 2069 JUnitTestCase.assertEquals(source.length, token.length); |
2070 JUnitTestCase.assertEquals(source, token.lexeme); | 2070 JUnitTestCase.assertEquals(source, token.lexeme); |
2071 Object value2 = token.value(); | 2071 Object value = token.value(); |
2072 JUnitTestCase.assertTrue(value2 is Keyword); | 2072 JUnitTestCase.assertTrue(value is Keyword); |
2073 JUnitTestCase.assertEquals(source, ((value2 as Keyword)).syntax); | 2073 JUnitTestCase.assertEquals(source, ((value as Keyword)).syntax); |
2074 token = scan2(" ${source} "); | 2074 token = scan2(" ${source} "); |
2075 JUnitTestCase.assertNotNull(token); | 2075 JUnitTestCase.assertNotNull(token); |
2076 JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type); | 2076 JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type); |
2077 JUnitTestCase.assertEquals(1, token.offset); | 2077 JUnitTestCase.assertEquals(1, token.offset); |
2078 JUnitTestCase.assertEquals(source.length, token.length); | 2078 JUnitTestCase.assertEquals(source.length, token.length); |
2079 JUnitTestCase.assertEquals(source, token.lexeme); | 2079 JUnitTestCase.assertEquals(source, token.lexeme); |
2080 value2 = token.value(); | 2080 value = token.value(); |
2081 JUnitTestCase.assertTrue(value2 is Keyword); | 2081 JUnitTestCase.assertTrue(value is Keyword); |
2082 JUnitTestCase.assertEquals(source, ((value2 as Keyword)).syntax); | 2082 JUnitTestCase.assertEquals(source, ((value as Keyword)).syntax); |
2083 JUnitTestCase.assertEquals(TokenType.EOF, token.next.type); | 2083 JUnitTestCase.assertEquals(TokenType.EOF, token.next.type); |
2084 } | 2084 } |
2085 void assertLineInfo(String source, List<AbstractScannerTest_ExpectedLocation>
expectedLocations) { | 2085 void assertLineInfo(String source, List<AbstractScannerTest_ExpectedLocation>
expectedLocations) { |
2086 GatheringErrorListener listener = new GatheringErrorListener(); | 2086 GatheringErrorListener listener = new GatheringErrorListener(); |
2087 scan(source, listener); | 2087 scan(source, listener); |
2088 listener.assertNoErrors(); | 2088 listener.assertNoErrors(); |
2089 LineInfo info = listener.getLineInfo(new TestSource()); | 2089 LineInfo info = listener.getLineInfo(new TestSource()); |
2090 JUnitTestCase.assertNotNull(info); | 2090 JUnitTestCase.assertNotNull(info); |
2091 for (AbstractScannerTest_ExpectedLocation expectedLocation in expectedLocati
ons) { | 2091 for (AbstractScannerTest_ExpectedLocation expectedLocation in expectedLocati
ons) { |
2092 LineInfo_Location location = info.getLocation(expectedLocation._offset); | 2092 LineInfo_Location location = info.getLocation(expectedLocation._offset); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2168 this._lineNumber = lineNumber; | 2168 this._lineNumber = lineNumber; |
2169 this._columnNumber = columnNumber; | 2169 this._columnNumber = columnNumber; |
2170 } | 2170 } |
2171 } | 2171 } |
2172 main() { | 2172 main() { |
2173 CharBufferScannerTest.dartSuite(); | 2173 CharBufferScannerTest.dartSuite(); |
2174 KeywordStateTest.dartSuite(); | 2174 KeywordStateTest.dartSuite(); |
2175 StringScannerTest.dartSuite(); | 2175 StringScannerTest.dartSuite(); |
2176 TokenTypeTest.dartSuite(); | 2176 TokenTypeTest.dartSuite(); |
2177 } | 2177 } |
OLD | NEW |