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

Side by Side Diff: packages/matcher/lib/src/numeric_matchers.dart

Issue 3014633002: Roll to pickup pool changes (Closed)
Patch Set: Created 3 years, 2 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) 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 import 'interfaces.dart'; 5 import 'interfaces.dart';
6 6
7 /// Returns a matcher which matches if the match argument is within [delta] 7 /// Returns a matcher which matches if the match argument is within [delta]
8 /// of some [value]. 8 /// of some [value].
9 /// 9 ///
10 /// In other words, this matches if the match argument is greater than 10 /// In other words, this matches if the match argument is greater than
11 /// than or equal [value]-[delta] and less than or equal to [value]+[delta]. 11 /// than or equal [value]-[delta] and less than or equal to [value]+[delta].
12 Matcher closeTo(num value, num delta) => new _IsCloseTo(value, delta); 12 Matcher closeTo(num value, num delta) => new _IsCloseTo(value, delta);
13 13
14 class _IsCloseTo extends Matcher { 14 class _IsCloseTo extends Matcher {
15 final num _value, _delta; 15 final num _value, _delta;
16 16
17 const _IsCloseTo(this._value, this._delta); 17 const _IsCloseTo(this._value, this._delta);
18 18
19 bool matches(item, Map matchState) { 19 bool matches(item, Map matchState) {
20 if (item is! num) return false; 20 if (item is num) {
21 21 var diff = item - _value;
22 var diff = item - _value; 22 if (diff < 0) diff = -diff;
23 if (diff < 0) diff = -diff; 23 return (diff <= _delta);
24 return (diff <= _delta); 24 } else {
25 return false;
26 }
25 } 27 }
26 28
27 Description describe(Description description) => description 29 Description describe(Description description) => description
28 .add('a numeric value within ') 30 .add('a numeric value within ')
29 .addDescriptionOf(_delta) 31 .addDescriptionOf(_delta)
30 .add(' of ') 32 .add(' of ')
31 .addDescriptionOf(_value); 33 .addDescriptionOf(_value);
32 34
33 Description describeMismatch( 35 Description describeMismatch(
34 item, Description mismatchDescription, Map matchState, bool verbose) { 36 item, Description mismatchDescription, Map matchState, bool verbose) {
35 if (item is! num) { 37 if (item is num) {
36 return mismatchDescription.add(' not numeric');
37 } else {
38 var diff = item - _value; 38 var diff = item - _value;
39 if (diff < 0) diff = -diff; 39 if (diff < 0) diff = -diff;
40 return mismatchDescription.add(' differs by ').addDescriptionOf(diff); 40 return mismatchDescription.add(' differs by ').addDescriptionOf(diff);
41 } else {
42 return mismatchDescription.add(' not numeric');
41 } 43 }
42 } 44 }
43 } 45 }
44 46
45 /// Returns a matcher which matches if the match argument is greater 47 /// Returns a matcher which matches if the match argument is greater
46 /// than or equal to [low] and less than or equal to [high]. 48 /// than or equal to [low] and less than or equal to [high].
47 Matcher inInclusiveRange(num low, num high) => 49 Matcher inInclusiveRange(num low, num high) =>
48 new _InRange(low, high, true, true); 50 new _InRange(low, high, true, true);
49 51
50 /// Returns a matcher which matches if the match argument is greater 52 /// Returns a matcher which matches if the match argument is greater
(...skipping 12 matching lines...) Expand all
63 new _InRange(low, high, true, false); 65 new _InRange(low, high, true, false);
64 66
65 class _InRange extends Matcher { 67 class _InRange extends Matcher {
66 final num _low, _high; 68 final num _low, _high;
67 final bool _lowMatchValue, _highMatchValue; 69 final bool _lowMatchValue, _highMatchValue;
68 70
69 const _InRange( 71 const _InRange(
70 this._low, this._high, this._lowMatchValue, this._highMatchValue); 72 this._low, this._high, this._lowMatchValue, this._highMatchValue);
71 73
72 bool matches(value, Map matchState) { 74 bool matches(value, Map matchState) {
73 if (value is! num) { 75 if (value is num) {
76 if (value < _low || value > _high) {
77 return false;
78 }
79 if (value == _low) {
80 return _lowMatchValue;
81 }
82 if (value == _high) {
83 return _highMatchValue;
84 }
85 return true;
86 } else {
74 return false; 87 return false;
75 } 88 }
76 if (value < _low || value > _high) {
77 return false;
78 }
79 if (value == _low) {
80 return _lowMatchValue;
81 }
82 if (value == _high) {
83 return _highMatchValue;
84 }
85 return true;
86 } 89 }
87 90
88 Description describe(Description description) => 91 Description describe(Description description) =>
89 description.add("be in range from " 92 description.add("be in range from "
90 "$_low (${_lowMatchValue ? 'inclusive' : 'exclusive'}) to " 93 "$_low (${_lowMatchValue ? 'inclusive' : 'exclusive'}) to "
91 "$_high (${_highMatchValue ? 'inclusive' : 'exclusive'})"); 94 "$_high (${_highMatchValue ? 'inclusive' : 'exclusive'})");
92 95
93 Description describeMismatch( 96 Description describeMismatch(
94 item, Description mismatchDescription, Map matchState, bool verbose) { 97 item, Description mismatchDescription, Map matchState, bool verbose) {
95 if (item is! num) { 98 if (item is! num) {
96 return mismatchDescription.addDescriptionOf(item).add(' not numeric'); 99 return mismatchDescription.addDescriptionOf(item).add(' not numeric');
97 } else { 100 } else {
98 return super 101 return super
99 .describeMismatch(item, mismatchDescription, matchState, verbose); 102 .describeMismatch(item, mismatchDescription, matchState, verbose);
100 } 103 }
101 } 104 }
102 } 105 }
OLDNEW
« no previous file with comments | « packages/matcher/lib/src/map_matchers.dart ('k') | packages/matcher/lib/src/string_matchers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698