Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(290)

Side by Side Diff: packages/string_scanner/test/string_scanner_test.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library string_scanner.string_scanner_test; 5 import 'package:charcode/charcode.dart';
6
7 import 'package:string_scanner/string_scanner.dart'; 6 import 'package:string_scanner/string_scanner.dart';
8 import 'package:test/test.dart'; 7 import 'package:test/test.dart';
9 8
10 void main() { 9 void main() {
11 group('with an empty string', () { 10 group('with an empty string', () {
12 var scanner; 11 var scanner;
13 setUp(() { 12 setUp(() {
14 scanner = new StringScanner(''); 13 scanner = new StringScanner('');
15 }); 14 });
16 15
(...skipping 19 matching lines...) Expand all
36 expect(scanner.lastMatch, isNull); 35 expect(scanner.lastMatch, isNull);
37 expect(scanner.position, equals(0)); 36 expect(scanner.position, equals(0));
38 }); 37 });
39 38
40 test("peekChar returns null and doesn't change the state", () { 39 test("peekChar returns null and doesn't change the state", () {
41 expect(scanner.peekChar(), isNull); 40 expect(scanner.peekChar(), isNull);
42 expect(scanner.lastMatch, isNull); 41 expect(scanner.lastMatch, isNull);
43 expect(scanner.position, equals(0)); 42 expect(scanner.position, equals(0));
44 }); 43 });
45 44
45 test("scanChar returns false and doesn't change the state", () {
46 expect(scanner.scanChar($f), isFalse);
47 expect(scanner.lastMatch, isNull);
48 expect(scanner.position, equals(0));
49 });
50
51 test("expectChar fails and doesn't change the state", () {
52 expect(() => scanner.expectChar($f), throwsFormatException);
53 expect(scanner.lastMatch, isNull);
54 expect(scanner.position, equals(0));
55 });
56
46 test("scan returns false and doesn't change the state", () { 57 test("scan returns false and doesn't change the state", () {
47 expect(scanner.scan(new RegExp('.')), isFalse); 58 expect(scanner.scan(new RegExp('.')), isFalse);
48 expect(scanner.lastMatch, isNull); 59 expect(scanner.lastMatch, isNull);
49 expect(scanner.position, equals(0)); 60 expect(scanner.position, equals(0));
50 }); 61 });
51 62
52 test("expect throws a FormatException and doesn't change the state", () { 63 test("expect throws a FormatException and doesn't change the state", () {
53 expect(() => scanner.expect(new RegExp('.')), throwsFormatException); 64 expect(() => scanner.expect(new RegExp('.')), throwsFormatException);
54 expect(scanner.lastMatch, isNull); 65 expect(scanner.lastMatch, isNull);
55 expect(scanner.position, equals(0)); 66 expect(scanner.position, equals(0));
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 expect(scanner.lastMatch, isNull); 123 expect(scanner.lastMatch, isNull);
113 expect(scanner.position, equals(0)); 124 expect(scanner.position, equals(0));
114 }); 125 });
115 126
116 test('peekChar with an argument returns the nth character', () { 127 test('peekChar with an argument returns the nth character', () {
117 expect(scanner.peekChar(4), equals(0x62)); 128 expect(scanner.peekChar(4), equals(0x62));
118 expect(scanner.lastMatch, isNull); 129 expect(scanner.lastMatch, isNull);
119 expect(scanner.position, equals(0)); 130 expect(scanner.position, equals(0));
120 }); 131 });
121 132
133 test("a matching scanChar returns true moves forward", () {
134 expect(scanner.scanChar($f), isTrue);
135 expect(scanner.lastMatch, isNull);
136 expect(scanner.position, equals(1));
137 });
138
139 test("a non-matching scanChar returns false and does nothing", () {
140 expect(scanner.scanChar($x), isFalse);
141 expect(scanner.lastMatch, isNull);
142 expect(scanner.position, equals(0));
143 });
144
145 test("a matching expectChar moves forward", () {
146 scanner.expectChar($f);
147 expect(scanner.lastMatch, isNull);
148 expect(scanner.position, equals(1));
149 });
150
151 test("a non-matching expectChar fails", () {
152 expect(() => scanner.expectChar($x), throwsFormatException);
153 expect(scanner.lastMatch, isNull);
154 expect(scanner.position, equals(0));
155 });
156
122 test("a matching scan returns true and changes the state", () { 157 test("a matching scan returns true and changes the state", () {
123 expect(scanner.scan(new RegExp('f(..)')), isTrue); 158 expect(scanner.scan(new RegExp('f(..)')), isTrue);
124 expect(scanner.lastMatch[1], equals('oo')); 159 expect(scanner.lastMatch[1], equals('oo'));
125 expect(scanner.position, equals(3)); 160 expect(scanner.position, equals(3));
126 expect(scanner.rest, equals(' bar')); 161 expect(scanner.rest, equals(' bar'));
127 }); 162 });
128 163
129 test("a non-matching scan returns false and sets lastMatch to null", () { 164 test("a non-matching scan returns false and sets lastMatch to null", () {
130 expect(scanner.matches(new RegExp('f(..)')), isTrue); 165 expect(scanner.matches(new RegExp('f(..)')), isTrue);
131 expect(scanner.lastMatch, isNotNull); 166 expect(scanner.lastMatch, isNotNull);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 254
220 expect(scanner.scan(new RegExp(' b(..)')), isTrue); 255 expect(scanner.scan(new RegExp(' b(..)')), isTrue);
221 expect(scanner.lastMatch[1], equals('ar')); 256 expect(scanner.lastMatch[1], equals('ar'));
222 expect(scanner.position, equals(7)); 257 expect(scanner.position, equals(7));
223 expect(scanner.rest, equals('')); 258 expect(scanner.rest, equals(''));
224 expect(scanner.isDone, isTrue); 259 expect(scanner.isDone, isTrue);
225 expect(scanner.expectDone, isNot(throwsFormatException)); 260 expect(scanner.expectDone, isNot(throwsFormatException));
226 }); 261 });
227 }); 262 });
228 263
264 group('after a scan', () {
265 var scanner;
266 setUp(() {
267 scanner = new StringScanner('foo bar');
268 expect(scanner.scan('foo'), isTrue);
269 });
270
271 test('readChar returns the first character and unsets the last match', () {
272 expect(scanner.readChar(), equals($space));
273 expect(scanner.lastMatch, isNull);
274 expect(scanner.position, equals(4));
275 });
276
277 test('a matching scanChar returns true and unsets the last match', () {
278 expect(scanner.scanChar($space), isTrue);
279 expect(scanner.lastMatch, isNull);
280 expect(scanner.position, equals(4));
281 });
282
283 test('a matching expectChar returns true and unsets the last match', () {
284 scanner.expectChar($space);
285 expect(scanner.lastMatch, isNull);
286 expect(scanner.position, equals(4));
287 });
288 });
289
229 group('at the end of a string', () { 290 group('at the end of a string', () {
230 var scanner; 291 var scanner;
231 setUp(() { 292 setUp(() {
232 scanner = new StringScanner('foo bar'); 293 scanner = new StringScanner('foo bar');
233 expect(scanner.scan('foo bar'), isTrue); 294 expect(scanner.scan('foo bar'), isTrue);
234 }); 295 });
235 296
236 test('is done', () { 297 test('is done', () {
237 expect(scanner.isDone, isTrue); 298 expect(scanner.isDone, isTrue);
238 expect(scanner.expectDone, isNot(throwsFormatException)); 299 expect(scanner.expectDone, isNot(throwsFormatException));
(...skipping 12 matching lines...) Expand all
251 expect(scanner.lastMatch, isNotNull); 312 expect(scanner.lastMatch, isNotNull);
252 expect(scanner.position, equals(7)); 313 expect(scanner.position, equals(7));
253 }); 314 });
254 315
255 test("peekChar returns null and doesn't change the state", () { 316 test("peekChar returns null and doesn't change the state", () {
256 expect(scanner.peekChar(), isNull); 317 expect(scanner.peekChar(), isNull);
257 expect(scanner.lastMatch, isNotNull); 318 expect(scanner.lastMatch, isNotNull);
258 expect(scanner.position, equals(7)); 319 expect(scanner.position, equals(7));
259 }); 320 });
260 321
322 test("scanChar returns false and doesn't change the state", () {
323 expect(scanner.scanChar($f), isFalse);
324 expect(scanner.lastMatch, isNotNull);
325 expect(scanner.position, equals(7));
326 });
327
328 test("expectChar fails and doesn't change the state", () {
329 expect(() => scanner.expectChar($f), throwsFormatException);
330 expect(scanner.lastMatch, isNotNull);
331 expect(scanner.position, equals(7));
332 });
333
261 test("scan returns false and sets lastMatch to null", () { 334 test("scan returns false and sets lastMatch to null", () {
262 expect(scanner.scan(new RegExp('.')), isFalse); 335 expect(scanner.scan(new RegExp('.')), isFalse);
263 expect(scanner.lastMatch, isNull); 336 expect(scanner.lastMatch, isNull);
264 expect(scanner.position, equals(7)); 337 expect(scanner.position, equals(7));
265 }); 338 });
266 339
267 test("expect throws a FormatException and sets lastMatch to null", () { 340 test("expect throws a FormatException and sets lastMatch to null", () {
268 expect(() => scanner.expect(new RegExp('.')), throwsFormatException); 341 expect(() => scanner.expect(new RegExp('.')), throwsFormatException);
269 expect(scanner.lastMatch, isNull); 342 expect(scanner.lastMatch, isNull);
270 expect(scanner.position, equals(7)); 343 expect(scanner.position, equals(7));
(...skipping 21 matching lines...) Expand all
292 scanner.position = 1; 365 scanner.position = 1;
293 expect(scanner.position, equals(1)); 366 expect(scanner.position, equals(1));
294 expect(scanner.rest, equals('oo bar')); 367 expect(scanner.rest, equals('oo bar'));
295 368
296 expect(scanner.scan(new RegExp('oo.')), isTrue); 369 expect(scanner.scan(new RegExp('oo.')), isTrue);
297 expect(scanner.lastMatch[0], equals('oo ')); 370 expect(scanner.lastMatch[0], equals('oo '));
298 expect(scanner.position, equals(4)); 371 expect(scanner.position, equals(4));
299 expect(scanner.rest, equals('bar')); 372 expect(scanner.rest, equals('bar'));
300 }); 373 });
301 374
375 test('setting and resetting position clears lastMatch', () {
376 var oldPosition = scanner.position;
377 scanner.position = 1;
378 scanner.position = oldPosition;
379 expect(scanner.lastMatch, isNull);
380 });
381
302 test('setting position beyond the string throws an ArgumentError', () { 382 test('setting position beyond the string throws an ArgumentError', () {
303 expect(() { 383 expect(() {
304 scanner.position = 8; 384 scanner.position = 8;
305 }, throwsArgumentError); 385 }, throwsArgumentError);
306 }); 386 });
307 387
308 test('setting position to -1 throws an ArgumentError', () { 388 test('setting position to -1 throws an ArgumentError', () {
309 expect(() { 389 expect(() {
310 scanner.position = -1; 390 scanner.position = -1;
311 }, throwsArgumentError); 391 }, throwsArgumentError);
(...skipping 16 matching lines...) Expand all
328 expect(() => new StringScanner('foo bar', position: -1), 408 expect(() => new StringScanner('foo bar', position: -1),
329 throwsArgumentError); 409 throwsArgumentError);
330 }); 410 });
331 411
332 test('throws an ArgumentError if the position is beyond the string', () { 412 test('throws an ArgumentError if the position is beyond the string', () {
333 expect( 413 expect(
334 () => new StringScanner('foo bar', position: 8), throwsArgumentError); 414 () => new StringScanner('foo bar', position: 8), throwsArgumentError);
335 }); 415 });
336 }); 416 });
337 } 417 }
OLDNEW
« no previous file with comments | « packages/string_scanner/test/span_scanner_test.dart ('k') | packages/string_scanner/test/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698