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

Side by Side Diff: tests/html/rect_test.dart

Issue 12395036: Adding Point & Rect primitives (Closed) Base URL: https://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
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library rect_test;
6 import '../../pkg/unittest/lib/unittest.dart';
7 import '../../pkg/unittest/lib/html_config.dart';
8 import 'util.dart';
9 import 'dart:html';
10
11 main() {
12 useHtmlConfiguration();
13
14 Rect createRect(List<num> a) {
15 return a != null ? new Rect(a[0], a[1], a[2] - a[0], a[3] - a[1]) : null;
16 }
17
18 test('construction', () {
19 var r0 = new Rect(10, 20, 30, 40);
20 expect(r0.toString(), '(10, 20, 30, 40)');
21
22 var r1 = new Rect.fromCorners(r0.topLeft, r0.bottomRight);
23 expect(r1, r0);
24
25 var r2 = new Rect.fromCorners(r0.bottomRight, r0.topLeft);
26 expect(r2, r0);
27
28 expect(() {
29 new Rect(0, 0, -1, 0);
30 }, throws);
Jennifer Messerly 2013/03/05 02:35:21 test exception type?
blois 2013/03/05 21:43:33 Done.
31
32 expect(() {
33 new Rect(0, 0, 0, -1);
34 }, throws);
35 });
36
37 test('intersection', () {
38 var tests = [
39 [[10, 10, 20, 20], [15, 15, 25, 25], [15, 15, 20, 20]],
40 [[10, 10, 20, 20], [20, 0, 30, 10], [20, 10, 20, 10]],
41 [[0, 0, 1, 1], [10, 11, 12, 13], null],
42 [[11, 12, 98, 99], [22, 23, 34, 35], [22, 23, 34, 35]]];
43
44 for (var test in tests) {
45 var r0 = createRect(test[0]);
46 var r1 = createRect(test[1]);
47 var expected = createRect(test[2]);
48
49 expect(r0.intersection(r1), expected);
50 expect(r1.intersection(r0), expected);
51 }
52 });
53
54 test('intersects', () {
55 var r0 = new Rect(10, 10, 20, 20);
56 var r1 = new Rect(15, 15, 25, 25);
57 var r2 = new Rect(0, 0, 1, 1);
58
59 expect(r0.intersects(r1), isTrue);
60 expect(r1.intersects(r0), isTrue);
61
62 expect(r0.intersects(r2), isFalse);
63 expect(r2.intersects(r0), isFalse);
64 });
65
66 test('union', () {
67 var tests = [
68 [[10, 10, 20, 20], [15, 15, 25, 25], [10, 10, 25, 25]],
69 [[10, 10, 20, 20], [20, 0, 30, 10], [10, 0, 30, 20]],
70 [[0, 0, 1, 1], [10, 11, 12, 13], [0, 0, 12, 13]],
71 [[11, 12, 98, 99], [22, 23, 34, 35], [11, 12, 98, 99]]];
72
73 for (var test in tests) {
74 var r0 = createRect(test[0]);
75 var r1 = createRect(test[1]);
76 var expected = createRect(test[2]);
77
78 expect(r0.union(r1), expected);
79 expect(r1.union(r0), expected);
80 }
81 });
82
83 test('containsRect', () {
84 var r = new Rect(-10, 0, 20, 10);
85 expect(r.containsRect(r), isTrue);
86
87 expect(r.containsRect(
88 new Rect(double.NAN, double.NAN, double.NAN, double.NAN)), isFalse);
89
90 var r2 = new Rect(0, 2, 5, 5);
91 expect(r.containsRect(r2), isTrue);
92 expect(r2.containsRect(r), isFalse);
93
94 r2 = new Rect(-11, 2, 5, 5);
95 expect(r.containsRect(r2), isFalse);
96 r2 = new Rect(0, 2, 15, 5);
97 expect(r.containsRect(r2), isFalse);
98 r2 = new Rect(0, 2, 5, 10);
99 expect(r.containsRect(r2), isFalse);
100 r2 = new Rect(0, 0, 5, 10);
101 expect(r.containsRect(r2), isTrue);
102 });
103
104 test('containsPoint', () {
105 var r = new Rect(20, 40, 60, 80);
106
107 // Test middle.
108 expect(r.containsPoint(new Point(50, 80)), isTrue);
109
110 // Test edges.
111 expect(r.containsPoint(new Point(20, 40)), isTrue);
112 expect(r.containsPoint(new Point(50, 40)), isTrue);
113 expect(r.containsPoint(new Point(80, 40)), isTrue);
114 expect(r.containsPoint(new Point(80, 80)), isTrue);
115 expect(r.containsPoint(new Point(80, 120)), isTrue);
116 expect(r.containsPoint(new Point(50, 120)), isTrue);
117 expect(r.containsPoint(new Point(20, 120)), isTrue);
118 expect(r.containsPoint(new Point(20, 80)), isTrue);
119
120 // Test outside.
121 expect(r.containsPoint(new Point(0, 0)), isFalse);
122 expect(r.containsPoint(new Point(50, 0)), isFalse);
123 expect(r.containsPoint(new Point(100, 0)), isFalse);
124 expect(r.containsPoint(new Point(100, 80)), isFalse);
125 expect(r.containsPoint(new Point(100, 160)), isFalse);
126 expect(r.containsPoint(new Point(50, 160)), isFalse);
127 expect(r.containsPoint(new Point(0, 160)), isFalse);
128 expect(r.containsPoint(new Point(0, 80)), isFalse);
129 });
130
131 test('ceil', () {
132 var rect = new Rect(11.4, 26.6, 17.8, 9.2);
133 expect(rect.ceil(), new Rect(12.0, 27.0, 18.0, 10.0));
134 });
135
136 test('floor', () {
137 var rect = new Rect(11.4, 26.6, 17.8, 9.2);
138 expect(rect.floor(), new Rect(11.0, 26.0, 17.0, 9.0));
139 });
140
141 test('round', () {
142 var rect = new Rect(11.4, 26.6, 17.8, 9.2);
143 expect(rect.round(), new Rect(11.0, 27.0, 18.0, 9.0));
144 });
145
146 test('toInt', () {
147 var rect = new Rect(11.4, 26.6, 17.8, 9.2);
148 var b = rect.toInt();
149 expect(b, new Rect(11, 26, 17, 9));
150
151 expect(b.left is int, isTrue);
152 expect(b.top is int, isTrue);
153 expect(b.width is int, isTrue);
154 expect(b.height is int, isTrue);
155 });
156 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698