source: other-projects/playing-in-the-street/summer-2013/trunk/Playing-in-the-Street-WPF/Content/Web/mrdoob-three.js-4862f5f/test/unit/math/Box2.js@ 28897

Last change on this file since 28897 was 28897, checked in by davidb, 10 years ago

GUI front-end to server base plus web page content

File size: 8.8 KB
Line 
1/**
2 * @author bhouston / http://exocortex.com
3 */
4
5module( "Box2" );
6
7test( "constructor", function() {
8 var a = new THREE.Box2();
9 ok( a.min.equals( posInf2 ), "Passed!" );
10 ok( a.max.equals( negInf2 ), "Passed!" );
11
12 a = new THREE.Box2( zero2.clone(), zero2.clone() );
13 ok( a.min.equals( zero2 ), "Passed!" );
14 ok( a.max.equals( zero2 ), "Passed!" );
15
16 a = new THREE.Box2( zero2.clone(), one2.clone() );
17 ok( a.min.equals( zero2 ), "Passed!" );
18 ok( a.max.equals( one2 ), "Passed!" );
19});
20
21test( "copy", function() {
22 var a = new THREE.Box2( zero2.clone(), one2.clone() );
23 var b = new THREE.Box2().copy( a );
24 ok( b.min.equals( zero2 ), "Passed!" );
25 ok( b.max.equals( one2 ), "Passed!" );
26
27 // ensure that it is a true copy
28 a.min = zero2;
29 a.max = one2;
30 ok( b.min.equals( zero2 ), "Passed!" );
31 ok( b.max.equals( one2 ), "Passed!" );
32});
33
34test( "set", function() {
35 var a = new THREE.Box2();
36
37 a.set( zero2, one2 );
38 ok( a.min.equals( zero2 ), "Passed!" );
39 ok( a.max.equals( one2 ), "Passed!" );
40});
41
42test( "empty/makeEmpty", function() {
43 var a = new THREE.Box2();
44
45 ok( a.empty(), "Passed!" );
46
47 var a = new THREE.Box2( zero2.clone(), one2.clone() );
48 ok( ! a.empty(), "Passed!" );
49
50 a.makeEmpty();
51 ok( a.empty(), "Passed!" );
52});
53
54test( "center", function() {
55 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
56
57 ok( a.center().equals( zero2 ), "Passed!" );
58
59 a = new THREE.Box2( zero2, one2 );
60 var midpoint = one2.clone().multiplyScalar( 0.5 );
61 ok( a.center().equals( midpoint ), "Passed!" );
62});
63
64test( "size", function() {
65 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
66
67 ok( a.size().equals( zero2 ), "Passed!" );
68
69 a = new THREE.Box2( zero2.clone(), one2.clone() );
70 ok( a.size().equals( one2 ), "Passed!" );
71});
72
73test( "expandByPoint", function() {
74 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
75
76 a.expandByPoint( zero2 );
77 ok( a.size().equals( zero2 ), "Passed!" );
78
79 a.expandByPoint( one2 );
80 ok( a.size().equals( one2 ), "Passed!" );
81
82 a.expandByPoint( one2.clone().negate() );
83 ok( a.size().equals( one2.clone().multiplyScalar( 2 ) ), "Passed!" );
84 ok( a.center().equals( zero2 ), "Passed!" );
85});
86
87test( "expandByVector", function() {
88 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
89
90 a.expandByVector( zero2 );
91 ok( a.size().equals( zero2 ), "Passed!" );
92
93 a.expandByVector( one2 );
94 ok( a.size().equals( one2.clone().multiplyScalar( 2 ) ), "Passed!" );
95 ok( a.center().equals( zero2 ), "Passed!" );
96});
97
98test( "expandByScalar", function() {
99 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
100
101 a.expandByScalar( 0 );
102 ok( a.size().equals( zero2 ), "Passed!" );
103
104 a.expandByScalar( 1 );
105 ok( a.size().equals( one2.clone().multiplyScalar( 2 ) ), "Passed!" );
106 ok( a.center().equals( zero2 ), "Passed!" );
107});
108
109test( "containsPoint", function() {
110 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
111
112 ok( a.containsPoint( zero2 ), "Passed!" );
113 ok( ! a.containsPoint( one2 ), "Passed!" );
114
115 a.expandByScalar( 1 );
116 ok( a.containsPoint( zero2 ), "Passed!" );
117 ok( a.containsPoint( one2 ), "Passed!" );
118 ok( a.containsPoint( one2.clone().negate() ), "Passed!" );
119});
120
121test( "containsBox", function() {
122 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
123 var b = new THREE.Box2( zero2.clone(), one2.clone() );
124 var c = new THREE.Box2( one2.clone().negate(), one2.clone() );
125
126 ok( a.containsBox( a ), "Passed!" );
127 ok( ! a.containsBox( b ), "Passed!" );
128 ok( ! a.containsBox( c ), "Passed!" );
129
130 ok( b.containsBox( a ), "Passed!" );
131 ok( c.containsBox( a ), "Passed!" );
132 ok( ! b.containsBox( c ), "Passed!" );
133});
134
135test( "getParameter", function() {
136 var a = new THREE.Box2( zero2.clone(), one2.clone() );
137 var b = new THREE.Box2( one2.clone().negate(), one2.clone() );
138
139 ok( a.getParameter( new THREE.Vector2( 0, 0 ) ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
140 ok( a.getParameter( new THREE.Vector2( 1, 1 ) ).equals( new THREE.Vector2( 1, 1 ) ), "Passed!" );
141
142 ok( b.getParameter( new THREE.Vector2( -1, -1 ) ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
143 ok( b.getParameter( new THREE.Vector2( 0, 0 ) ).equals( new THREE.Vector2( 0.5, 0.5 ) ), "Passed!" );
144 ok( b.getParameter( new THREE.Vector2( 1, 1 ) ).equals( new THREE.Vector2( 1, 1 ) ), "Passed!" );
145});
146
147test( "clampPoint", function() {
148 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
149 var b = new THREE.Box2( one2.clone().negate(), one2.clone() );
150
151 ok( a.clampPoint( new THREE.Vector2( 0, 0 ) ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
152 ok( a.clampPoint( new THREE.Vector2( 1, 1 ) ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
153 ok( a.clampPoint( new THREE.Vector2( -1, -1 ) ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
154
155 ok( b.clampPoint( new THREE.Vector2( 2, 2 ) ).equals( new THREE.Vector2( 1, 1 ) ), "Passed!" );
156 ok( b.clampPoint( new THREE.Vector2( 1, 1 ) ).equals( new THREE.Vector2( 1, 1 ) ), "Passed!" );
157 ok( b.clampPoint( new THREE.Vector2( 0, 0 ) ).equals( new THREE.Vector2( 0, 0 ) ), "Passed!" );
158 ok( b.clampPoint( new THREE.Vector2( -1, -1 ) ).equals( new THREE.Vector2( -1, -1 ) ), "Passed!" );
159 ok( b.clampPoint( new THREE.Vector2( -2, -2 ) ).equals( new THREE.Vector2( -1, -1 ) ), "Passed!" );
160});
161
162test( "distanceToPoint", function() {
163 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
164 var b = new THREE.Box2( one2.clone().negate(), one2.clone() );
165
166 ok( a.distanceToPoint( new THREE.Vector2( 0, 0 ) ) == 0, "Passed!" );
167 ok( a.distanceToPoint( new THREE.Vector2( 1, 1 ) ) == Math.sqrt( 2 ), "Passed!" );
168 ok( a.distanceToPoint( new THREE.Vector2( -1, -1 ) ) == Math.sqrt( 2 ), "Passed!" );
169
170 ok( b.distanceToPoint( new THREE.Vector2( 2, 2 ) ) == Math.sqrt( 2 ), "Passed!" );
171 ok( b.distanceToPoint( new THREE.Vector2( 1, 1 ) ) == 0, "Passed!" );
172 ok( b.distanceToPoint( new THREE.Vector2( 0, 0 ) ) == 0, "Passed!" );
173 ok( b.distanceToPoint( new THREE.Vector2( -1, -1 ) ) == 0, "Passed!" );
174 ok( b.distanceToPoint( new THREE.Vector2( -2, -2 ) ) == Math.sqrt( 2 ), "Passed!" );
175});
176
177test( "distanceToPoint", function() {
178 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
179 var b = new THREE.Box2( one2.clone().negate(), one2.clone() );
180
181 ok( a.distanceToPoint( new THREE.Vector2( 0, 0 ) ) == 0, "Passed!" );
182 ok( a.distanceToPoint( new THREE.Vector2( 1, 1 ) ) == Math.sqrt( 2 ), "Passed!" );
183 ok( a.distanceToPoint( new THREE.Vector2( -1, -1 ) ) == Math.sqrt( 2 ), "Passed!" );
184
185 ok( b.distanceToPoint( new THREE.Vector2( 2, 2 ) ) == Math.sqrt( 2 ), "Passed!" );
186 ok( b.distanceToPoint( new THREE.Vector2( 1, 1 ) ) == 0, "Passed!" );
187 ok( b.distanceToPoint( new THREE.Vector2( 0, 0 ) ) == 0, "Passed!" );
188 ok( b.distanceToPoint( new THREE.Vector2( -1, -1 ) ) == 0, "Passed!" );
189 ok( b.distanceToPoint( new THREE.Vector2( -2, -2 ) ) == Math.sqrt( 2 ), "Passed!" );
190});
191
192test( "isIntersectionBox", function() {
193 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
194 var b = new THREE.Box2( zero2.clone(), one2.clone() );
195 var c = new THREE.Box2( one2.clone().negate(), one2.clone() );
196
197 ok( a.isIntersectionBox( a ), "Passed!" );
198 ok( a.isIntersectionBox( b ), "Passed!" );
199 ok( a.isIntersectionBox( c ), "Passed!" );
200
201 ok( b.isIntersectionBox( a ), "Passed!" );
202 ok( c.isIntersectionBox( a ), "Passed!" );
203 ok( b.isIntersectionBox( c ), "Passed!" );
204
205 b.translate( new THREE.Vector2( 2, 2 ) );
206 ok( ! a.isIntersectionBox( b ), "Passed!" );
207 ok( ! b.isIntersectionBox( a ), "Passed!" );
208 ok( ! b.isIntersectionBox( c ), "Passed!" );
209});
210
211test( "intersect", function() {
212 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
213 var b = new THREE.Box2( zero2.clone(), one2.clone() );
214 var c = new THREE.Box2( one2.clone().negate(), one2.clone() );
215
216 ok( a.clone().intersect( a ).equals( a ), "Passed!" );
217 ok( a.clone().intersect( b ).equals( a ), "Passed!" );
218 ok( b.clone().intersect( b ).equals( b ), "Passed!" );
219 ok( a.clone().intersect( c ).equals( a ), "Passed!" );
220 ok( b.clone().intersect( c ).equals( b ), "Passed!" );
221 ok( c.clone().intersect( c ).equals( c ), "Passed!" );
222});
223
224test( "union", function() {
225 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
226 var b = new THREE.Box2( zero2.clone(), one2.clone() );
227 var c = new THREE.Box2( one2.clone().negate(), one2.clone() );
228
229 ok( a.clone().union( a ).equals( a ), "Passed!" );
230 ok( a.clone().union( b ).equals( b ), "Passed!" );
231 ok( a.clone().union( c ).equals( c ), "Passed!" );
232 ok( b.clone().union( c ).equals( c ), "Passed!" );
233});
234
235test( "translate", function() {
236 var a = new THREE.Box2( zero2.clone(), zero2.clone() );
237 var b = new THREE.Box2( zero2.clone(), one2.clone() );
238 var c = new THREE.Box2( one2.clone().negate(), one2.clone() );
239 var d = new THREE.Box2( one2.clone().negate(), zero2.clone() );
240
241 ok( a.clone().translate( one2 ).equals( new THREE.Box2( one2, one2 ) ), "Passed!" );
242 ok( a.clone().translate( one2 ).translate( one2.clone().negate() ).equals( a ), "Passed!" );
243 ok( d.clone().translate( one2 ).equals( b ), "Passed!" );
244 ok( b.clone().translate( one2.clone().negate() ).equals( d ), "Passed!" );
245});
Note: See TracBrowser for help on using the repository browser.