| OLD | NEW |
| 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; | 5 library rect_test; |
| 6 | 6 |
| 7 import 'dart:math'; | 7 import 'dart:math'; |
| 8 import 'package:unittest/unittest.dart'; | 8 import 'package:unittest/unittest.dart'; |
| 9 | 9 |
| 10 main() { | 10 main() { |
| 11 Rectangle createRectangle(List<num> a) { | 11 Rectangle createRectangle(List<num> a) { |
| 12 return a != null ? new Rectangle(a[0], a[1], a[2] - a[0], a[3] - a[1]) | 12 return a != null |
| 13 ? new Rectangle(a[0], a[1], a[2] - a[0], a[3] - a[1]) |
| 13 : null; | 14 : null; |
| 14 } | 15 } |
| 15 | 16 |
| 16 test('construction', () { | 17 test('construction', () { |
| 17 var r0 = new Rectangle(10, 20, 30, 40); | 18 var r0 = new Rectangle(10, 20, 30, 40); |
| 18 expect(r0.toString(), 'Rectangle (10, 20) 30 x 40'); | 19 expect(r0.toString(), 'Rectangle (10, 20) 30 x 40'); |
| 19 expect(r0.right, 40); | 20 expect(r0.right, 40); |
| 20 expect(r0.bottom, 60); | 21 expect(r0.bottom, 60); |
| 21 | 22 |
| 22 var r1 = new Rectangle.fromPoints(r0.topLeft, r0.bottomRight); | 23 var r1 = new Rectangle.fromPoints(r0.topLeft, r0.bottomRight); |
| 23 expect(r1, r0); | 24 expect(r1, r0); |
| 24 | 25 |
| 25 var r2 = new Rectangle.fromPoints(r0.bottomRight, r0.topLeft); | 26 var r2 = new Rectangle.fromPoints(r0.bottomRight, r0.topLeft); |
| 26 expect(r2, r0); | 27 expect(r2, r0); |
| 27 }); | 28 }); |
| 28 | 29 |
| 29 test('intersection', () { | 30 test('intersection', () { |
| 30 var tests = [ | 31 var tests = [ |
| 31 [[10, 10, 20, 20], [15, 15, 25, 25], [15, 15, 20, 20]], | 32 [ |
| 32 [[10, 10, 20, 20], [20, 0, 30, 10], [20, 10, 20, 10]], | 33 [10, 10, 20, 20], |
| 33 [[0, 0, 1, 1], [10, 11, 12, 13], null], | 34 [15, 15, 25, 25], |
| 34 [[11, 12, 98, 99], [22, 23, 34, 35], [22, 23, 34, 35]]]; | 35 [15, 15, 20, 20] |
| 36 ], |
| 37 [ |
| 38 [10, 10, 20, 20], |
| 39 [20, 0, 30, 10], |
| 40 [20, 10, 20, 10] |
| 41 ], |
| 42 [ |
| 43 [0, 0, 1, 1], |
| 44 [10, 11, 12, 13], |
| 45 null |
| 46 ], |
| 47 [ |
| 48 [11, 12, 98, 99], |
| 49 [22, 23, 34, 35], |
| 50 [22, 23, 34, 35] |
| 51 ] |
| 52 ]; |
| 35 | 53 |
| 36 for (var test in tests) { | 54 for (var test in tests) { |
| 37 var r0 = createRectangle(test[0]); | 55 var r0 = createRectangle(test[0]); |
| 38 var r1 = createRectangle(test[1]); | 56 var r1 = createRectangle(test[1]); |
| 39 var expected = createRectangle(test[2]); | 57 var expected = createRectangle(test[2]); |
| 40 | 58 |
| 41 expect(r0.intersection(r1), expected); | 59 expect(r0.intersection(r1), expected); |
| 42 expect(r1.intersection(r0), expected); | 60 expect(r1.intersection(r0), expected); |
| 43 } | 61 } |
| 44 }); | 62 }); |
| 45 | 63 |
| 46 test('intersects', () { | 64 test('intersects', () { |
| 47 var r0 = new Rectangle(10, 10, 20, 20); | 65 var r0 = new Rectangle(10, 10, 20, 20); |
| 48 var r1 = new Rectangle(15, 15, 25, 25); | 66 var r1 = new Rectangle(15, 15, 25, 25); |
| 49 var r2 = new Rectangle(0, 0, 1, 1); | 67 var r2 = new Rectangle(0, 0, 1, 1); |
| 50 | 68 |
| 51 expect(r0.intersects(r1), isTrue); | 69 expect(r0.intersects(r1), isTrue); |
| 52 expect(r1.intersects(r0), isTrue); | 70 expect(r1.intersects(r0), isTrue); |
| 53 | 71 |
| 54 expect(r0.intersects(r2), isFalse); | 72 expect(r0.intersects(r2), isFalse); |
| 55 expect(r2.intersects(r0), isFalse); | 73 expect(r2.intersects(r0), isFalse); |
| 56 }); | 74 }); |
| 57 | 75 |
| 58 test('boundingBox', () { | 76 test('boundingBox', () { |
| 59 var tests = [ | 77 var tests = [ |
| 60 [[10, 10, 20, 20], [15, 15, 25, 25], [10, 10, 25, 25]], | 78 [ |
| 61 [[10, 10, 20, 20], [20, 0, 30, 10], [10, 0, 30, 20]], | 79 [10, 10, 20, 20], |
| 62 [[0, 0, 1, 1], [10, 11, 12, 13], [0, 0, 12, 13]], | 80 [15, 15, 25, 25], |
| 63 [[11, 12, 98, 99], [22, 23, 34, 35], [11, 12, 98, 99]]]; | 81 [10, 10, 25, 25] |
| 82 ], |
| 83 [ |
| 84 [10, 10, 20, 20], |
| 85 [20, 0, 30, 10], |
| 86 [10, 0, 30, 20] |
| 87 ], |
| 88 [ |
| 89 [0, 0, 1, 1], |
| 90 [10, 11, 12, 13], |
| 91 [0, 0, 12, 13] |
| 92 ], |
| 93 [ |
| 94 [11, 12, 98, 99], |
| 95 [22, 23, 34, 35], |
| 96 [11, 12, 98, 99] |
| 97 ] |
| 98 ]; |
| 64 | 99 |
| 65 for (var test in tests) { | 100 for (var test in tests) { |
| 66 var r0 = createRectangle(test[0]); | 101 var r0 = createRectangle(test[0]); |
| 67 var r1 = createRectangle(test[1]); | 102 var r1 = createRectangle(test[1]); |
| 68 var expected = createRectangle(test[2]); | 103 var expected = createRectangle(test[2]); |
| 69 | 104 |
| 70 expect(r0.boundingBox(r1), expected); | 105 expect(r0.boundingBox(r1), expected); |
| 71 expect(r1.boundingBox(r0), expected); | 106 expect(r1.boundingBox(r0), expected); |
| 72 } | 107 } |
| 73 }); | 108 }); |
| 74 | 109 |
| 75 test('containsRectangle', () { | 110 test('containsRectangle', () { |
| 76 var r = new Rectangle(-10, 0, 20, 10); | 111 var r = new Rectangle(-10, 0, 20, 10); |
| 77 expect(r.containsRectangle(r), isTrue); | 112 expect(r.containsRectangle(r), isTrue); |
| 78 | 113 |
| 79 expect(r.containsRectangle( | 114 expect( |
| 80 new Rectangle(double.NAN, double.NAN, double.NAN, double.NAN)), isFalse)
; | 115 r.containsRectangle( |
| 116 new Rectangle(double.NAN, double.NAN, double.NAN, double.NAN)), |
| 117 isFalse); |
| 81 | 118 |
| 82 var r2 = new Rectangle(0, 2, 5, 5); | 119 var r2 = new Rectangle(0, 2, 5, 5); |
| 83 expect(r.containsRectangle(r2), isTrue); | 120 expect(r.containsRectangle(r2), isTrue); |
| 84 expect(r2.containsRectangle(r), isFalse); | 121 expect(r2.containsRectangle(r), isFalse); |
| 85 | 122 |
| 86 r2 = new Rectangle(-11, 2, 5, 5); | 123 r2 = new Rectangle(-11, 2, 5, 5); |
| 87 expect(r.containsRectangle(r2), isFalse); | 124 expect(r.containsRectangle(r2), isFalse); |
| 88 r2 = new Rectangle(0, 2, 15, 5); | 125 r2 = new Rectangle(0, 2, 15, 5); |
| 89 expect(r.containsRectangle(r2), isFalse); | 126 expect(r.containsRectangle(r2), isFalse); |
| 90 r2 = new Rectangle(0, 2, 5, 10); | 127 r2 = new Rectangle(0, 2, 5, 10); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 | 159 |
| 123 test('hashCode', () { | 160 test('hashCode', () { |
| 124 var a = new Rectangle(0, 1, 2, 3); | 161 var a = new Rectangle(0, 1, 2, 3); |
| 125 var b = new Rectangle(0, 1, 2, 3); | 162 var b = new Rectangle(0, 1, 2, 3); |
| 126 expect(a.hashCode, b.hashCode); | 163 expect(a.hashCode, b.hashCode); |
| 127 | 164 |
| 128 var c = new Rectangle(1, 0, 2, 3); | 165 var c = new Rectangle(1, 0, 2, 3); |
| 129 expect(a.hashCode == c.hashCode, isFalse); | 166 expect(a.hashCode == c.hashCode, isFalse); |
| 130 }); | 167 }); |
| 131 | 168 |
| 132 { // Edge cases for boundingBox/intersection | 169 { |
| 170 // Edge cases for boundingBox/intersection |
| 133 edgeTest(a, l) { | 171 edgeTest(a, l) { |
| 134 test('edge case $a/$l', () { | 172 test('edge case $a/$l', () { |
| 135 var r = new Rectangle(a, a, l, l); | 173 var r = new Rectangle(a, a, l, l); |
| 136 expect(r.boundingBox(r), r); | 174 expect(r.boundingBox(r), r); |
| 137 expect(r.intersection(r), r); | 175 expect(r.intersection(r), r); |
| 138 }); | 176 }); |
| 139 } | 177 } |
| 140 | 178 |
| 141 var bignum1 = 0x20000000000000 + 0.0; | 179 var bignum1 = 0x20000000000000 + 0.0; |
| 142 var bignum2 = 0x20000000000002 + 0.0; | 180 var bignum2 = 0x20000000000002 + 0.0; |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 ]; | 278 ]; |
| 241 for (var r in rectangles) { | 279 for (var r in rectangles) { |
| 242 expect(r.containsPoint(new Point(0, 1)), false); | 280 expect(r.containsPoint(new Point(0, 1)), false); |
| 243 expect(r.containsRectangle(new Rectangle(0, 1, 2, 3)), false); | 281 expect(r.containsRectangle(new Rectangle(0, 1, 2, 3)), false); |
| 244 expect(r.intersects(new Rectangle(0, 1, 2, 3)), false); | 282 expect(r.intersects(new Rectangle(0, 1, 2, 3)), false); |
| 245 expect(r.bottom, isNaN); | 283 expect(r.bottom, isNaN); |
| 246 expect(r.height, isNaN); | 284 expect(r.height, isNaN); |
| 247 } | 285 } |
| 248 }); | 286 }); |
| 249 } | 287 } |
| 250 | |
| OLD | NEW |