Fix latest pedantic lints, remove deprecated author field in pubspec (#17)
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 6e8826b..c9899f2 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -5,7 +5,6 @@
linter:
rules:
- always_declare_return_types
- #- annotate_overrides
- avoid_bool_literals_in_conditional_expressions
- avoid_classes_with_only_static_members
- avoid_empty_else
@@ -68,7 +67,6 @@
- prefer_is_empty
- prefer_is_not_empty
- prefer_null_aware_operators
- #- prefer_single_quotes
- prefer_typing_uninitialized_variables
- recursive_getters
- slash_for_doc_comments
diff --git a/example/example.dart b/example/example.dart
index ddd9d3e..0358967 100644
--- a/example/example.dart
+++ b/example/example.dart
@@ -16,18 +16,18 @@
// [Scanner.scan] tries to consume a [Pattern] and returns whether or not it
// succeeded. It will move the scan pointer past the end of the pattern.
- var negative = scanner.scan("-");
+ var negative = scanner.scan('-');
// [Scanner.expect] consumes a [Pattern] and throws a [FormatError] if it
// fails. Like [Scanner.scan], it will move the scan pointer forward.
- scanner.expect(RegExp(r"\d+"));
+ scanner.expect(RegExp(r'\d+'));
// [Scanner.lastMatch] holds the [MatchData] for the most recent call to
// [Scanner.scan], [Scanner.expect], or [Scanner.matches].
var number = num.parse(scanner.lastMatch[0]);
- if (scanner.scan(".")) {
- scanner.expect(RegExp(r"\d+"));
+ if (scanner.scan('.')) {
+ scanner.expect(RegExp(r'\d+'));
var decimal = scanner.lastMatch[0];
number += int.parse(decimal) / math.pow(10, decimal.length);
}
diff --git a/lib/src/eager_span_scanner.dart b/lib/src/eager_span_scanner.dart
index a2df0f8..d34e4f7 100644
--- a/lib/src/eager_span_scanner.dart
+++ b/lib/src/eager_span_scanner.dart
@@ -11,26 +11,30 @@
// sdk#23770 is fully complete, we should move the shared code into a mixin.
/// A regular expression matching newlines across platforms.
-final _newlineRegExp = RegExp(r"\r\n?|\n");
+final _newlineRegExp = RegExp(r'\r\n?|\n');
/// A [SpanScanner] that tracks the line and column eagerly, like [LineScanner].
class EagerSpanScanner extends SpanScanner {
+ @override
int get line => _line;
int _line = 0;
+ @override
int get column => _column;
int _column = 0;
+ @override
LineScannerState get state =>
_EagerSpanScannerState(this, position, line, column);
bool get _betweenCRLF => peekChar(-1) == $cr && peekChar() == $lf;
+ @override
set state(LineScannerState state) {
if (state is! _EagerSpanScannerState ||
!identical((state as _EagerSpanScannerState)._scanner, this)) {
- throw ArgumentError("The given LineScannerState was not returned by "
- "this LineScanner.");
+ throw ArgumentError('The given LineScannerState was not returned by '
+ 'this LineScanner.');
}
super.position = state.position;
@@ -38,6 +42,7 @@
_column = state.column;
}
+ @override
set position(int newPosition) {
var oldPosition = position;
super.position = newPosition;
@@ -67,12 +72,14 @@
EagerSpanScanner(String string, {sourceUrl, int position})
: super(string, sourceUrl: sourceUrl, position: position);
+ @override
bool scanChar(int character) {
if (!super.scanChar(character)) return false;
_adjustLineAndColumn(character);
return true;
}
+ @override
int readChar() {
var character = super.readChar();
_adjustLineAndColumn(character);
@@ -89,6 +96,7 @@
}
}
+ @override
bool scan(Pattern pattern) {
if (!super.scan(pattern)) return false;
@@ -115,8 +123,11 @@
/// A class representing the state of an [EagerSpanScanner].
class _EagerSpanScannerState implements LineScannerState {
final EagerSpanScanner _scanner;
+ @override
final int position;
+ @override
final int line;
+ @override
final int column;
_EagerSpanScannerState(this._scanner, this.position, this.line, this.column);
diff --git a/lib/src/exception.dart b/lib/src/exception.dart
index bad08f6..8c994b5 100644
--- a/lib/src/exception.dart
+++ b/lib/src/exception.dart
@@ -8,6 +8,7 @@
/// An exception thrown by a [StringScanner] that failed to parse a string.
class StringScannerException extends SourceSpanFormatException {
+ @override
String get source => super.source as String;
/// The URL of the source file being parsed.
diff --git a/lib/src/line_scanner.dart b/lib/src/line_scanner.dart
index e16302a..180d923 100644
--- a/lib/src/line_scanner.dart
+++ b/lib/src/line_scanner.dart
@@ -9,7 +9,7 @@
// Note that much of this code is duplicated in eager_span_scanner.dart.
/// A regular expression matching newlines across platforms.
-final _newlineRegExp = RegExp(r"\r\n?|\n");
+final _newlineRegExp = RegExp(r'\r\n?|\n');
/// A subclass of [StringScanner] that tracks line and column information.
class LineScanner extends StringScanner {
@@ -37,8 +37,8 @@
set state(LineScannerState state) {
if (!identical(state._scanner, this)) {
- throw ArgumentError("The given LineScannerState was not returned by "
- "this LineScanner.");
+ throw ArgumentError('The given LineScannerState was not returned by '
+ 'this LineScanner.');
}
super.position = state.position;
@@ -46,6 +46,7 @@
_column = state.column;
}
+ @override
set position(int newPosition) {
var oldPosition = position;
super.position = newPosition;
@@ -75,12 +76,14 @@
LineScanner(String string, {sourceUrl, int position})
: super(string, sourceUrl: sourceUrl, position: position);
+ @override
bool scanChar(int character) {
if (!super.scanChar(character)) return false;
_adjustLineAndColumn(character);
return true;
}
+ @override
int readChar() {
var character = super.readChar();
_adjustLineAndColumn(character);
@@ -97,6 +100,7 @@
}
}
+ @override
bool scan(Pattern pattern) {
if (!super.scan(pattern)) return false;
diff --git a/lib/src/relative_span_scanner.dart b/lib/src/relative_span_scanner.dart
index 1a992e4..096bee3 100644
--- a/lib/src/relative_span_scanner.dart
+++ b/lib/src/relative_span_scanner.dart
@@ -27,10 +27,12 @@
/// This is used to convert between span-relative and file-relative fields.
final FileLocation _startLocation;
+ @override
int get line =>
_sourceFile.getLine(_startLocation.offset + position) -
_startLocation.line;
+ @override
int get column {
var line = _sourceFile.getLine(_startLocation.offset + position);
var column =
@@ -40,24 +42,29 @@
: column;
}
+ @override
LineScannerState get state => _SpanScannerState(this, position);
+ @override
set state(LineScannerState state) {
if (state is! _SpanScannerState ||
!identical((state as _SpanScannerState)._scanner, this)) {
- throw ArgumentError("The given LineScannerState was not returned by "
- "this LineScanner.");
+ throw ArgumentError('The given LineScannerState was not returned by '
+ 'this LineScanner.');
}
position = state.position;
}
+ @override
FileSpan get lastSpan => _lastSpan;
FileSpan _lastSpan;
+ @override
FileLocation get location =>
_sourceFile.location(_startLocation.offset + position);
+ @override
FileSpan get emptySpan => location.pointSpan();
RelativeSpanScanner(FileSpan span)
@@ -65,12 +72,14 @@
_startLocation = span.start,
super(span.text, sourceUrl: span.sourceUrl);
+ @override
FileSpan spanFrom(LineScannerState startState, [LineScannerState endState]) {
var endPosition = endState == null ? position : endState.position;
return _sourceFile.span(_startLocation.offset + startState.position,
_startLocation.offset + endPosition);
}
+ @override
bool matches(Pattern pattern) {
if (!super.matches(pattern)) {
_lastSpan = null;
@@ -82,6 +91,7 @@
return true;
}
+ @override
void error(String message, {Match match, int position, int length}) {
validateErrorArgs(string, match, position, length);
@@ -100,8 +110,11 @@
/// The [SpanScanner] that created this.
final RelativeSpanScanner _scanner;
+ @override
final int position;
+ @override
int get line => _scanner._sourceFile.getLine(position);
+ @override
int get column => _scanner._sourceFile.getColumn(position);
_SpanScannerState(this._scanner, this.position);
diff --git a/lib/src/span_scanner.dart b/lib/src/span_scanner.dart
index d332216..732a76f 100644
--- a/lib/src/span_scanner.dart
+++ b/lib/src/span_scanner.dart
@@ -19,16 +19,20 @@
/// This caches line break information and is used to generate [FileSpan]s.
final SourceFile _sourceFile;
+ @override
int get line => _sourceFile.getLine(position);
+ @override
int get column => _sourceFile.getColumn(position);
+ @override
LineScannerState get state => _SpanScannerState(this, position);
+ @override
set state(LineScannerState state) {
if (state is! _SpanScannerState ||
!identical((state as _SpanScannerState)._scanner, this)) {
- throw ArgumentError("The given LineScannerState was not returned by "
- "this LineScanner.");
+ throw ArgumentError('The given LineScannerState was not returned by '
+ 'this LineScanner.');
}
position = state.position;
@@ -89,6 +93,7 @@
return _sourceFile.span(startState.position, endPosition);
}
+ @override
bool matches(Pattern pattern) {
if (!super.matches(pattern)) {
_lastSpan = null;
@@ -99,6 +104,7 @@
return true;
}
+ @override
void error(String message, {Match match, int position, int length}) {
validateErrorArgs(string, match, position, length);
@@ -116,8 +122,11 @@
/// The [SpanScanner] that created this.
final SpanScanner _scanner;
+ @override
final int position;
+ @override
int get line => _scanner._sourceFile.getLine(position);
+ @override
int get column => _scanner._sourceFile.getColumn(position);
_SpanScannerState(this._scanner, this.position);
diff --git a/lib/src/string_scanner.dart b/lib/src/string_scanner.dart
index 4a1d10c..1739a7c 100644
--- a/lib/src/string_scanner.dart
+++ b/lib/src/string_scanner.dart
@@ -24,7 +24,7 @@
int get position => _position;
set position(int position) {
if (position < 0 || position > string.length) {
- throw ArgumentError("Invalid position $position");
+ throw ArgumentError('Invalid position $position');
}
_position = position;
@@ -68,7 +68,7 @@
/// This throws a [FormatException] if the string has been fully consumed. It
/// doesn't affect [lastMatch].
int readChar() {
- if (isDone) _fail("more input");
+ if (isDone) _fail('more input');
return string.codeUnitAt(_position++);
}
@@ -144,10 +144,10 @@
if (name == null) {
if (pattern is RegExp) {
var source = pattern.pattern;
- name = "/$source/";
+ name = '/$source/';
} else {
name =
- pattern.toString().replaceAll("\\", "\\\\").replaceAll('"', '\\"');
+ pattern.toString().replaceAll('\\', '\\\\').replaceAll('"', '\\"');
name = '"$name"';
}
}
@@ -158,7 +158,7 @@
/// [FormatException].
void expectDone() {
if (isDone) return;
- _fail("no more input");
+ _fail('no more input');
}
/// Returns whether or not [pattern] matches at the current position of the
@@ -210,6 +210,6 @@
/// Throws a [FormatException] describing that [name] is expected at the
/// current position in the string.
void _fail(String name) {
- error("expected $name.", position: position, length: 0);
+ error('expected $name.', position: position, length: 0);
}
}
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index df29ba2..7fe3d52 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -12,19 +12,19 @@
if (position != null) {
if (position < 0) {
- throw RangeError("position must be greater than or equal to 0.");
+ throw RangeError('position must be greater than or equal to 0.');
} else if (position > string.length) {
- throw RangeError("position must be less than or equal to the "
- "string length.");
+ throw RangeError('position must be less than or equal to the '
+ 'string length.');
}
}
if (length != null && length < 0) {
- throw RangeError("length must be greater than or equal to 0.");
+ throw RangeError('length must be greater than or equal to 0.');
}
if (position != null && length != null && position + length > string.length) {
- throw RangeError("position plus length must not go beyond the end of "
- "the string.");
+ throw RangeError('position plus length must not go beyond the end of '
+ 'the string.');
}
}
diff --git a/pubspec.yaml b/pubspec.yaml
index 6cba21e..d5cefce 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -2,7 +2,6 @@
version: 1.0.5
description: A class for parsing strings using a sequence of patterns.
-author: Dart Team <misc@dartlang.org>
homepage: https://github.com/dart-lang/string_scanner
environment:
diff --git a/test/error_test.dart b/test/error_test.dart
index b966b1b..dfa7175 100644
--- a/test/error_test.dart
+++ b/test/error_test.dart
@@ -15,7 +15,7 @@
expect(() => scanner.error('oh no!'), throwsStringScannerException('bar'));
});
- group("with match", () {
+ group('with match', () {
test('supports an earlier match', () {
var scanner = StringScanner('foo bar baz');
scanner.expect('foo ');
@@ -56,7 +56,7 @@
});
});
- group("with position and/or length", () {
+ group('with position and/or length', () {
test('defaults to length 0', () {
var scanner = StringScanner('foo bar baz');
scanner.expect('foo ');
@@ -105,39 +105,39 @@
});
});
- group("argument errors", () {
+ group('argument errors', () {
StringScanner scanner;
setUp(() {
scanner = StringScanner('foo bar baz');
scanner.scan('foo');
});
- test("if match is passed with position", () {
+ test('if match is passed with position', () {
expect(
- () => scanner.error("oh no!", match: scanner.lastMatch, position: 1),
+ () => scanner.error('oh no!', match: scanner.lastMatch, position: 1),
throwsArgumentError);
});
- test("if match is passed with length", () {
- expect(() => scanner.error("oh no!", match: scanner.lastMatch, length: 1),
+ test('if match is passed with length', () {
+ expect(() => scanner.error('oh no!', match: scanner.lastMatch, length: 1),
throwsArgumentError);
});
- test("if position is negative", () {
- expect(() => scanner.error("oh no!", position: -1), throwsArgumentError);
+ test('if position is negative', () {
+ expect(() => scanner.error('oh no!', position: -1), throwsArgumentError);
});
- test("if position is outside the string", () {
- expect(() => scanner.error("oh no!", position: 100), throwsArgumentError);
+ test('if position is outside the string', () {
+ expect(() => scanner.error('oh no!', position: 100), throwsArgumentError);
});
- test("if position + length is outside the string", () {
- expect(() => scanner.error("oh no!", position: 7, length: 7),
+ test('if position + length is outside the string', () {
+ expect(() => scanner.error('oh no!', position: 7, length: 7),
throwsArgumentError);
});
- test("if length is negative", () {
- expect(() => scanner.error("oh no!", length: -1), throwsArgumentError);
+ test('if length is negative', () {
+ expect(() => scanner.error('oh no!', length: -1), throwsArgumentError);
});
});
}
diff --git a/test/line_scanner_test.dart b/test/line_scanner_test.dart
index 8767142..dc9b8cf 100644
--- a/test/line_scanner_test.dart
+++ b/test/line_scanner_test.dart
@@ -17,20 +17,20 @@
expect(scanner.column, equals(0));
});
- group("scan()", () {
- test("consuming no newlines increases the column but not the line", () {
+ group('scan()', () {
+ test('consuming no newlines increases the column but not the line', () {
scanner.scan('foo');
expect(scanner.line, equals(0));
expect(scanner.column, equals(3));
});
- test("consuming a newline resets the column and increases the line", () {
+ test('consuming a newline resets the column and increases the line', () {
scanner.expect('foo\nba');
expect(scanner.line, equals(1));
expect(scanner.column, equals(2));
});
- test("consuming multiple newlines resets the column and increases the line",
+ test('consuming multiple newlines resets the column and increases the line',
() {
scanner.expect('foo\nbar\r\nb');
expect(scanner.line, equals(2));
@@ -48,15 +48,15 @@
});
});
- group("readChar()", () {
- test("on a non-newline character increases the column but not the line",
+ group('readChar()', () {
+ test('on a non-newline character increases the column but not the line',
() {
scanner.readChar();
expect(scanner.line, equals(0));
expect(scanner.column, equals(1));
});
- test("consuming a newline resets the column and increases the line", () {
+ test('consuming a newline resets the column and increases the line', () {
scanner.expect('foo');
expect(scanner.line, equals(0));
expect(scanner.column, equals(3));
@@ -81,15 +81,15 @@
});
});
- group("scanChar()", () {
- test("on a non-newline character increases the column but not the line",
+ group('scanChar()', () {
+ test('on a non-newline character increases the column but not the line',
() {
scanner.scanChar($f);
expect(scanner.line, equals(0));
expect(scanner.column, equals(1));
});
- test("consuming a newline resets the column and increases the line", () {
+ test('consuming a newline resets the column and increases the line', () {
scanner.expect('foo');
expect(scanner.line, equals(0));
expect(scanner.column, equals(3));
@@ -114,28 +114,28 @@
});
});
- group("position=", () {
- test("forward through newlines sets the line and column", () {
+ group('position=', () {
+ test('forward through newlines sets the line and column', () {
scanner.position = 10; // "foo\nbar\r\nb"
expect(scanner.line, equals(2));
expect(scanner.column, equals(1));
});
- test("forward through no newlines sets the column", () {
+ test('forward through no newlines sets the column', () {
scanner.position = 2; // "fo"
expect(scanner.line, equals(0));
expect(scanner.column, equals(2));
});
- test("backward through newlines sets the line and column", () {
- scanner.scan("foo\nbar\r\nbaz");
+ test('backward through newlines sets the line and column', () {
+ 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\r\nbaz");
+ test('backward through no newlines sets the column', () {
+ scanner.scan('foo\nbar\r\nbaz');
scanner.position = 10; // "foo\nbar\r\nb"
expect(scanner.line, equals(2));
expect(scanner.column, equals(1));
@@ -148,7 +148,7 @@
});
});
- test("state= restores the line, column, and position", () {
+ test('state= restores the line, column, and position', () {
scanner.scan('foo\nb');
var state = scanner.state;
@@ -159,7 +159,7 @@
expect(scanner.column, equals(1));
});
- test("state= rejects a foreign state", () {
+ test('state= rejects a foreign state', () {
scanner.scan('foo\nb');
expect(() => LineScanner(scanner.string).state = scanner.state,
diff --git a/test/span_scanner_test.dart b/test/span_scanner_test.dart
index 65694ea..e2570ae 100644
--- a/test/span_scanner_test.dart
+++ b/test/span_scanner_test.dart
@@ -9,15 +9,15 @@
import 'utils.dart';
void main() {
- testForImplementation("lazy", ([String string]) {
+ testForImplementation('lazy', ([String string]) {
return SpanScanner(string ?? 'foo\nbar\nbaz', sourceUrl: 'source');
});
- testForImplementation("eager", ([String string]) {
+ testForImplementation('eager', ([String string]) {
return SpanScanner.eager(string ?? 'foo\nbar\nbaz', sourceUrl: 'source');
});
- group("within", () {
+ group('within', () {
var text = 'first\nbefore: foo\nbar\nbaz :after\nlast';
var startOffset = text.indexOf('foo');
@@ -28,24 +28,24 @@
SpanScanner.within(file.span(startOffset, text.indexOf(' :after')));
});
- test("string only includes the span text", () {
- expect(scanner.string, equals("foo\nbar\nbaz"));
+ test('string only includes the span text', () {
+ expect(scanner.string, equals('foo\nbar\nbaz'));
});
- test("line and column are span-relative", () {
+ test('line and column are span-relative', () {
expect(scanner.line, equals(0));
expect(scanner.column, equals(0));
- scanner.scan("foo");
+ scanner.scan('foo');
expect(scanner.line, equals(0));
expect(scanner.column, equals(3));
- scanner.scan("\n");
+ scanner.scan('\n');
expect(scanner.line, equals(1));
expect(scanner.column, equals(0));
});
- test("tracks the span for the last match", () {
+ test('tracks the span for the last match', () {
scanner.scan('fo');
scanner.scan('o\nba');
@@ -63,7 +63,7 @@
expect(span.text, equals('o\nba'));
});
- test(".spanFrom() returns a span from a previous state", () {
+ test('.spanFrom() returns a span from a previous state', () {
scanner.scan('fo');
var state = scanner.state;
scanner.scan('o\nba');
@@ -73,7 +73,7 @@
expect(span.text, equals('o\nbar\nba'));
});
- test(".emptySpan returns an empty span at the current location", () {
+ test('.emptySpan returns an empty span at the current location', () {
scanner.scan('foo\nba');
var span = scanner.emptySpan;
@@ -90,14 +90,14 @@
expect(span.text, equals(''));
});
- test(".error() uses an absolute span", () {
- scanner.expect("foo");
+ test('.error() uses an absolute span', () {
+ scanner.expect('foo');
expect(
- () => scanner.error('oh no!'), throwsStringScannerException("foo"));
+ () => scanner.error('oh no!'), throwsStringScannerException('foo'));
});
- test(".isDone returns true at the end of the span", () {
- scanner.expect("foo\nbar\nbaz");
+ test('.isDone returns true at the end of the span', () {
+ scanner.expect('foo\nbar\nbaz');
expect(scanner.isDone, isTrue);
});
});
@@ -105,11 +105,11 @@
void testForImplementation(
String name, SpanScanner Function([String string]) create) {
- group("for a $name scanner", () {
+ group('for a $name scanner', () {
SpanScanner scanner;
setUp(() => scanner = create());
- test("tracks the span for the last match", () {
+ test('tracks the span for the last match', () {
scanner.scan('fo');
scanner.scan('o\nba');
@@ -127,7 +127,7 @@
expect(span.text, equals('o\nba'));
});
- test(".spanFrom() returns a span from a previous state", () {
+ test('.spanFrom() returns a span from a previous state', () {
scanner.scan('fo');
var state = scanner.state;
scanner.scan('o\nba');
@@ -137,7 +137,7 @@
expect(span.text, equals('o\nbar\nba'));
});
- test(".spanFrom() handles surrogate pairs correctly", () {
+ test('.spanFrom() handles surrogate pairs correctly', () {
scanner = create('fo\u{12345}o');
scanner.scan('fo');
var state = scanner.state;
@@ -146,7 +146,7 @@
expect(span.text, equals('\u{12345}o'));
});
- test(".emptySpan returns an empty span at the current location", () {
+ test('.emptySpan returns an empty span at the current location', () {
scanner.scan('foo\nba');
var span = scanner.emptySpan;
diff --git a/test/string_scanner_test.dart b/test/string_scanner_test.dart
index 9d6d6b8..e1e5b4e 100644
--- a/test/string_scanner_test.dart
+++ b/test/string_scanner_test.dart
@@ -72,7 +72,7 @@
expect(scanner.position, equals(0));
});
- test("substring returns the empty string", () {
+ test('substring returns the empty string', () {
expect(scanner.substring(0), isEmpty);
});
@@ -130,38 +130,38 @@
expect(scanner.position, equals(0));
});
- test("a matching scanChar returns true moves forward", () {
+ test('a matching scanChar returns true moves forward', () {
expect(scanner.scanChar($f), isTrue);
expect(scanner.lastMatch, isNull);
expect(scanner.position, equals(1));
});
- test("a non-matching scanChar returns false and does nothing", () {
+ test('a non-matching scanChar returns false and does nothing', () {
expect(scanner.scanChar($x), isFalse);
expect(scanner.lastMatch, isNull);
expect(scanner.position, equals(0));
});
- test("a matching expectChar moves forward", () {
+ test('a matching expectChar moves forward', () {
scanner.expectChar($f);
expect(scanner.lastMatch, isNull);
expect(scanner.position, equals(1));
});
- test("a non-matching expectChar fails", () {
+ test('a non-matching expectChar fails', () {
expect(() => scanner.expectChar($x), throwsFormatException);
expect(scanner.lastMatch, isNull);
expect(scanner.position, equals(0));
});
- test("a matching scan returns true and changes the state", () {
+ test('a matching scan returns true and changes the state', () {
expect(scanner.scan(RegExp('f(..)')), isTrue);
expect(scanner.lastMatch[1], equals('oo'));
expect(scanner.position, equals(3));
expect(scanner.rest, equals(' bar'));
});
- test("a non-matching scan returns false and sets lastMatch to null", () {
+ test('a non-matching scan returns false and sets lastMatch to null', () {
expect(scanner.matches(RegExp('f(..)')), isTrue);
expect(scanner.lastMatch, isNotNull);
@@ -171,7 +171,7 @@
expect(scanner.rest, equals('foo bar'));
});
- test("a matching expect changes the state", () {
+ test('a matching expect changes the state', () {
scanner.expect(RegExp('f(..)'));
expect(scanner.lastMatch[1], equals('oo'));
expect(scanner.position, equals(3));
@@ -179,8 +179,8 @@
});
test(
- "a non-matching expect throws a FormatException and sets lastMatch to "
- "null", () {
+ 'a non-matching expect throws a FormatException and sets lastMatch to '
+ 'null', () {
expect(scanner.matches(RegExp('f(..)')), isTrue);
expect(scanner.lastMatch, isNotNull);
@@ -190,7 +190,7 @@
expect(scanner.rest, equals('foo bar'));
});
- test("a matching matches returns true and only changes lastMatch", () {
+ test('a matching matches returns true and only changes lastMatch', () {
expect(scanner.matches(RegExp('f(..)')), isTrue);
expect(scanner.lastMatch[1], equals('oo'));
expect(scanner.position, equals(0));
@@ -205,15 +205,15 @@
expect(scanner.rest, equals('foo bar'));
});
- test("substring from the beginning returns the empty string", () {
+ test('substring from the beginning returns the empty string', () {
expect(scanner.substring(0), isEmpty);
});
- test("substring with a custom end returns the substring", () {
+ test('substring with a custom end returns the substring', () {
expect(scanner.substring(0, 3), equals('foo'));
});
- test("substring with the string length returns the whole string", () {
+ test('substring with the string length returns the whole string', () {
expect(scanner.substring(0, 7), equals('foo bar'));
});
@@ -332,33 +332,33 @@
expect(scanner.position, equals(7));
});
- test("scan returns false and sets lastMatch to null", () {
+ test('scan returns false and sets lastMatch to null', () {
expect(scanner.scan(RegExp('.')), isFalse);
expect(scanner.lastMatch, isNull);
expect(scanner.position, equals(7));
});
- test("expect throws a FormatException and sets lastMatch to null", () {
+ test('expect throws a FormatException and sets lastMatch to null', () {
expect(() => scanner.expect(RegExp('.')), throwsFormatException);
expect(scanner.lastMatch, isNull);
expect(scanner.position, equals(7));
});
- test("matches returns false sets lastMatch to null", () {
+ test('matches returns false sets lastMatch to null', () {
expect(scanner.matches(RegExp('.')), isFalse);
expect(scanner.lastMatch, isNull);
expect(scanner.position, equals(7));
});
- test("substring from the beginning returns the whole string", () {
+ test('substring from the beginning returns the whole string', () {
expect(scanner.substring(0), equals('foo bar'));
});
- test("substring with a custom start returns a substring from there", () {
+ test('substring with a custom start returns a substring from there', () {
expect(scanner.substring(4), equals('bar'));
});
- test("substring with a custom start and end returns that substring", () {
+ test('substring with a custom start and end returns that substring', () {
expect(scanner.substring(3, 5), equals(' b'));
});