@@ -9,12 +9,13 @@ import 'package:test/test.dart';
99import 'utils.dart' ;
1010
1111void main () {
12- testForImplementation ("lazy" , () {
13- return new SpanScanner ('foo\n bar\n baz' , sourceUrl: 'source' );
12+ testForImplementation ("lazy" , ([string] ) {
13+ return new SpanScanner (string ?? 'foo\n bar\n baz' , sourceUrl: 'source' );
1414 });
1515
16- testForImplementation ("eager" , () {
17- return new SpanScanner .eager ('foo\n bar\n baz' , sourceUrl: 'source' );
16+ testForImplementation ("eager" , ([string]) {
17+ return new SpanScanner .eager (string ?? 'foo\n bar\n baz' ,
18+ sourceUrl: 'source' );
1819 });
1920
2021 group ("within" , () {
@@ -23,7 +24,7 @@ void main() {
2324
2425 var scanner;
2526 setUp (() {
26- var file = new SourceFile (text, url: 'source' );
27+ var file = new SourceFile . fromString (text, url: 'source' );
2728 scanner = new SpanScanner .within (
2829 file.span (startOffset, text.indexOf (' :after' )));
2930 });
@@ -136,6 +137,15 @@ void testForImplementation(String name, SpanScanner create()) {
136137 expect (span.text, equals ('o\n bar\n ba' ));
137138 });
138139
140+ test (".spanFrom() handles surrogate pairs correctly" , () {
141+ scanner = create ('fo\u {12345}o' );
142+ scanner.scan ('fo' );
143+ var state = scanner.state;
144+ scanner.scan ('\u {12345}o' );
145+ var span = scanner.spanFrom (state);
146+ expect (span.text, equals ('\u {12345}o' ));
147+ });
148+
139149 test (".emptySpan returns an empty span at the current location" , () {
140150 scanner.scan ('foo\n ba' );
141151
0 commit comments