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

Side by Side Diff: tests/compiler/dart2js/scanner_offset_length_test.dart

Issue 27510003: Scanner for UTF-8 byte arrays (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fixes compiler tests Created 7 years, 2 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 import "package:expect/expect.dart"; 5 import "package:expect/expect.dart";
6 import '../../../sdk/lib/_internal/compiler/implementation/scanner/scannerlib.da rt'; 6 import '../../../sdk/lib/_internal/compiler/implementation/scanner/scannerlib.da rt';
7 import '../../../sdk/lib/_internal/compiler/implementation/scanner/scanner_imple mentation.dart';
8 7
9 Token scan(String text) => 8 Token scan(String text) =>
10 new StringScanner(text, includeComments: true).tokenize(); 9 new StringScanner.fromString(text, includeComments: true).tokenize();
11 10
12 check(String text) { 11 check(String text) {
13 Token token = scan(text); 12 Token token = scan(text);
14 while (token.kind != EOF_TOKEN) { 13 while (token.kind != EOF_TOKEN) {
15 Expect.equals(token.slowToString().length, token.slowCharCount); 14 Expect.equals(token.value.length, token.charCount);
16 15
17 var start = token.charOffset; 16 var start = token.charOffset;
18 var end = token.charOffset + token.slowCharCount; 17 var end = token.charOffset + token.charCount;
19 18
20 Expect.isTrue(start < text.length, 19 Expect.isTrue(start < text.length,
21 'start=$start < text.length=${text.length}: $text'); 20 'start=$start < text.length=${text.length}: $text');
22 21
23 Expect.isTrue(end <= text.length, 22 Expect.isTrue(end <= text.length,
24 'end=$end <= text.length=${text.length}: $text'); 23 'end=$end <= text.length=${text.length}: $text');
25 24
26 Expect.isTrue(start <= end, 'start=$end <= end=$end: $text'); 25 Expect.isTrue(start <= end, 'start=$end <= end=$end: $text');
27 26
28 var substring = text.substring(start, end); 27 var substring = text.substring(start, end);
29 28
30 Expect.stringEquals(token.slowToString(), substring, 29 Expect.stringEquals(token.value, substring,
31 'token.slowToString()=${token.slowToString()} == ' 30 'token.value=${token.value} == '
32 'text.substring(start,end)=${substring}: $text'); 31 'text.substring(start,end)=${substring}: $text');
33 32
34 print('$text: [$start,$end]:$token'); 33 print('$text: [$start,$end]:$token');
35 34
36 token = token.next; 35 token = token.next;
37 } 36 }
38 } 37 }
39 38
40 main() { 39 main() {
41 check('foo'); // identifier 40 check('foo'); // identifier
42 check('\'\''); // empty string 41 check('\'\''); // empty string
43 check('\'foo\''); // simple string 42 check('\'foo\''); // simple string
44 check('\'\$foo\''); // interpolation, identifier 43 check('\'\$foo\''); // interpolation, identifier
45 check('\'\${foo}\''); // interpolation, expression 44 check('\'\${foo}\''); // interpolation, expression
46 45
47 check('//'); // single line comment 46 check('//'); // single line comment
48 check('/**/'); // multi line comment 47 check('/**/'); // multi line comment
49 } 48 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698