Chromium Code Reviews| Index: tests/compiler/dart2js/scanner_offset_length_test.dart |
| diff --git a/tests/compiler/dart2js/scanner_offset_length_test.dart b/tests/compiler/dart2js/scanner_offset_length_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..11478534cf7ff06b40bdb365f60a14addfaf566b |
| --- /dev/null |
| +++ b/tests/compiler/dart2js/scanner_offset_length_test.dart |
| @@ -0,0 +1,47 @@ |
| +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +#import('../../../lib/compiler/implementation/scanner/scannerlib.dart'); |
| +#import('../../../lib/compiler/implementation/scanner/scanner_implementation.dart'); |
| + |
| +Token scan(String text) => new StringScanner(text, true).tokenize(); |
| + |
| +check(String text) { |
| + Token token = scan(text); |
| + while (token.kind != EOF_TOKEN) { |
| + Expect.equals(token.text.length, token.charLength); |
| + |
| + var start = token.charOffset; |
| + var end = token.charOffset+token.charLength; |
| + |
| + Expect.isTrue(start < text.length, |
| + 'start=$start < text.length=${text.length}: $text'); |
| + |
| + Expect.isTrue(end <= text.length, |
| + 'end=$end <= text.length=${text.length}: $text'); |
| + |
| + Expect.isTrue(start <= end, 'start=$end <= end=$end: $text'); |
| + |
| + var substring = text.substring(start, end); |
| + |
| + Expect.stringEquals(token.text, substring, |
| + 'token.text=${token.text} == ' |
| + 'text.substring(start,end)=${substring}: $text'); |
| + |
| + print('$text: [$start,$end]:$token'); |
| + |
| + token = token.next; |
| + } |
| +} |
| + |
| +main() { |
| + check('foo'); // identifier |
|
ahe
2012/06/25 08:12:37
Comments aren't proper sentences.
|
| + check('\'\''); // empty string |
| + check('\'foo\''); // simple string |
| + check('\'\$foo\''); // interpolation, identifier |
| + check('\'\${foo}\''); // interpolation, expression |
| + |
| + check('//'); // single line comment |
| + check('/**/'); // multi line comment |
| +} |