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 library engine.scanner_test; | 5 library engine.scanner_test; |
6 | 6 |
7 import 'package:analyzer/src/generated/error.dart'; | 7 import 'package:analyzer/src/generated/error.dart'; |
8 import 'package:analyzer/src/generated/scanner.dart'; | 8 import 'package:analyzer/src/generated/scanner.dart'; |
9 import 'package:analyzer/src/generated/source.dart'; | 9 import 'package:analyzer/src/generated/source.dart'; |
10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
11 | 11 |
12 import '../reflective_tests.dart'; | 12 import '../reflective_tests.dart'; |
13 import 'test_support.dart'; | 13 import 'test_support.dart'; |
14 | 14 |
15 main() { | 15 main() { |
16 groupSep = ' | '; | 16 groupSep = ' | '; |
17 runReflectiveTests(CharSequenceReaderTest); | 17 runReflectiveTests(CharSequenceReaderTest); |
18 runReflectiveTests(KeywordStateTest); | 18 runReflectiveTests(KeywordStateTest); |
19 runReflectiveTests(ScannerTest); | 19 runReflectiveTests(ScannerTest); |
20 runReflectiveTests(TokenTypeTest); | 20 runReflectiveTests(TokenTypeTest); |
21 } | 21 } |
22 | 22 |
23 @ReflectiveTestCase() | 23 @reflectiveTest |
24 class CharSequenceReaderTest { | 24 class CharSequenceReaderTest { |
25 void test_advance() { | 25 void test_advance() { |
26 CharSequenceReader reader = new CharSequenceReader("x"); | 26 CharSequenceReader reader = new CharSequenceReader("x"); |
27 expect(reader.advance(), 0x78); | 27 expect(reader.advance(), 0x78); |
28 expect(reader.advance(), -1); | 28 expect(reader.advance(), -1); |
29 expect(reader.advance(), -1); | 29 expect(reader.advance(), -1); |
30 } | 30 } |
31 | 31 |
32 void test_creation() { | 32 void test_creation() { |
33 expect(new CharSequenceReader("x"), isNotNull); | 33 expect(new CharSequenceReader("x"), isNotNull); |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 } | 117 } |
118 | 118 |
119 void test_setOffset() { | 119 void test_setOffset() { |
120 CharSequenceReader baseReader = new CharSequenceReader("xyzzy"); | 120 CharSequenceReader baseReader = new CharSequenceReader("xyzzy"); |
121 CharacterRangeReader reader = new CharacterRangeReader(baseReader, 1, 4); | 121 CharacterRangeReader reader = new CharacterRangeReader(baseReader, 1, 4); |
122 reader.offset = 2; | 122 reader.offset = 2; |
123 expect(reader.offset, 2); | 123 expect(reader.offset, 2); |
124 } | 124 } |
125 } | 125 } |
126 | 126 |
127 @ReflectiveTestCase() | 127 @reflectiveTest |
128 class KeywordStateTest { | 128 class KeywordStateTest { |
129 void test_KeywordState() { | 129 void test_KeywordState() { |
130 // | 130 // |
131 // Generate the test data to be scanned. | 131 // Generate the test data to be scanned. |
132 // | 132 // |
133 List<Keyword> keywords = Keyword.values; | 133 List<Keyword> keywords = Keyword.values; |
134 int keywordCount = keywords.length; | 134 int keywordCount = keywords.length; |
135 List<String> textToTest = new List<String>(keywordCount * 3); | 135 List<String> textToTest = new List<String>(keywordCount * 3); |
136 for (int i = 0; i < keywordCount; i++) { | 136 for (int i = 0; i < keywordCount; i++) { |
137 String syntax = keywords[i].syntax; | 137 String syntax = keywords[i].syntax; |
(...skipping 23 matching lines...) Expand all Loading... |
161 // keyword + "x" | 161 // keyword + "x" |
162 expect(state, isNull); | 162 expect(state, isNull); |
163 } else { | 163 } else { |
164 // keyword.substring(0, keyword.length() - 1) | 164 // keyword.substring(0, keyword.length() - 1) |
165 expect(state, isNotNull); | 165 expect(state, isNotNull); |
166 } | 166 } |
167 } | 167 } |
168 } | 168 } |
169 } | 169 } |
170 | 170 |
171 @ReflectiveTestCase() | 171 @reflectiveTest |
172 class ScannerTest { | 172 class ScannerTest { |
173 void fail_incomplete_string_interpolation() { | 173 void fail_incomplete_string_interpolation() { |
174 // https://code.google.com/p/dart/issues/detail?id=18073 | 174 // https://code.google.com/p/dart/issues/detail?id=18073 |
175 _assertErrorAndTokens( | 175 _assertErrorAndTokens( |
176 ScannerErrorCode.UNTERMINATED_STRING_LITERAL, | 176 ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
177 9, | 177 9, |
178 "\"foo \${bar", | 178 "\"foo \${bar", |
179 [ | 179 [ |
180 new StringToken(TokenType.STRING, "\"foo ", 0), | 180 new StringToken(TokenType.STRING, "\"foo ", 0), |
181 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 5)
, | 181 new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 5)
, |
(...skipping 1152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1334 buffer.write(", '"); | 1334 buffer.write(", '"); |
1335 buffer.write(token.lexeme); | 1335 buffer.write(token.lexeme); |
1336 buffer.write("', "); | 1336 buffer.write("', "); |
1337 buffer.write(token.offset); | 1337 buffer.write(token.offset); |
1338 buffer.write(", "); | 1338 buffer.write(", "); |
1339 buffer.write(token.length); | 1339 buffer.write(token.length); |
1340 buffer.write("]"); | 1340 buffer.write("]"); |
1341 } | 1341 } |
1342 } | 1342 } |
1343 | 1343 |
1344 @ReflectiveTestCase() | 1344 @reflectiveTest |
1345 class TokenTypeTest extends EngineTestCase { | 1345 class TokenTypeTest extends EngineTestCase { |
1346 void test_isOperator() { | 1346 void test_isOperator() { |
1347 expect(TokenType.AMPERSAND.isOperator, isTrue); | 1347 expect(TokenType.AMPERSAND.isOperator, isTrue); |
1348 expect(TokenType.AMPERSAND_AMPERSAND.isOperator, isTrue); | 1348 expect(TokenType.AMPERSAND_AMPERSAND.isOperator, isTrue); |
1349 expect(TokenType.AMPERSAND_EQ.isOperator, isTrue); | 1349 expect(TokenType.AMPERSAND_EQ.isOperator, isTrue); |
1350 expect(TokenType.BANG.isOperator, isTrue); | 1350 expect(TokenType.BANG.isOperator, isTrue); |
1351 expect(TokenType.BANG_EQ.isOperator, isTrue); | 1351 expect(TokenType.BANG_EQ.isOperator, isTrue); |
1352 expect(TokenType.BAR.isOperator, isTrue); | 1352 expect(TokenType.BAR.isOperator, isTrue); |
1353 expect(TokenType.BAR_BAR.isOperator, isTrue); | 1353 expect(TokenType.BAR_BAR.isOperator, isTrue); |
1354 expect(TokenType.BAR_EQ.isOperator, isTrue); | 1354 expect(TokenType.BAR_EQ.isOperator, isTrue); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1401 expect(TokenType.LT_LT.isUserDefinableOperator, isTrue); | 1401 expect(TokenType.LT_LT.isUserDefinableOperator, isTrue); |
1402 expect(TokenType.MINUS.isUserDefinableOperator, isTrue); | 1402 expect(TokenType.MINUS.isUserDefinableOperator, isTrue); |
1403 expect(TokenType.PERCENT.isUserDefinableOperator, isTrue); | 1403 expect(TokenType.PERCENT.isUserDefinableOperator, isTrue); |
1404 expect(TokenType.PLUS.isUserDefinableOperator, isTrue); | 1404 expect(TokenType.PLUS.isUserDefinableOperator, isTrue); |
1405 expect(TokenType.SLASH.isUserDefinableOperator, isTrue); | 1405 expect(TokenType.SLASH.isUserDefinableOperator, isTrue); |
1406 expect(TokenType.STAR.isUserDefinableOperator, isTrue); | 1406 expect(TokenType.STAR.isUserDefinableOperator, isTrue); |
1407 expect(TokenType.TILDE.isUserDefinableOperator, isTrue); | 1407 expect(TokenType.TILDE.isUserDefinableOperator, isTrue); |
1408 expect(TokenType.TILDE_SLASH.isUserDefinableOperator, isTrue); | 1408 expect(TokenType.TILDE_SLASH.isUserDefinableOperator, isTrue); |
1409 } | 1409 } |
1410 } | 1410 } |
OLD | NEW |