| Index: test/span_scanner_test.dart
|
| diff --git a/test/span_scanner_test.dart b/test/span_scanner_test.dart
|
| index a6249b719e6a52d62655c9307c29522e161618ed..114bff72669c6c8b4878c1c6c8c642cc279b7b57 100644
|
| --- a/test/span_scanner_test.dart
|
| +++ b/test/span_scanner_test.dart
|
| @@ -8,53 +8,63 @@ import 'package:string_scanner/string_scanner.dart';
|
| import 'package:test/test.dart';
|
|
|
| void main() {
|
| - var scanner;
|
| - setUp(() {
|
| - scanner = new SpanScanner('foo\nbar\nbaz', sourceUrl: 'source');
|
| + testForImplementation("lazy", () {
|
| + return new SpanScanner('foo\nbar\nbaz', sourceUrl: 'source');
|
| });
|
|
|
| - test("tracks the span for the last match", () {
|
| - scanner.scan('fo');
|
| - scanner.scan('o\nba');
|
| + testForImplementation("eager", () {
|
| + return new SpanScanner.eager('foo\nbar\nbaz', sourceUrl: 'source');
|
| + });
|
| +}
|
|
|
| - var span = scanner.lastSpan;
|
| - expect(span.start.offset, equals(2));
|
| - expect(span.start.line, equals(0));
|
| - expect(span.start.column, equals(2));
|
| - expect(span.start.sourceUrl, equals(Uri.parse('source')));
|
| +void testForImplementation(String name, SpanScanner create()) {
|
| + group("for a $name scanner", () {
|
| + var scanner;
|
| + setUp(() => scanner = create());
|
|
|
| - expect(span.end.offset, equals(6));
|
| - expect(span.end.line, equals(1));
|
| - expect(span.end.column, equals(2));
|
| - expect(span.start.sourceUrl, equals(Uri.parse('source')));
|
| + test("tracks the span for the last match", () {
|
| + scanner.scan('fo');
|
| + scanner.scan('o\nba');
|
|
|
| - expect(span.text, equals('o\nba'));
|
| - });
|
| + var span = scanner.lastSpan;
|
| + expect(span.start.offset, equals(2));
|
| + expect(span.start.line, equals(0));
|
| + expect(span.start.column, equals(2));
|
| + expect(span.start.sourceUrl, equals(Uri.parse('source')));
|
|
|
| - test(".spanFrom() returns a span from a previous state", () {
|
| - scanner.scan('fo');
|
| - var state = scanner.state;
|
| - scanner.scan('o\nba');
|
| - scanner.scan('r\nba');
|
| + expect(span.end.offset, equals(6));
|
| + expect(span.end.line, equals(1));
|
| + expect(span.end.column, equals(2));
|
| + expect(span.start.sourceUrl, equals(Uri.parse('source')));
|
|
|
| - var span = scanner.spanFrom(state);
|
| - expect(span.text, equals('o\nbar\nba'));
|
| - });
|
| + expect(span.text, equals('o\nba'));
|
| + });
|
| +
|
| + test(".spanFrom() returns a span from a previous state", () {
|
| + scanner.scan('fo');
|
| + var state = scanner.state;
|
| + scanner.scan('o\nba');
|
| + scanner.scan('r\nba');
|
| +
|
| + var span = scanner.spanFrom(state);
|
| + expect(span.text, equals('o\nbar\nba'));
|
| + });
|
|
|
| - test(".emptySpan returns an empty span at the current location", () {
|
| - scanner.scan('foo\nba');
|
| + test(".emptySpan returns an empty span at the current location", () {
|
| + scanner.scan('foo\nba');
|
|
|
| - var span = scanner.emptySpan;
|
| - expect(span.start.offset, equals(6));
|
| - expect(span.start.line, equals(1));
|
| - expect(span.start.column, equals(2));
|
| - expect(span.start.sourceUrl, equals(Uri.parse('source')));
|
| + var span = scanner.emptySpan;
|
| + expect(span.start.offset, equals(6));
|
| + expect(span.start.line, equals(1));
|
| + expect(span.start.column, equals(2));
|
| + expect(span.start.sourceUrl, equals(Uri.parse('source')));
|
|
|
| - expect(span.end.offset, equals(6));
|
| - expect(span.end.line, equals(1));
|
| - expect(span.end.column, equals(2));
|
| - expect(span.start.sourceUrl, equals(Uri.parse('source')));
|
| + expect(span.end.offset, equals(6));
|
| + expect(span.end.line, equals(1));
|
| + expect(span.end.column, equals(2));
|
| + expect(span.start.sourceUrl, equals(Uri.parse('source')));
|
|
|
| - expect(span.text, equals(''));
|
| + expect(span.text, equals(''));
|
| + });
|
| });
|
| }
|
|
|