| Index: frog/tests/leg/scanner_offset_length_test.dart
|
| diff --git a/frog/tests/leg/scanner_offset_length_test.dart b/frog/tests/leg/scanner_offset_length_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..11478534cf7ff06b40bdb365f60a14addfaf566b
|
| --- /dev/null
|
| +++ b/frog/tests/leg/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
|
| + check('\'\''); // empty string
|
| + check('\'foo\''); // simple string
|
| + check('\'\$foo\''); // interpolation, identifier
|
| + check('\'\${foo}\''); // interpolation, expression
|
| +
|
| + check('//'); // single line comment
|
| + check('/**/'); // multi line comment
|
| +}
|
|
|