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

Side by Side Diff: pkg/dev_compiler/test/codegen/lib/math/rectangle_test.dart

Issue 2407913002: Stop using unittest in point_test and rectangle_test. (Closed)
Patch Set: Fix cast in the input_sdk. Created 4 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 rect_test;
6
7 import 'dart:math'; 5 import 'dart:math';
8 import 'package:unittest/unittest.dart'; 6 import 'package:expect/expect.dart';
9 7
10 main() { 8 main() {
11 Rectangle createRectangle(List<num> a) { 9 testConstruction();
12 return a != null ? new Rectangle(a[0], a[1], a[2] - a[0], a[3] - a[1]) 10 testIntersection();
13 : null; 11 testIntersects();
14 } 12 testBoundingBox();
15 13 testContainsRectangle();
16 test('construction', () { 14 testContainsPoint();
17 var r0 = new Rectangle(10, 20, 30, 40); 15 testHashCode();
18 expect(r0.toString(), 'Rectangle (10, 20) 30 x 40'); 16 testEdgeCases();
19 expect(r0.right, 40); 17 testEquality();
20 expect(r0.bottom, 60); 18 testNegativeLengths();
21 19 testNaNLeft();
22 var r1 = new Rectangle.fromPoints(r0.topLeft, r0.bottomRight); 20 testNaNTop();
23 expect(r1, r0); 21 testNaNWidth();
24 22 testNaNHeight();
25 var r2 = new Rectangle.fromPoints(r0.bottomRight, r0.topLeft); 23 }
26 expect(r2, r0); 24
27 }); 25 Rectangle createRectangle(List<num> a) {
28 26 return a != null ? new Rectangle(a[0], a[1], a[2] - a[0], a[3] - a[1])
29 test('intersection', () { 27 : null;
30 var tests = [ 28 }
31 [[10, 10, 20, 20], [15, 15, 25, 25], [15, 15, 20, 20]], 29
32 [[10, 10, 20, 20], [20, 0, 30, 10], [20, 10, 20, 10]], 30 testConstruction() {
33 [[0, 0, 1, 1], [10, 11, 12, 13], null], 31 var r0 = new Rectangle(10, 20, 30, 40);
34 [[11, 12, 98, 99], [22, 23, 34, 35], [22, 23, 34, 35]]]; 32 Expect.equals('Rectangle (10, 20) 30 x 40', r0.toString());
35 33 Expect.equals(40, r0.right);
36 for (var test in tests) { 34 Expect.equals(60, r0.bottom);
37 var r0 = createRectangle(test[0]); 35
38 var r1 = createRectangle(test[1]); 36 var r1 = new Rectangle.fromPoints(r0.topLeft, r0.bottomRight);
39 var expected = createRectangle(test[2]); 37 Expect.equals(r0, r1);
40 38
41 expect(r0.intersection(r1), expected); 39 var r2 = new Rectangle.fromPoints(r0.bottomRight, r0.topLeft);
42 expect(r1.intersection(r0), expected); 40 Expect.equals(r0, r2);
43 } 41 }
44 }); 42
45 43 testIntersection() {
46 test('intersects', () { 44 var tests = [
47 var r0 = new Rectangle(10, 10, 20, 20); 45 [[10, 10, 20, 20], [15, 15, 25, 25], [15, 15, 20, 20]],
48 var r1 = new Rectangle(15, 15, 25, 25); 46 [[10, 10, 20, 20], [20, 0, 30, 10], [20, 10, 20, 10]],
49 var r2 = new Rectangle(0, 0, 1, 1); 47 [[0, 0, 1, 1], [10, 11, 12, 13], null],
50 48 [[11, 12, 98, 99], [22, 23, 34, 35], [22, 23, 34, 35]]];
51 expect(r0.intersects(r1), isTrue); 49
52 expect(r1.intersects(r0), isTrue); 50 for (var test in tests) {
53 51 var r0 = createRectangle(test[0]);
54 expect(r0.intersects(r2), isFalse); 52 var r1 = createRectangle(test[1]);
55 expect(r2.intersects(r0), isFalse); 53 var expected = createRectangle(test[2]);
56 }); 54
57 55 Expect.equals(expected, r0.intersection(r1));
58 test('boundingBox', () { 56 Expect.equals(expected, r1.intersection(r0));
59 var tests = [ 57 }
60 [[10, 10, 20, 20], [15, 15, 25, 25], [10, 10, 25, 25]], 58 }
61 [[10, 10, 20, 20], [20, 0, 30, 10], [10, 0, 30, 20]], 59
62 [[0, 0, 1, 1], [10, 11, 12, 13], [0, 0, 12, 13]], 60 testIntersects() {
63 [[11, 12, 98, 99], [22, 23, 34, 35], [11, 12, 98, 99]]]; 61 var r0 = new Rectangle(10, 10, 20, 20);
64 62 var r1 = new Rectangle(15, 15, 25, 25);
65 for (var test in tests) { 63 var r2 = new Rectangle(0, 0, 1, 1);
66 var r0 = createRectangle(test[0]); 64
67 var r1 = createRectangle(test[1]); 65 Expect.isTrue(r0.intersects(r1));
68 var expected = createRectangle(test[2]); 66 Expect.isTrue(r1.intersects(r0));
69 67
70 expect(r0.boundingBox(r1), expected); 68 Expect.isFalse(r0.intersects(r2));
71 expect(r1.boundingBox(r0), expected); 69 Expect.isFalse(r2.intersects(r0));
72 } 70 }
73 }); 71
74 72 testBoundingBox() {
75 test('containsRectangle', () { 73 var tests = [
76 var r = new Rectangle(-10, 0, 20, 10); 74 [[10, 10, 20, 20], [15, 15, 25, 25], [10, 10, 25, 25]],
77 expect(r.containsRectangle(r), isTrue); 75 [[10, 10, 20, 20], [20, 0, 30, 10], [10, 0, 30, 20]],
78 76 [[0, 0, 1, 1], [10, 11, 12, 13], [0, 0, 12, 13]],
79 expect(r.containsRectangle( 77 [[11, 12, 98, 99], [22, 23, 34, 35], [11, 12, 98, 99]]];
80 new Rectangle(double.NAN, double.NAN, double.NAN, double.NAN)), isFalse) ; 78
81 79 for (var test in tests) {
82 var r2 = new Rectangle(0, 2, 5, 5); 80 var r0 = createRectangle(test[0]);
83 expect(r.containsRectangle(r2), isTrue); 81 var r1 = createRectangle(test[1]);
84 expect(r2.containsRectangle(r), isFalse); 82 var expected = createRectangle(test[2]);
85 83
86 r2 = new Rectangle(-11, 2, 5, 5); 84 Expect.equals(expected, r0.boundingBox(r1));
87 expect(r.containsRectangle(r2), isFalse); 85 Expect.equals(expected, r1.boundingBox(r0));
88 r2 = new Rectangle(0, 2, 15, 5); 86 }
89 expect(r.containsRectangle(r2), isFalse); 87 }
90 r2 = new Rectangle(0, 2, 5, 10); 88
91 expect(r.containsRectangle(r2), isFalse); 89 testContainsRectangle() {
92 r2 = new Rectangle(0, 0, 5, 10); 90 var r = new Rectangle(-10, 0, 20, 10);
93 expect(r.containsRectangle(r2), isTrue); 91 Expect.isTrue(r.containsRectangle(r));
94 }); 92
95 93 Expect.isFalse(r.containsRectangle(
96 test('containsPoint', () { 94 new Rectangle(double.NAN, double.NAN, double.NAN, double.NAN)));
97 var r = new Rectangle(20, 40, 60, 80); 95
98 96 var r2 = new Rectangle(0, 2, 5, 5);
99 // Test middle. 97 Expect.isTrue(r.containsRectangle(r2));
100 expect(r.containsPoint(new Point(50, 80)), isTrue); 98 Expect.isFalse(r2.containsRectangle(r));
101 99
102 // Test edges. 100 r2 = new Rectangle(-11, 2, 5, 5);
103 expect(r.containsPoint(new Point(20, 40)), isTrue); 101 Expect.isFalse(r.containsRectangle(r2));
104 expect(r.containsPoint(new Point(50, 40)), isTrue); 102 r2 = new Rectangle(0, 2, 15, 5);
105 expect(r.containsPoint(new Point(80, 40)), isTrue); 103 Expect.isFalse(r.containsRectangle(r2));
106 expect(r.containsPoint(new Point(80, 80)), isTrue); 104 r2 = new Rectangle(0, 2, 5, 10);
107 expect(r.containsPoint(new Point(80, 120)), isTrue); 105 Expect.isFalse(r.containsRectangle(r2));
108 expect(r.containsPoint(new Point(50, 120)), isTrue); 106 r2 = new Rectangle(0, 0, 5, 10);
109 expect(r.containsPoint(new Point(20, 120)), isTrue); 107 Expect.isTrue(r.containsRectangle(r2));
110 expect(r.containsPoint(new Point(20, 80)), isTrue); 108 }
111 109
112 // Test outside. 110 testContainsPoint() {
113 expect(r.containsPoint(new Point(0, 0)), isFalse); 111 var r = new Rectangle(20, 40, 60, 80);
114 expect(r.containsPoint(new Point(50, 0)), isFalse); 112
115 expect(r.containsPoint(new Point(100, 0)), isFalse); 113 // Test middle.
116 expect(r.containsPoint(new Point(100, 80)), isFalse); 114 Expect.isTrue(r.containsPoint(new Point(50, 80)));
117 expect(r.containsPoint(new Point(100, 160)), isFalse); 115
118 expect(r.containsPoint(new Point(50, 160)), isFalse); 116 // Test edges.
119 expect(r.containsPoint(new Point(0, 160)), isFalse); 117 Expect.isTrue(r.containsPoint(new Point(20, 40)));
120 expect(r.containsPoint(new Point(0, 80)), isFalse); 118 Expect.isTrue(r.containsPoint(new Point(50, 40)));
121 }); 119 Expect.isTrue(r.containsPoint(new Point(80, 40)));
122 120 Expect.isTrue(r.containsPoint(new Point(80, 80)));
123 test('hashCode', () { 121 Expect.isTrue(r.containsPoint(new Point(80, 120)));
124 var a = new Rectangle(0, 1, 2, 3); 122 Expect.isTrue(r.containsPoint(new Point(50, 120)));
125 var b = new Rectangle(0, 1, 2, 3); 123 Expect.isTrue(r.containsPoint(new Point(20, 120)));
126 expect(a.hashCode, b.hashCode); 124 Expect.isTrue(r.containsPoint(new Point(20, 80)));
127 125
128 var c = new Rectangle(1, 0, 2, 3); 126 // Test outside.
129 expect(a.hashCode == c.hashCode, isFalse); 127 Expect.isFalse(r.containsPoint(new Point(0, 0)));
130 }); 128 Expect.isFalse(r.containsPoint(new Point(50, 0)));
131 129 Expect.isFalse(r.containsPoint(new Point(100, 0)));
132 { // Edge cases for boundingBox/intersection 130 Expect.isFalse(r.containsPoint(new Point(100, 80)));
133 edgeTest(a, l) { 131 Expect.isFalse(r.containsPoint(new Point(100, 160)));
134 test('edge case $a/$l', () { 132 Expect.isFalse(r.containsPoint(new Point(50, 160)));
135 var r = new Rectangle(a, a, l, l); 133 Expect.isFalse(r.containsPoint(new Point(0, 160)));
136 expect(r.boundingBox(r), r); 134 Expect.isFalse(r.containsPoint(new Point(0, 80)));
137 expect(r.intersection(r), r); 135 }
138 }); 136
139 } 137 testHashCode() {
140 138 var a = new Rectangle(0, 1, 2, 3);
141 var bignum1 = 0x20000000000000 + 0.0; 139 var b = new Rectangle(0, 1, 2, 3);
142 var bignum2 = 0x20000000000002 + 0.0; 140 Expect.equals(b.hashCode, a.hashCode);
143 var bignum3 = 0x20000000000004 + 0.0; 141
144 edgeTest(1.0, bignum1); 142 var c = new Rectangle(1, 0, 2, 3);
145 edgeTest(1.0, bignum2); 143 Expect.isFalse(a.hashCode == c.hashCode);
146 edgeTest(1.0, bignum3); 144 }
147 edgeTest(bignum1, 1.0); 145
148 edgeTest(bignum2, 1.0); 146 testEdgeCases() {
149 edgeTest(bignum3, 1.0); 147 edgeTest(double a, double l) {
150 } 148 var r = new Rectangle(a, a, l, l);
151 149 Expect.equals(r, r.boundingBox(r));
152 test("equality with different widths", () { 150 Expect.equals(r, r.intersection(r));
153 var bignum = 0x80000000000008 + 0.0; 151 }
154 var r1 = new Rectangle(bignum, bignum, 1.0, 1.0); 152
155 var r2 = new Rectangle(bignum, bignum, 2.0, 2.0); 153 var bignum1 = 0x20000000000000 + 0.0;
156 expect(r1, r2); 154 var bignum2 = 0x20000000000002 + 0.0;
157 expect(r1.hashCode, r2.hashCode); 155 var bignum3 = 0x20000000000004 + 0.0;
158 expect(r1.right, r2.right); 156 edgeTest(1.0, bignum1);
159 expect(r1.bottom, r2.bottom); 157 edgeTest(1.0, bignum2);
160 expect(r1.width, 1.0); 158 edgeTest(1.0, bignum3);
161 expect(r2.width, 2.0); 159 edgeTest(bignum1, 1.0);
162 }); 160 edgeTest(bignum2, 1.0);
163 161 edgeTest(bignum3, 1.0);
164 test('negative lengths', () { 162 }
165 // Constructor allows negative lengths, but clamps them to zero. 163
166 expect(new Rectangle(4, 4, -2, -2), new Rectangle(4, 4, 0, 0)); 164 testEquality() {
167 expect(new MutableRectangle(4, 4, -2, -2), new Rectangle(4, 4, 0, 0)); 165 var bignum = 0x80000000000008 + 0.0;
168 166 var r1 = new Rectangle(bignum, bignum, 1.0, 1.0);
169 // Setters clamp negative lengths to zero. 167 var r2 = new Rectangle(bignum, bignum, 2.0, 2.0);
170 var r = new MutableRectangle(0, 0, 1, 1); 168 Expect.equals(r2, r1);
171 r.width = -1; 169 Expect.equals(r2.hashCode, r1.hashCode);
172 r.height = -1; 170 Expect.equals(r2.right, r1.right);
173 expect(r, new Rectangle(0, 0, 0, 0)); 171 Expect.equals(r2.bottom, r1.bottom);
174 172 Expect.equals(1.0, r1.width);
175 // Test that doubles are clamped to double zero. 173 Expect.equals(2.0, r2.width);
176 r = new Rectangle(1.5, 1.5, -2.5, -2.5); 174 }
177 expect(identical(r.width, 0.0), isTrue); 175
178 expect(identical(r.height, 0.0), isTrue); 176 testNegativeLengths() {
179 }); 177 // Constructor allows negative lengths, but clamps them to zero.
180 178 Expect.equals(new Rectangle(4, 4, 0, 0), new Rectangle(4, 4, -2, -2));
181 // A NaN-value in any rectangle value means the rectange is considered 179 Expect.equals(new Rectangle(4, 4, 0, 0),
182 // empty (contains no points, doesn't intersect any other rectangle). 180 new MutableRectangle(4, 4, -2, -2));
183 const NaN = double.NAN; 181
184 var isNaN = predicate((x) => x is double && x.isNaN, "NaN"); 182 // Setters clamp negative lengths to zero.
185 183 var mutable = new MutableRectangle(0, 0, 1, 1);
186 test('NaN left', () { 184 mutable.width = -1;
187 var rectangles = [ 185 mutable.height = -1;
188 const Rectangle(NaN, 1, 2, 3), 186 Expect.equals(new Rectangle(0, 0, 0, 0), mutable);
189 new MutableRectangle(NaN, 1, 2, 3), 187
190 new Rectangle.fromPoints(new Point(NaN, 1), new Point(2, 4)), 188 // Test that doubles are clamped to double zero.
191 new MutableRectangle.fromPoints(new Point(NaN, 1), new Point(2, 4)), 189 var rectangle = new Rectangle(1.5, 1.5, -2.5, -2.5);
192 ]; 190 Expect.isTrue(identical(rectangle.width, 0.0));
193 for (var r in rectangles) { 191 Expect.isTrue(identical(rectangle.height, 0.0));
194 expect(r.containsPoint(new Point(0, 1)), false); 192 }
195 expect(r.containsRectangle(new Rectangle(0, 1, 2, 3)), false); 193
196 expect(r.intersects(new Rectangle(0, 1, 2, 3)), false); 194 testNaNLeft() {
197 expect(r.left, isNaN); 195 var rectangles = [
198 expect(r.right, isNaN); 196 const Rectangle(double.NAN, 1, 2, 3),
199 } 197 new MutableRectangle(double.NAN, 1, 2, 3),
200 }); 198 new Rectangle.fromPoints(new Point(double.NAN, 1), new Point(2, 4)),
201 199 new MutableRectangle.fromPoints(new Point(double.NAN, 1), new Point(2, 4)),
202 test('NaN top', () { 200 ];
203 var rectangles = [ 201 for (var r in rectangles) {
204 const Rectangle(0, NaN, 2, 3), 202 Expect.isFalse(r.containsPoint(new Point(0, 1)));
205 new MutableRectangle(0, NaN, 2, 3), 203 Expect.isFalse(r.containsRectangle(new Rectangle(0, 1, 2, 3)));
206 new Rectangle.fromPoints(new Point(0, NaN), new Point(2, 4)), 204 Expect.isFalse(r.intersects(new Rectangle(0, 1, 2, 3)));
207 new MutableRectangle.fromPoints(new Point(0, NaN), new Point(2, 4)), 205 Expect.isTrue(r.left.isNaN);
208 ]; 206 Expect.isTrue(r.right.isNaN);
209 for (var r in rectangles) { 207 }
210 expect(r.containsPoint(new Point(0, 1)), false); 208 }
211 expect(r.containsRectangle(new Rectangle(0, 1, 2, 3)), false); 209 testNaNTop() {
212 expect(r.intersects(new Rectangle(0, 1, 2, 3)), false); 210 var rectangles = [
213 expect(r.top, isNaN); 211 const Rectangle(0, double.NAN, 2, 3),
214 expect(r.bottom, isNaN); 212 new MutableRectangle(0, double.NAN, 2, 3),
215 } 213 new Rectangle.fromPoints(new Point(0, double.NAN), new Point(2, 4)),
216 }); 214 new MutableRectangle.fromPoints(new Point(0, double.NAN), new Point(2, 4)),
217 215 ];
218 test('NaN width', () { 216 for (var r in rectangles) {
219 var rectangles = [ 217 Expect.isFalse(r.containsPoint(new Point(0, 1)));
220 const Rectangle(0, 1, NaN, 3), 218 Expect.isFalse(r.containsRectangle(new Rectangle(0, 1, 2, 3)));
221 new MutableRectangle(0, 1, NaN, 3), 219 Expect.isFalse(r.intersects(new Rectangle(0, 1, 2, 3)));
222 new Rectangle.fromPoints(new Point(0, 1), new Point(NaN, 4)), 220 Expect.isTrue(r.top.isNaN);
223 new MutableRectangle.fromPoints(new Point(0, 1), new Point(NaN, 4)), 221 Expect.isTrue(r.bottom.isNaN);
224 ]; 222 }
225 for (var r in rectangles) { 223 }
226 expect(r.containsPoint(new Point(0, 1)), false); 224
227 expect(r.containsRectangle(new Rectangle(0, 1, 2, 3)), false); 225 testNaNWidth() {
228 expect(r.intersects(new Rectangle(0, 1, 2, 3)), false); 226 var rectangles = [
229 expect(r.right, isNaN); 227 const Rectangle(0, 1, double.NAN, 3),
230 expect(r.width, isNaN); 228 new MutableRectangle(0, 1, double.NAN, 3),
231 } 229 new Rectangle.fromPoints(new Point(0, 1), new Point(double.NAN, 4)),
232 }); 230 new MutableRectangle.fromPoints(new Point(0, 1), new Point(double.NAN, 4)),
233 231 ];
234 test('NaN heigth', () { 232 for (var r in rectangles) {
235 var rectangles = [ 233 Expect.isFalse(r.containsPoint(new Point(0, 1)));
236 const Rectangle(0, 1, 2, NaN), 234 Expect.isFalse(r.containsRectangle(new Rectangle(0, 1, 2, 3)));
237 new MutableRectangle(0, 1, 2, NaN), 235 Expect.isFalse(r.intersects(new Rectangle(0, 1, 2, 3)));
238 new Rectangle.fromPoints(new Point(0, 1), new Point(2, NaN)), 236 Expect.isTrue(r.right.isNaN);
239 new MutableRectangle.fromPoints(new Point(0, 1), new Point(2, NaN)), 237 Expect.isTrue(r.width.isNaN);
240 ]; 238 }
241 for (var r in rectangles) { 239 }
242 expect(r.containsPoint(new Point(0, 1)), false); 240
243 expect(r.containsRectangle(new Rectangle(0, 1, 2, 3)), false); 241 testNaNHeight() {
244 expect(r.intersects(new Rectangle(0, 1, 2, 3)), false); 242 var rectangles = [
245 expect(r.bottom, isNaN); 243 const Rectangle(0, 1, 2, double.NAN),
246 expect(r.height, isNaN); 244 new MutableRectangle(0, 1, 2, double.NAN),
247 } 245 new Rectangle.fromPoints(new Point(0, 1), new Point(2, double.NAN)),
248 }); 246 new MutableRectangle.fromPoints(new Point(0, 1), new Point(2, double.NAN)),
249 } 247 ];
250 248 for (var r in rectangles) {
249 Expect.isFalse(r.containsPoint(new Point(0, 1)));
250 Expect.isFalse(r.containsRectangle(new Rectangle(0, 1, 2, 3)));
251 Expect.isFalse(r.intersects(new Rectangle(0, 1, 2, 3)));
252 Expect.isTrue(r.bottom.isNaN);
253 Expect.isTrue(r.height.isNaN);
254 }
255 }
OLDNEW
« no previous file with comments | « pkg/dev_compiler/test/codegen/lib/math/point_test.dart ('k') | pkg/dev_compiler/test/not_yet_strong_tests.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698