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

Side by Side Diff: pkg/unittest/lib/src/string_matchers.dart

Issue 12395024: Don't throw if a non-string is passed to RegExpMatcher. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 9 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 | « no previous file | no next file » | 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 part of matcher; 5 part of matcher;
6 6
7 /** 7 /**
8 * Returns a matcher which matches if the match argument is a string and 8 * Returns a matcher which matches if the match argument is a string and
9 * is equal to [value] when compared case-insensitively. 9 * is equal to [value] when compared case-insensitively.
10 */ 10 */
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 _MatchesRegExp(re) { 171 _MatchesRegExp(re) {
172 if (re is String) { 172 if (re is String) {
173 _regexp = new RegExp(re); 173 _regexp = new RegExp(re);
174 } else if (re is RegExp) { 174 } else if (re is RegExp) {
175 _regexp = re; 175 _regexp = re;
176 } else { 176 } else {
177 throw new ArgumentError('matches requires a regexp or string'); 177 throw new ArgumentError('matches requires a regexp or string');
178 } 178 }
179 } 179 }
180 180
181 bool matches(String item, MatchState matchState) => 181 bool matches(item, MatchState matchState) =>
182 _regexp.hasMatch(item); 182 item is String ? _regexp.hasMatch(item) : false;
183 183
184 Description describe(Description description) => 184 Description describe(Description description) =>
185 description.add("match '${_regexp.pattern}'"); 185 description.add("match '${_regexp.pattern}'");
186 } 186 }
187 187
188 // String matchers match against a string. We add this intermediate 188 // String matchers match against a string. We add this intermediate
189 // class to give better mismatch error messages than the base Matcher class. 189 // class to give better mismatch error messages than the base Matcher class.
190 abstract class _StringMatcher extends BaseMatcher { 190 abstract class _StringMatcher extends BaseMatcher {
191 const _StringMatcher(); 191 const _StringMatcher();
192 Description describeMismatch(item, Description mismatchDescription, 192 Description describeMismatch(item, Description mismatchDescription,
193 MatchState matchState, bool verbose) { 193 MatchState matchState, bool verbose) {
194 if (!(item is String)) { 194 if (!(item is String)) {
195 return mismatchDescription. 195 return mismatchDescription.
196 addDescriptionOf(item). 196 addDescriptionOf(item).
197 add(' not a string'); 197 add(' not a string');
198 } else { 198 } else {
199 return super.describeMismatch(item, mismatchDescription, 199 return super.describeMismatch(item, mismatchDescription,
200 matchState, verbose); 200 matchState, verbose);
201 } 201 }
202 } 202 }
203 } 203 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698