Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Unified Diff: dart/pkg/analyzer/test/generated/scanner_test.dart

Issue 56933002: Version 0.8.10.1 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dart/pkg/analyzer/test/generated/scanner_test.dart
===================================================================
--- dart/pkg/analyzer/test/generated/scanner_test.dart (revision 29785)
+++ dart/pkg/analyzer/test/generated/scanner_test.dart (working copy)
@@ -6,6 +6,7 @@
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/error.dart';
import 'package:analyzer/src/generated/scanner.dart';
+import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap;
import 'package:unittest/unittest.dart' as _ut;
import 'test_support.dart';
class KeywordStateTest extends JUnitTestCase {
@@ -727,7 +728,7 @@
assertToken(TokenType.STRING, "'''string'''");
}
void test_string_multi_slashEnter() {
- assertError(ScannerErrorCode.CHARACTER_EXPECTED_AFTER_SLASH, 0, "'''\\\n'''");
+ assertToken(TokenType.STRING, "'''\\\n'''");
}
void test_string_multi_unterminated() {
assertError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "'''string");
@@ -1667,17 +1668,123 @@
this._columnNumber = columnNumber;
}
}
-class IncrementalScannerTest extends JUnitTestCase {
- void test_rescan_addedToIdentifier() {
- assertTokens("a + b;", "abs + b;");
+class IncrementalScannerTest extends EngineTestCase {
+ Token _originalTokens;
+ void test_rescan_addedBeforeIdentifier1() {
+ IncrementalScanner scanner = assertTokens("a + b;", "xa + b;");
+ JUnitTestCase.assertEquals("xa", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals("xa", scanner.lastToken.lexeme);
}
+ void test_rescan_addedBeforeIdentifier2() {
+ IncrementalScanner scanner = assertTokens("a + b;", "a + xb;");
+ JUnitTestCase.assertEquals("xb", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals("xb", scanner.lastToken.lexeme);
+ }
+ void test_rescan_addedNewIdentifier1() {
+ IncrementalScanner scanner = assertTokens("a; c;", "a; b c;");
+ JUnitTestCase.assertEquals("b", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals("b", scanner.lastToken.lexeme);
+ }
+ void test_rescan_addedNewIdentifier2() {
+ IncrementalScanner scanner = assertTokens("a; c;", "a;b c;");
+ JUnitTestCase.assertEquals("b", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals("b", scanner.lastToken.lexeme);
+ Token oldToken = _originalTokens.next;
+ JUnitTestCase.assertSame(TokenType.SEMICOLON, oldToken.type);
+ Token newToken = scanner.tokenMap.get(oldToken);
+ JUnitTestCase.assertNotNull(newToken);
+ JUnitTestCase.assertEquals(TokenType.SEMICOLON, newToken.type);
+ JUnitTestCase.assertNotSame(oldToken, newToken);
+ }
+ void test_rescan_addedToIdentifier1() {
+ IncrementalScanner scanner = assertTokens("a + b;", "abs + b;");
+ JUnitTestCase.assertEquals("abs", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals("abs", scanner.lastToken.lexeme);
+ Token oldToken = _originalTokens.next;
+ JUnitTestCase.assertEquals(TokenType.PLUS, oldToken.type);
+ Token newToken = scanner.tokenMap.get(oldToken);
+ JUnitTestCase.assertNotNull(newToken);
+ JUnitTestCase.assertEquals(TokenType.PLUS, newToken.type);
+ JUnitTestCase.assertNotSame(oldToken, newToken);
+ }
+ void test_rescan_addedToIdentifier2() {
+ IncrementalScanner scanner = assertTokens("a + b;", "a + by;");
+ JUnitTestCase.assertEquals("by", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals("by", scanner.lastToken.lexeme);
+ }
+ void test_rescan_appendWhitespace1() {
+ IncrementalScanner scanner = assertTokens("a + b;", "a + b; ");
+ JUnitTestCase.assertNull(scanner.firstToken);
+ JUnitTestCase.assertNull(scanner.lastToken);
+ }
+ void test_rescan_appendWhitespace2() {
+ IncrementalScanner scanner = assertTokens("a + b; ", "a + b; ");
+ JUnitTestCase.assertNull(scanner.firstToken);
+ JUnitTestCase.assertNull(scanner.lastToken);
+ }
void test_rescan_insertedPeriod() {
- assertTokens("a + b;", "a + b.;");
+ IncrementalScanner scanner = assertTokens("a + b;", "a + b.;");
+ JUnitTestCase.assertEquals(".", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals(".", scanner.lastToken.lexeme);
}
+ void test_rescan_insertedPeriodBetweenIdentifiers1() {
+ IncrementalScanner scanner = assertTokens("a b;", "a. b;");
+ JUnitTestCase.assertEquals(".", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals(".", scanner.lastToken.lexeme);
+ }
+ void test_rescan_insertedPeriodBetweenIdentifiers2() {
+ IncrementalScanner scanner = assertTokens("a b;", "a .b;");
+ JUnitTestCase.assertEquals(".", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals(".", scanner.lastToken.lexeme);
+ }
+ void test_rescan_insertedPeriodBetweenIdentifiers3() {
+ IncrementalScanner scanner = assertTokens("a b;", "a . b;");
+ JUnitTestCase.assertEquals(".", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals(".", scanner.lastToken.lexeme);
+ }
+ void test_rescan_insertedPeriodIdentifier() {
+ IncrementalScanner scanner = assertTokens("a + b;", "a + b.x;");
+ JUnitTestCase.assertEquals(".", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals("x", scanner.lastToken.lexeme);
+ }
+ void test_rescan_insertedPeriodInsideExistingIdentifier() {
+ IncrementalScanner scanner = assertTokens("ab;", "a.b;");
+ JUnitTestCase.assertEquals("a", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals("b", scanner.lastToken.lexeme);
+ }
+ void test_rescan_insertLeadingWhitespace() {
+ IncrementalScanner scanner = assertTokens("a + b;", " a + b;");
+ JUnitTestCase.assertNull(scanner.firstToken);
+ JUnitTestCase.assertNull(scanner.lastToken);
+ }
+ void test_rescan_insertWhitespace() {
+ IncrementalScanner scanner = assertTokens("a + b;", "a + b;");
+ JUnitTestCase.assertNull(scanner.firstToken);
+ JUnitTestCase.assertNull(scanner.lastToken);
+ }
+ void test_rescan_insertWhitespaceWithMultipleComments() {
+ IncrementalScanner scanner = assertTokens(EngineTestCase.createSource(["//comment", "//comment2", "a + b;"]), EngineTestCase.createSource(["//comment", "//comment2", "a + b;"]));
+ JUnitTestCase.assertNull(scanner.firstToken);
+ JUnitTestCase.assertNull(scanner.lastToken);
+ }
void test_rescan_oneFunctionToTwo() {
- assertTokens("f() {}", "f() => 0; g() {}");
+ IncrementalScanner scanner = assertTokens("f() {}", "f() => 0; g() {}");
+ JUnitTestCase.assertEquals("=>", scanner.firstToken.lexeme);
+ JUnitTestCase.assertEquals(")", scanner.lastToken.lexeme);
}
- void assertTokens(String originalContents, String modifiedContents) {
+ void test_tokenMap() {
+ IncrementalScanner scanner = assertTokens("main() {a + b;}", "main() { a + b;}");
+ TokenMap tokenMap = scanner.tokenMap;
+ Token oldToken = _originalTokens;
+ while (oldToken.type != TokenType.EOF) {
+ Token newToken = tokenMap.get(oldToken);
+ JUnitTestCase.assertNotSame(oldToken, newToken);
+ JUnitTestCase.assertSame(oldToken.type, newToken.type);
+ JUnitTestCase.assertEquals(oldToken.lexeme, newToken.lexeme);
+ oldToken = oldToken.next;
+ }
+ }
+ IncrementalScanner assertTokens(String originalContents, String modifiedContents) {
int originalLength = originalContents.length;
int modifiedLength = modifiedContents.length;
int replaceStart = 0;
@@ -1693,41 +1800,107 @@
Source source = new TestSource();
GatheringErrorListener originalListener = new GatheringErrorListener();
Scanner originalScanner = new Scanner(source, new CharSequenceReader(new CharSequence(originalContents)), originalListener);
- Token originalToken = originalScanner.tokenize();
- JUnitTestCase.assertNotNull(originalToken);
+ _originalTokens = originalScanner.tokenize();
+ JUnitTestCase.assertNotNull(_originalTokens);
GatheringErrorListener modifiedListener = new GatheringErrorListener();
Scanner modifiedScanner = new Scanner(source, new CharSequenceReader(new CharSequence(modifiedContents)), modifiedListener);
- Token modifiedToken = modifiedScanner.tokenize();
- JUnitTestCase.assertNotNull(modifiedToken);
+ Token modifiedTokens = modifiedScanner.tokenize();
+ JUnitTestCase.assertNotNull(modifiedTokens);
GatheringErrorListener incrementalListener = new GatheringErrorListener();
IncrementalScanner incrementalScanner = new IncrementalScanner(source, new CharSequenceReader(new CharSequence(modifiedContents)), incrementalListener);
- Token incrementalToken = incrementalScanner.rescan(originalToken, replaceStart, originalEnd - replaceStart + 1, modifiedEnd - replaceStart + 1);
+ Token incrementalTokens = incrementalScanner.rescan(_originalTokens, replaceStart, originalEnd - replaceStart + 1, modifiedEnd - replaceStart + 1);
+ Token incrementalToken = incrementalTokens;
JUnitTestCase.assertNotNull(incrementalToken);
- while (incrementalToken.type != TokenType.EOF && modifiedToken.type != TokenType.EOF) {
- JUnitTestCase.assertSameMsg("Wrong type for token", modifiedToken.type, incrementalToken.type);
- JUnitTestCase.assertEqualsMsg("Wrong offset for token", modifiedToken.offset, incrementalToken.offset);
- JUnitTestCase.assertEqualsMsg("Wrong length for token", modifiedToken.length, incrementalToken.length);
- JUnitTestCase.assertEqualsMsg("Wrong lexeme for token", modifiedToken.lexeme, incrementalToken.lexeme);
+ while (incrementalToken.type != TokenType.EOF && modifiedTokens.type != TokenType.EOF) {
+ JUnitTestCase.assertSameMsg("Wrong type for token", modifiedTokens.type, incrementalToken.type);
+ JUnitTestCase.assertEqualsMsg("Wrong offset for token", modifiedTokens.offset, incrementalToken.offset);
+ JUnitTestCase.assertEqualsMsg("Wrong length for token", modifiedTokens.length, incrementalToken.length);
+ JUnitTestCase.assertEqualsMsg("Wrong lexeme for token", modifiedTokens.lexeme, incrementalToken.lexeme);
incrementalToken = incrementalToken.next;
- modifiedToken = modifiedToken.next;
+ modifiedTokens = modifiedTokens.next;
}
JUnitTestCase.assertSameMsg("Too many tokens", TokenType.EOF, incrementalToken.type);
- JUnitTestCase.assertSameMsg("Not enough tokens", TokenType.EOF, modifiedToken.type);
+ JUnitTestCase.assertSameMsg("Not enough tokens", TokenType.EOF, modifiedTokens.type);
+ return incrementalScanner;
}
static dartSuite() {
_ut.group('IncrementalScannerTest', () {
- _ut.test('test_rescan_addedToIdentifier', () {
+ _ut.test('test_rescan_addedBeforeIdentifier1', () {
final __test = new IncrementalScannerTest();
- runJUnitTest(__test, __test.test_rescan_addedToIdentifier);
+ runJUnitTest(__test, __test.test_rescan_addedBeforeIdentifier1);
});
+ _ut.test('test_rescan_addedBeforeIdentifier2', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_addedBeforeIdentifier2);
+ });
+ _ut.test('test_rescan_addedNewIdentifier1', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_addedNewIdentifier1);
+ });
+ _ut.test('test_rescan_addedNewIdentifier2', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_addedNewIdentifier2);
+ });
+ _ut.test('test_rescan_addedToIdentifier1', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_addedToIdentifier1);
+ });
+ _ut.test('test_rescan_addedToIdentifier2', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_addedToIdentifier2);
+ });
+ _ut.test('test_rescan_appendWhitespace1', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_appendWhitespace1);
+ });
+ _ut.test('test_rescan_appendWhitespace2', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_appendWhitespace2);
+ });
+ _ut.test('test_rescan_insertLeadingWhitespace', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_insertLeadingWhitespace);
+ });
+ _ut.test('test_rescan_insertWhitespace', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_insertWhitespace);
+ });
+ _ut.test('test_rescan_insertWhitespaceWithMultipleComments', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_insertWhitespaceWithMultipleComments);
+ });
_ut.test('test_rescan_insertedPeriod', () {
final __test = new IncrementalScannerTest();
runJUnitTest(__test, __test.test_rescan_insertedPeriod);
});
+ _ut.test('test_rescan_insertedPeriodBetweenIdentifiers1', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_insertedPeriodBetweenIdentifiers1);
+ });
+ _ut.test('test_rescan_insertedPeriodBetweenIdentifiers2', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_insertedPeriodBetweenIdentifiers2);
+ });
+ _ut.test('test_rescan_insertedPeriodBetweenIdentifiers3', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_insertedPeriodBetweenIdentifiers3);
+ });
+ _ut.test('test_rescan_insertedPeriodIdentifier', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_insertedPeriodIdentifier);
+ });
+ _ut.test('test_rescan_insertedPeriodInsideExistingIdentifier', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_rescan_insertedPeriodInsideExistingIdentifier);
+ });
_ut.test('test_rescan_oneFunctionToTwo', () {
final __test = new IncrementalScannerTest();
runJUnitTest(__test, __test.test_rescan_oneFunctionToTwo);
});
+ _ut.test('test_tokenMap', () {
+ final __test = new IncrementalScannerTest();
+ runJUnitTest(__test, __test.test_tokenMap);
+ });
});
}
}
« no previous file with comments | « dart/pkg/analyzer/test/generated/resolver_test.dart ('k') | dart/pkg/analyzer/test/generated/test_support.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698