Index: test/line_scanner_test.dart |
diff --git a/test/line_scanner_test.dart b/test/line_scanner_test.dart |
index 83222d6cea8f04e72941159be6326bcc2ac6b82f..68e5c38143b35e5ec265b55edc390dba6bf1603b 100644 |
--- a/test/line_scanner_test.dart |
+++ b/test/line_scanner_test.dart |
@@ -10,7 +10,7 @@ import 'package:test/test.dart'; |
void main() { |
var scanner; |
setUp(() { |
- scanner = new LineScanner('foo\nbar\nbaz'); |
+ scanner = new LineScanner('foo\nbar\r\nbaz'); |
}); |
test('begins with line and column 0', () { |
@@ -33,7 +33,17 @@ void main() { |
test("consuming multiple newlines resets the column and increases the line", |
() { |
- scanner.expect('foo\nbar\nb'); |
+ scanner.expect('foo\nbar\r\nb'); |
+ expect(scanner.line, equals(2)); |
+ expect(scanner.column, equals(1)); |
+ }); |
+ |
+ test("consuming halfway through a CR LF doesn't count as a line", () { |
+ scanner.expect('foo\nbar\r'); |
+ expect(scanner.line, equals(1)); |
+ expect(scanner.column, equals(4)); |
+ |
+ scanner.expect('\nb'); |
expect(scanner.line, equals(2)); |
expect(scanner.column, equals(1)); |
}); |
@@ -56,11 +66,25 @@ void main() { |
expect(scanner.line, equals(1)); |
expect(scanner.column, equals(0)); |
}); |
+ |
+ test("consuming halfway through a CR LF doesn't count as a line", () { |
+ scanner.expect('foo\nbar'); |
+ expect(scanner.line, equals(1)); |
+ expect(scanner.column, equals(3)); |
+ |
+ scanner.readChar(); |
+ expect(scanner.line, equals(1)); |
+ expect(scanner.column, equals(4)); |
+ |
+ scanner.readChar(); |
+ expect(scanner.line, equals(2)); |
+ expect(scanner.column, equals(0)); |
+ }); |
}); |
group("position=", () { |
test("forward through newlines sets the line and column", () { |
- scanner.position = 9; // "foo\nbar\nb" |
+ scanner.position = 10; // "foo\nbar\r\nb" |
expect(scanner.line, equals(2)); |
expect(scanner.column, equals(1)); |
}); |
@@ -72,18 +96,24 @@ void main() { |
}); |
test("backward through newlines sets the line and column", () { |
- scanner.scan("foo\nbar\nbaz"); |
+ scanner.scan("foo\nbar\r\nbaz"); |
scanner.position = 2; // "fo" |
expect(scanner.line, equals(0)); |
expect(scanner.column, equals(2)); |
}); |
test("backward through no newlines sets the column", () { |
- scanner.scan("foo\nbar\nbaz"); |
- scanner.position = 9; // "foo\nbar\nb" |
+ scanner.scan("foo\nbar\r\nbaz"); |
+ scanner.position = 10; // "foo\nbar\r\nb" |
expect(scanner.line, equals(2)); |
expect(scanner.column, equals(1)); |
}); |
+ |
+ test("forward halfway through a CR LF doesn't count as a line", () { |
+ scanner.position = 8; // "foo\nbar\r" |
+ expect(scanner.line, equals(1)); |
+ expect(scanner.column, equals(4)); |
+ }); |
}); |
test("state= restores the line, column, and position", () { |
@@ -92,7 +122,7 @@ void main() { |
scanner.scan('ar\nba'); |
scanner.state = state; |
- expect(scanner.rest, equals('ar\nbaz')); |
+ expect(scanner.rest, equals('ar\r\nbaz')); |
expect(scanner.line, equals(1)); |
expect(scanner.column, equals(1)); |
}); |