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

Side by Side Diff: tests/lib/scalarlist/float32x4_test.dart

Issue 12982010: Review changes (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Merged Created 7 years, 8 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 tag to be able to run in html test framework.
6 library float32x4_test;
7
8 import 'dart:scalarlist';
9
10 testAdd() {
11 var m = new Float32x4(-1.0, -2.0, -3.0, -4.0);
12 var n = new Float32x4(1.0, 2.0, 3.0, 4.0);
13 var o = m + n;
14 Expect.equals(0.0, o.x);
15 Expect.equals(0.0, o.y);
16 Expect.equals(0.0, o.z);
17 Expect.equals(0.0, o.w);
18 }
19
20 testNegate() {
21 var m = new Float32x4(1.0, 2.0, -3.0, -4.0);
22 m = -m;
23 Expect.equals(-1.0, m.x);
24 Expect.equals(-2.0, m.y);
25 Expect.equals(3.0, m.z);
26 Expect.equals(4.0, m.w);
27 }
28
29 testSub() {
30 var m = new Float32x4(-1.0, -2.0, -3.0, -4.0);
31 var n = new Float32x4(1.0, 2.0, 3.0, 4.0);
32 var o = m - n;
33 Expect.equals(-2.0, o.x);
34 Expect.equals(-4.0, o.y);
35 Expect.equals(-6.0, o.z);
36 Expect.equals(-8.0, o.w);
37 }
38
39 testMul() {
40 var m = new Float32x4(-1.0, -2.0, -3.0, -4.0);
41 var n = new Float32x4(1.0, 2.0, 3.0, 4.0);
42 var o = m * n;
43 Expect.equals(-1.0, o.x);
44 Expect.equals(-4.0, o.y);
45 Expect.equals(-9.0, o.z);
46 Expect.equals(-16.0, o.w);
47 }
48
49 testDiv() {
50 var m = new Float32x4(-1.0, -2.0, -3.0, -4.0);
51 var n = new Float32x4(1.0, 2.0, 3.0, 4.0);
52 var o = m / n;
53 Expect.equals(-1.0, o.x);
54 Expect.equals(-1.0, o.y);
55 Expect.equals(-1.0, o.z);
56 Expect.equals(-1.0, o.w);
57 }
58
59 testComparison() {
60 var m = new Float32x4(1.0, 2.0, 0.1, 0.001);
61 var n = new Float32x4(2.0, 2.0, 0.001, 0.1);
62 var cmp;
63 cmp = m.lessThan(n);
64 Expect.equals(0xFFFFFFFF, cmp.x);
65 Expect.equals(0x0, cmp.y);
66 Expect.equals(0x0, cmp.z);
67 Expect.equals(0xFFFFFFFF, cmp.w);
68
69 cmp = m.lessThanOrEqual(n);
70 Expect.equals(0xFFFFFFFF, cmp.x);
71 Expect.equals(0xFFFFFFFF, cmp.y);
72 Expect.equals(0x0, cmp.z);
73 Expect.equals(0xFFFFFFFF, cmp.w);
74
75 cmp = m.equal(n);
76 Expect.equals(0x0, cmp.x);
77 Expect.equals(0xFFFFFFFF, cmp.y);
78 Expect.equals(0x0, cmp.z);
79 Expect.equals(0x0, cmp.w);
80
81 cmp = m.notEqual(n);
82 Expect.equals(0xFFFFFFFF, cmp.x);
83 Expect.equals(0x0, cmp.y);
84 Expect.equals(0xFFFFFFFF, cmp.z);
85 Expect.equals(0xFFFFFFFF, cmp.w);
86
87 cmp = m.greaterThanOrEqual(n);
88 Expect.equals(0x0, cmp.x);
89 Expect.equals(0xFFFFFFFF, cmp.y);
90 Expect.equals(0xFFFFFFFF, cmp.z);
91 Expect.equals(0x0, cmp.w);
92
93 cmp = m.greaterThan(n);
94 Expect.equals(0x0, cmp.x);
95 Expect.equals(0x0, cmp.y);
96 Expect.equals(0xFFFFFFFF, cmp.z);
97 Expect.equals(0x0, cmp.w);
98 }
99
100 testAbs() {
101 var m = new Float32x4(1.0, -2.0, 3.0, -4.0);
102 m = m.abs();
103 Expect.equals(1.0, m.x);
104 Expect.equals(2.0, m.y);
105 Expect.equals(3.0, m.z);
106 Expect.equals(4.0, m.w);
107 }
108
109 testScale() {
110 var m = new Float32x4(1.0, -2.0, 3.0, -4.0);
111 m = m.scale(20.0);
112 Expect.equals(20.0, m.x);
113 Expect.equals(-40.0, m.y);
114 Expect.equals(60.0, m.z);
115 Expect.equals(-80.0, m.w);
116 }
117
118 testClamp() {
119 var m = new Float32x4(1.0, -2.0, 3.0, -4.0);
120 var lo = new Float32x4(0.0, 0.0, 0.0, 0.0);
121 var hi = new Float32x4(2.0, 2.0, 2.0, 2.0);
122 m = m.clamp(lo, hi);
123 Expect.equals(1.0, m.x);
124 Expect.equals(0.0, m.y);
125 Expect.equals(2.0, m.z);
126 Expect.equals(0.0, m.w);
127 }
128
129 testShuffle() {
130 var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
131 var xxxx = m.xxxx;
132 Expect.equals(1.0, xxxx.x);
133 Expect.equals(1.0, xxxx.y);
134 Expect.equals(1.0, xxxx.z);
135 Expect.equals(1.0, xxxx.w);
136 var yyyy = m.yyyy;
137 Expect.equals(2.0, yyyy.x);
138 Expect.equals(2.0, yyyy.y);
139 Expect.equals(2.0, yyyy.z);
140 Expect.equals(2.0, yyyy.w);
141 var zzzz = m.zzzz;
142 Expect.equals(3.0, zzzz.x);
143 Expect.equals(3.0, zzzz.y);
144 Expect.equals(3.0, zzzz.z);
145 Expect.equals(3.0, zzzz.w);
146 var wwww = m.wwww;
147 Expect.equals(4.0, wwww.x);
148 Expect.equals(4.0, wwww.y);
149 Expect.equals(4.0, wwww.z);
150 Expect.equals(4.0, wwww.w);
151 }
152
153 testMin() {
154 var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
155 var n = new Float32x4(1.0, 0.0, 2.5, 5.0);
156 m = m.min(n);
157 Expect.equals(1.0, m.x);
158 Expect.equals(0.0, m.y);
159 Expect.equals(2.5, m.z);
160 Expect.equals(4.0, m.w);
161 }
162
163 testMax() {
164 var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
165 var n = new Float32x4(1.0, 0.0, 2.5, 5.0);
166 m = m.max(n);
167 Expect.equals(1.0, m.x);
168 Expect.equals(2.0, m.y);
169 Expect.equals(3.0, m.z);
170 Expect.equals(5.0, m.w);
171 }
172
173 testSqrt() {
174 var m = new Float32x4(1.0, 4.0, 9.0, 16.0);
175 m = m.sqrt();
176 Expect.equals(1.0, m.x);
177 Expect.equals(2.0, m.y);
178 Expect.equals(3.0, m.z);
179 Expect.equals(4.0, m.w);
180 }
181
182 testReciprocal() {
183 var m = new Float32x4(1.0, 4.0, 9.0, 16.0);
184 m = m.reciprocal();
185 Expect.approxEquals(1.0, m.x);
186 Expect.approxEquals(0.25, m.y);
187 Expect.approxEquals(0.1111111, m.z);
188 Expect.approxEquals(0.0625, m.w);
189 }
190
191 testReciprocalSqrt() {
192 var m = new Float32x4(1.0, 0.25, 0.111111, 0.0625);
193 m = m.reciprocalSqrt();
194 Expect.approxEquals(1.0, m.x);
195 Expect.approxEquals(2.0, m.y);
196 Expect.approxEquals(3.0, m.z);
197 Expect.approxEquals(4.0, m.w);
198 }
199
200 testSelect() {
201 var m = new Uint32x4.bool(true, true, false, false);
202 var t = new Float32x4(1.0, 2.0, 3.0, 4.0);
203 var f = new Float32x4(5.0, 6.0, 7.0, 8.0);
204 var s = m.select(t, f);
205 Expect.equals(1.0, s.x);
206 Expect.equals(2.0, s.y);
207 Expect.equals(7.0, s.z);
208 Expect.equals(8.0, s.w);
209 }
210
211 testConversions() {
212 var m = new Uint32x4(0x3F800000, 0x40000000, 0x40400000, 0x40800000);
213 var n = m.toFloat32x4();
214 Expect.equals(1.0, n.x);
215 Expect.equals(2.0, n.y);
216 Expect.equals(3.0, n.z);
217 Expect.equals(4.0, n.w);
218 n = new Float32x4(5.0, 6.0, 7.0, 8.0);
219 m = n.toUint32x4();
220 Expect.equals(0x40A00000, m.x);
221 Expect.equals(0x40C00000, m.y);
222 Expect.equals(0x40E00000, m.z);
223 Expect.equals(0x41000000, m.w);
224 // Flip sign using bit-wise operators.
225 n = new Float32x4(9.0, 10.0, 11.0, 12.0);
226 m = new Uint32x4(0x80000000, 0x80000000, 0x80000000, 0x80000000);
227 var nMask = n.toUint32x4();
228 nMask = nMask ^ m; // flip sign.
229 n = nMask.toFloat32x4();
230 Expect.equals(-9.0, n.x);
231 Expect.equals(-10.0, n.y);
232 Expect.equals(-11.0, n.z);
233 Expect.equals(-12.0, n.w);
234 nMask = n.toUint32x4();
235 nMask = nMask ^ m; // flip sign.
236 n = nMask.toFloat32x4();
237 Expect.equals(9.0, n.x);
238 Expect.equals(10.0, n.y);
239 Expect.equals(11.0, n.z);
240 Expect.equals(12.0, n.w);
241 }
242
243
244 testBitOperators() {
245 var m = new Uint32x4(0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA);
246 var n = new Uint32x4(0x55555555, 0x55555555, 0x55555555, 0x55555555);
247 Expect.equals(0xAAAAAAAA, m.x);
248 Expect.equals(0xAAAAAAAA, m.y);
249 Expect.equals(0xAAAAAAAA, m.z);
250 Expect.equals(0xAAAAAAAA, m.w);
251 Expect.equals(0x55555555, n.x);
252 Expect.equals(0x55555555, n.y);
253 Expect.equals(0x55555555, n.z);
254 Expect.equals(0x55555555, n.w);
255 Expect.equals(true, n.flagX);
256 Expect.equals(true, n.flagY);
257 Expect.equals(true, n.flagZ);
258 Expect.equals(true, n.flagW);
259 var o = m|n; // or
260 Expect.equals(0xFFFFFFFF, o.x);
261 Expect.equals(0xFFFFFFFF, o.y);
262 Expect.equals(0xFFFFFFFF, o.z);
263 Expect.equals(0xFFFFFFFF, o.w);
264 Expect.equals(true, o.flagX);
265 Expect.equals(true, o.flagY);
266 Expect.equals(true, o.flagZ);
267 Expect.equals(true, o.flagW);
268 o = m&n; // and
269 Expect.equals(0x0, o.x);
270 Expect.equals(0x0, o.y);
271 Expect.equals(0x0, o.z);
272 Expect.equals(0x0, o.w);
273 n = n.withX(0xAAAAAAAA);
274 n = n.withY(0xAAAAAAAA);
275 n = n.withZ(0xAAAAAAAA);
276 n = n.withW(0xAAAAAAAA);
277 Expect.equals(0xAAAAAAAA, n.x);
278 Expect.equals(0xAAAAAAAA, n.y);
279 Expect.equals(0xAAAAAAAA, n.z);
280 Expect.equals(0xAAAAAAAA, n.w);
281 o = m^n; // xor
282 Expect.equals(0x0, o.x);
283 Expect.equals(0x0, o.y);
284 Expect.equals(0x0, o.z);
285 Expect.equals(0x0, o.w);
286 Expect.equals(false, o.flagX);
287 Expect.equals(false, o.flagY);
288 Expect.equals(false, o.flagZ);
289 Expect.equals(false, o.flagW);
290 }
291
292 testSetters() {
293 var f = new Float32x4.zero();
294 Expect.equals(0.0, f.x);
295 Expect.equals(0.0, f.y);
296 Expect.equals(0.0, f.z);
297 Expect.equals(0.0, f.w);
298 f = f.withX(4.0);
299 Expect.equals(4.0, f.x);
300 f = f.withY(3.0);
301 Expect.equals(3.0, f.y);
302 f = f.withZ(2.0);
303 Expect.equals(2.0, f.z);
304 f = f.withW(1.0);
305 Expect.equals(1.0, f.w);
306 f = new Float32x4.zero();
307 f = f.withX(4.0).withZ(2.0).withW(1.0).withY(3.0);
308 Expect.equals(4.0, f.x);
309 Expect.equals(3.0, f.y);
310 Expect.equals(2.0, f.z);
311 Expect.equals(1.0, f.w);
312 var m = new Uint32x4.bool(false, false, false, false);
313 Expect.equals(false, m.flagX);
314 Expect.equals(false, m.flagY);
315 Expect.equals(false, m.flagZ);
316 Expect.equals(false, m.flagW);
317 m = m.withFlagX(true);
318 Expect.equals(true, m.flagX);
319 Expect.equals(false, m.flagY);
320 Expect.equals(false, m.flagZ);
321 Expect.equals(false, m.flagW);
322 m = m.withFlagY(true);
323 Expect.equals(true, m.flagX);
324 Expect.equals(true, m.flagY);
325 Expect.equals(false, m.flagZ);
326 Expect.equals(false, m.flagW);
327 m = m.withFlagZ(true);
328 Expect.equals(true, m.flagX);
329 Expect.equals(true, m.flagY);
330 Expect.equals(true, m.flagZ);
331 Expect.equals(false, m.flagW);
332 m = m.withFlagW(true);
333 Expect.equals(true, m.flagX);
334 Expect.equals(true, m.flagY);
335 Expect.equals(true, m.flagZ);
336 Expect.equals(true, m.flagW);
337 }
338
339 testGetters() {
340 var f = new Float32x4(1.0, 2.0, 3.0, 4.0);
341 Expect.equals(1.0, f.x);
342 Expect.equals(2.0, f.y);
343 Expect.equals(3.0, f.z);
344 Expect.equals(4.0, f.w);
345 var m = new Uint32x4.bool(false, true, true, false);
346 Expect.equals(false, m.flagX);
347 Expect.equals(true, m.flagY);
348 Expect.equals(true, m.flagZ);
349 Expect.equals(false, m.flagW);
350 }
351
352 main() {
353 for (int i = 0; i < 3000; i++) {
354 testGetters();
355 testSetters();
356 testBitOperators();
357 testConversions();
358 testSelect();
359 testShuffle();
360 testAdd();
361 testSub();
362 testNegate();
363 testMul();
364 testDiv();
365 testComparison();
366 testScale();
367 testClamp();
368 testAbs();
369 testMin();
370 testMax();
371 testSqrt();
372 testReciprocal();
373 testReciprocalSqrt();
374 }
375 }
OLDNEW
« no previous file with comments | « tests/lib/scalarlist/float32x4_list_test.dart ('k') | tests/lib/typeddata/float32x4_list_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698