source: other-projects/playing-in-the-street/summer-2013/trunk/Playing-in-the-Street-WPF/Content/Web/mrdoob-three.js-4862f5f/test/unit/math/Vector4.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: 7.7 KB
Line 
1/**
2 * @author bhouston / http://exocortex.com
3 */
4
5module( "Vector4" );
6
7test( "constructor", function() {
8 var a = new THREE.Vector4();
9 ok( a.x == 0, "Passed!" );
10 ok( a.y == 0, "Passed!" );
11 ok( a.z == 0, "Passed!" );
12 ok( a.w == 1, "Passed!" );
13
14 a = new THREE.Vector4( x, y, z, w );
15 ok( a.x === x, "Passed!" );
16 ok( a.y === y, "Passed!" );
17 ok( a.z === z, "Passed!" );
18 ok( a.w === w, "Passed!" );
19});
20
21test( "copy", function() {
22 var a = new THREE.Vector4( x, y, z, w );
23 var b = new THREE.Vector4().copy( a );
24 ok( b.x == x, "Passed!" );
25 ok( b.y == y, "Passed!" );
26 ok( b.z == z, "Passed!" );
27 ok( b.w == w, "Passed!" );
28
29 // ensure that it is a true copy
30 a.x = 0;
31 a.y = -1;
32 a.z = -2;
33 a.w = -3;
34 ok( b.x == x, "Passed!" );
35 ok( b.y == y, "Passed!" );
36 ok( b.z == z, "Passed!" );
37 ok( b.w == w, "Passed!" );
38});
39
40test( "set", function() {
41 var a = new THREE.Vector4();
42 ok( a.x == 0, "Passed!" );
43 ok( a.y == 0, "Passed!" );
44 ok( a.z == 0, "Passed!" );
45 ok( a.w == 1, "Passed!" );
46
47 a.set( x, y, z, w );
48 ok( a.x == x, "Passed!" );
49 ok( a.y == y, "Passed!" );
50 ok( a.z == z, "Passed!" );
51 ok( a.w == w, "Passed!" );
52});
53
54test( "setX,setY,setZ,setW", function() {
55 var a = new THREE.Vector4();
56 ok( a.x == 0, "Passed!" );
57 ok( a.y == 0, "Passed!" );
58 ok( a.z == 0, "Passed!" );
59 ok( a.w == 1, "Passed!" );
60
61 a.setX( x );
62 a.setY( y );
63 a.setZ( z );
64 a.setW( w );
65
66 ok( a.x == x, "Passed!" );
67 ok( a.y == y, "Passed!" );
68 ok( a.z == z, "Passed!" );
69 ok( a.w == w, "Passed!" );
70});
71
72test( "setComponent,getComponent", function() {
73 var a = new THREE.Vector4();
74 ok( a.x == 0, "Passed!" );
75 ok( a.y == 0, "Passed!" );
76 ok( a.z == 0, "Passed!" );
77 ok( a.w == 1, "Passed!" );
78
79 a.setComponent( 0, 1 );
80 a.setComponent( 1, 2 );
81 a.setComponent( 2, 3 );
82 a.setComponent( 3, 4 );
83 ok( a.getComponent( 0 ) == 1, "Passed!" );
84 ok( a.getComponent( 1 ) == 2, "Passed!" );
85 ok( a.getComponent( 2 ) == 3, "Passed!" );
86 ok( a.getComponent( 3 ) == 4, "Passed!" );
87});
88
89test( "add", function() {
90 var a = new THREE.Vector4( x, y, z, w );
91 var b = new THREE.Vector4( -x, -y, -z, -w );
92
93 a.add( b );
94 ok( a.x == 0, "Passed!" );
95 ok( a.y == 0, "Passed!" );
96 ok( a.z == 0, "Passed!" );
97 ok( a.w == 0, "Passed!" );
98
99 var c = new THREE.Vector4().addVectors( b, b );
100 ok( c.x == -2*x, "Passed!" );
101 ok( c.y == -2*y, "Passed!" );
102 ok( c.z == -2*z, "Passed!" );
103 ok( c.w == -2*w, "Passed!" );
104});
105
106test( "sub", function() {
107 var a = new THREE.Vector4( x, y, z, w );
108 var b = new THREE.Vector4( -x, -y, -z, -w );
109
110 a.sub( b );
111 ok( a.x == 2*x, "Passed!" );
112 ok( a.y == 2*y, "Passed!" );
113 ok( a.z == 2*z, "Passed!" );
114 ok( a.w == 2*w, "Passed!" );
115
116 var c = new THREE.Vector4().subVectors( a, a );
117 ok( c.x == 0, "Passed!" );
118 ok( c.y == 0, "Passed!" );
119 ok( c.z == 0, "Passed!" );
120 ok( c.w == 0, "Passed!" );
121});
122
123test( "multiply/divide", function() {
124 var a = new THREE.Vector4( x, y, z, w );
125 var b = new THREE.Vector4( -x, -y, -z, -w );
126
127 a.multiplyScalar( -2 );
128 ok( a.x == x*-2, "Passed!" );
129 ok( a.y == y*-2, "Passed!" );
130 ok( a.z == z*-2, "Passed!" );
131 ok( a.w == w*-2, "Passed!" );
132
133 b.multiplyScalar( -2 );
134 ok( b.x == 2*x, "Passed!" );
135 ok( b.y == 2*y, "Passed!" );
136 ok( b.z == 2*z, "Passed!" );
137 ok( b.w == 2*w, "Passed!" );
138
139 a.divideScalar( -2 );
140 ok( a.x == x, "Passed!" );
141 ok( a.y == y, "Passed!" );
142 ok( a.z == z, "Passed!" );
143 ok( a.w == w, "Passed!" );
144
145 b.divideScalar( -2 );
146 ok( b.x == -x, "Passed!" );
147 ok( b.y == -y, "Passed!" );
148 ok( b.z == -z, "Passed!" );
149 ok( b.w == -w, "Passed!" );
150});
151
152test( "min/max/clamp", function() {
153 var a = new THREE.Vector4( x, y, z, w );
154 var b = new THREE.Vector4( -x, -y, -z, -w );
155 var c = new THREE.Vector4();
156
157 c.copy( a ).min( b );
158 ok( c.x == -x, "Passed!" );
159 ok( c.y == -y, "Passed!" );
160 ok( c.z == -z, "Passed!" );
161 ok( c.w == -w, "Passed!" );
162
163 c.copy( a ).max( b );
164 ok( c.x == x, "Passed!" );
165 ok( c.y == y, "Passed!" );
166 ok( c.z == z, "Passed!" );
167 ok( c.w == w, "Passed!" );
168
169 c.set( -2*x, 2*y, -2*z, 2*w );
170 c.clamp( b, a );
171 ok( c.x == -x, "Passed!" );
172 ok( c.y == y, "Passed!" );
173 ok( c.z == -z, "Passed!" );
174 ok( c.w == w, "Passed!" );
175});
176
177test( "negate", function() {
178 var a = new THREE.Vector4( x, y, z, w );
179
180 a.negate();
181 ok( a.x == -x, "Passed!" );
182 ok( a.y == -y, "Passed!" );
183 ok( a.z == -z, "Passed!" );
184 ok( a.w == -w, "Passed!" );
185});
186
187test( "dot", function() {
188 var a = new THREE.Vector4( x, y, z, w );
189 var b = new THREE.Vector4( -x, -y, -z, -w );
190 var c = new THREE.Vector4( 0, 0, 0, 0 );
191
192 var result = a.dot( b );
193 ok( result == (-x*x-y*y-z*z-w*w), "Passed!" );
194
195 result = a.dot( c );
196 ok( result == 0, "Passed!" );
197});
198
199test( "length/lengthSq", function() {
200 var a = new THREE.Vector4( x, 0, 0, 0 );
201 var b = new THREE.Vector4( 0, -y, 0, 0 );
202 var c = new THREE.Vector4( 0, 0, z, 0 );
203 var d = new THREE.Vector4( 0, 0, 0, w );
204 var e = new THREE.Vector4( 0, 0, 0, 0 );
205
206 ok( a.length() == x, "Passed!" );
207 ok( a.lengthSq() == x*x, "Passed!" );
208 ok( b.length() == y, "Passed!" );
209 ok( b.lengthSq() == y*y, "Passed!" );
210 ok( c.length() == z, "Passed!" );
211 ok( c.lengthSq() == z*z, "Passed!" );
212 ok( d.length() == w, "Passed!" );
213 ok( d.lengthSq() == w*w, "Passed!" );
214 ok( e.length() == 0, "Passed!" );
215 ok( e.lengthSq() == 0, "Passed!" );
216
217 a.set( x, y, z, w );
218 ok( a.length() == Math.sqrt( x*x + y*y + z*z + w*w ), "Passed!" );
219 ok( a.lengthSq() == ( x*x + y*y + z*z + w*w ), "Passed!" );
220});
221
222test( "normalize", function() {
223 var a = new THREE.Vector4( x, 0, 0, 0 );
224 var b = new THREE.Vector4( 0, -y, 0, 0 );
225 var c = new THREE.Vector4( 0, 0, z, 0 );
226 var d = new THREE.Vector4( 0, 0, 0, -w );
227
228 a.normalize();
229 ok( a.length() == 1, "Passed!" );
230 ok( a.x == 1, "Passed!" );
231
232 b.normalize();
233 ok( b.length() == 1, "Passed!" );
234 ok( b.y == -1, "Passed!" );
235
236 c.normalize();
237 ok( c.length() == 1, "Passed!" );
238 ok( c.z == 1, "Passed!" );
239
240 d.normalize();
241 ok( d.length() == 1, "Passed!" );
242 ok( d.w == -1, "Passed!" );
243});
244
245/*
246test( "distanceTo/distanceToSquared", function() {
247 var a = new THREE.Vector4( x, 0, 0, 0 );
248 var b = new THREE.Vector4( 0, -y, 0, 0 );
249 var c = new THREE.Vector4( 0, 0, z, 0 );
250 var d = new THREE.Vector4( 0, 0, 0, -w );
251 var e = new THREE.Vector4();
252
253 ok( a.distanceTo( e ) == x, "Passed!" );
254 ok( a.distanceToSquared( e ) == x*x, "Passed!" );
255
256 ok( b.distanceTo( e ) == y, "Passed!" );
257 ok( b.distanceToSquared( e ) == y*y, "Passed!" );
258
259 ok( c.distanceTo( e ) == z, "Passed!" );
260 ok( c.distanceToSquared( e ) == z*z, "Passed!" );
261
262 ok( d.distanceTo( e ) == w, "Passed!" );
263 ok( d.distanceToSquared( e ) == w*w, "Passed!" );
264});
265*/
266
267
268test( "setLength", function() {
269 var a = new THREE.Vector4( x, 0, 0, 0 );
270
271 ok( a.length() == x, "Passed!" );
272 a.setLength( y );
273 ok( a.length() == y, "Passed!" );
274
275 a = new THREE.Vector4( 0, 0, 0, 0 );
276 ok( a.length() == 0, "Passed!" );
277 a.setLength( y );
278 ok( a.length() == 0, "Passed!" );
279});
280
281test( "lerp/clone", function() {
282 var a = new THREE.Vector4( x, 0, z, 0 );
283 var b = new THREE.Vector4( 0, -y, 0, -w );
284
285 ok( a.lerp( a, 0 ).equals( a.lerp( a, 0.5 ) ), "Passed!" );
286 ok( a.lerp( a, 0 ).equals( a.lerp( a, 1 ) ), "Passed!" );
287
288 ok( a.clone().lerp( b, 0 ).equals( a ), "Passed!" );
289
290 ok( a.clone().lerp( b, 0.5 ).x == x*0.5, "Passed!" );
291 ok( a.clone().lerp( b, 0.5 ).y == -y*0.5, "Passed!" );
292 ok( a.clone().lerp( b, 0.5 ).z == z*0.5, "Passed!" );
293 ok( a.clone().lerp( b, 0.5 ).w == -w*0.5, "Passed!" );
294
295 ok( a.clone().lerp( b, 1 ).equals( b ), "Passed!" );
296});
297
298test( "equals", function() {
299 var a = new THREE.Vector4( x, 0, z, 0 );
300 var b = new THREE.Vector4( 0, -y, 0, -w );
301
302 ok( a.x != b.x, "Passed!" );
303 ok( a.y != b.y, "Passed!" );
304 ok( a.z != b.z, "Passed!" );
305 ok( a.w != b.w, "Passed!" );
306
307 ok( ! a.equals( b ), "Passed!" );
308 ok( ! b.equals( a ), "Passed!" );
309
310 a.copy( b );
311 ok( a.x == b.x, "Passed!" );
312 ok( a.y == b.y, "Passed!" );
313 ok( a.z == b.z, "Passed!" );
314 ok( a.w == b.w, "Passed!" );
315
316 ok( a.equals( b ), "Passed!" );
317 ok( b.equals( a ), "Passed!" );
318});
Note: See TracBrowser for help on using the repository browser.