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

Side by Side Diff: pkg/matcher/lib/src/core_matchers.dart

Issue 302093013: pkg/matcher: small nits from previous CL (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: cl nits Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « pkg/matcher/README.md ('k') | pkg/matcher/lib/src/error_matchers.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 matcher.core_matchers; 5 library matcher.core_matchers;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'description.dart'; 9 import 'description.dart';
10 import 'expect.dart'; 10 import 'expect.dart';
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 Matcher equals(expected, [int limit=100]) => 89 Matcher equals(expected, [int limit=100]) =>
90 expected is String 90 expected is String
91 ? new _StringEqualsMatcher(expected) 91 ? new _StringEqualsMatcher(expected)
92 : new _DeepMatcher(expected, limit); 92 : new _DeepMatcher(expected, limit);
93 93
94 class _DeepMatcher extends Matcher { 94 class _DeepMatcher extends Matcher {
95 final _expected; 95 final _expected;
96 final int _limit; 96 final int _limit;
97 var count; 97 var count;
98 98
99 _DeepMatcher(this._expected, [limit = 1000]) : this._limit = limit; 99 _DeepMatcher(this._expected, [int limit = 1000]) : this._limit = limit;
100 100
101 // Returns a pair (reason, location) 101 // Returns a pair (reason, location)
102 List _compareIterables(expected, actual, matcher, depth, location) { 102 List _compareIterables(expected, actual, matcher, depth, location) {
103 if (actual is! Iterable) return ['is not Iterable', location]; 103 if (actual is! Iterable) return ['is not Iterable', location];
104 104
105 var expectedIterator = expected.iterator; 105 var expectedIterator = expected.iterator;
106 var actualIterator = actual.iterator; 106 var actualIterator = actual.iterator;
107 for (var index = 0; ; index++) { 107 for (var index = 0; ; index++) {
108 // Advance in lockstep. 108 // Advance in lockstep.
109 var expectedNext = expectedIterator.moveNext(); 109 var expectedNext = expectedIterator.moveNext();
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 * For now the only solution for all platforms seems to be separate classes 506 * For now the only solution for all platforms seems to be separate classes
507 * for each exception type. 507 * for each exception type.
508 */ 508 */
509 509
510 abstract class TypeMatcher extends Matcher { 510 abstract class TypeMatcher extends Matcher {
511 final String _name; 511 final String _name;
512 const TypeMatcher(this._name); 512 const TypeMatcher(this._name);
513 Description describe(Description description) => description.add(_name); 513 Description describe(Description description) => description.add(_name);
514 } 514 }
515 515
516
517
518 /// A matcher for Map types. 516 /// A matcher for Map types.
519 const isMap = const _IsMap(); 517 const Matcher isMap = const _IsMap();
520 518
521 class _IsMap extends TypeMatcher { 519 class _IsMap extends TypeMatcher {
522 const _IsMap() : super("Map"); 520 const _IsMap() : super("Map");
523 bool matches(item, Map matchState) => item is Map; 521 bool matches(item, Map matchState) => item is Map;
524 } 522 }
525 523
526 /// A matcher for List types. 524 /// A matcher for List types.
527 const isList = const _IsList(); 525 const Matcher isList = const _IsList();
528 526
529 class _IsList extends TypeMatcher { 527 class _IsList extends TypeMatcher {
530 const _IsList() : super("List"); 528 const _IsList() : super("List");
531 bool matches(item, Map matchState) => item is List; 529 bool matches(item, Map matchState) => item is List;
532 } 530 }
533 531
534 /// Returns a matcher that matches if an object has a length property 532 /// Returns a matcher that matches if an object has a length property
535 /// that matches [matcher]. 533 /// that matches [matcher].
536 Matcher hasLength(matcher) => new _HasLength(wrapMatcher(matcher)); 534 Matcher hasLength(matcher) => new _HasLength(wrapMatcher(matcher));
537 535
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 return mismatchDescription.add('is not a string, map or iterable'); 606 return mismatchDescription.add('is not a string, map or iterable');
609 } 607 }
610 } 608 }
611 } 609 }
612 610
613 /// Returns a matcher that matches if the match argument is in 611 /// Returns a matcher that matches if the match argument is in
614 /// the expected value. This is the converse of [contains]. 612 /// the expected value. This is the converse of [contains].
615 Matcher isIn(expected) => new _In(expected); 613 Matcher isIn(expected) => new _In(expected);
616 614
617 class _In extends Matcher { 615 class _In extends Matcher {
618
619 final _expected; 616 final _expected;
620 617
621 const _In(this._expected); 618 const _In(this._expected);
622 619
623 bool matches(item, Map matchState) { 620 bool matches(item, Map matchState) {
624 if (_expected is String) { 621 if (_expected is String) {
625 return _expected.indexOf(item) >= 0; 622 return _expected.indexOf(item) >= 0;
626 } else if (_expected is Iterable) { 623 } else if (_expected is Iterable) {
627 return _expected.any((e) => e == item); 624 return _expected.any((e) => e == item);
628 } else if (_expected is Map) { 625 } else if (_expected is Map) {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 addDescriptionOf(matchState['feature']); 699 addDescriptionOf(matchState['feature']);
703 var innerDescription = new StringDescription(); 700 var innerDescription = new StringDescription();
704 _matcher.describeMismatch(matchState['feature'], innerDescription, 701 _matcher.describeMismatch(matchState['feature'], innerDescription,
705 matchState['state'], verbose); 702 matchState['state'], verbose);
706 if (innerDescription.length > 0) { 703 if (innerDescription.length > 0) {
707 mismatchDescription.add(' which ').add(innerDescription.toString()); 704 mismatchDescription.add(' which ').add(innerDescription.toString());
708 } 705 }
709 return mismatchDescription; 706 return mismatchDescription;
710 } 707 }
711 } 708 }
OLDNEW
« no previous file with comments | « pkg/matcher/README.md ('k') | pkg/matcher/lib/src/error_matchers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698