|
2 | 2 | // for details. All rights reserved. Use of this source code is governed by a |
3 | 3 | // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
|
5 | | -// Tests typed-data buffer classes. |
| 5 | +@TestOn('!vm') |
6 | 6 |
|
7 | 7 | import "dart:typed_data"; |
8 | 8 |
|
9 | 9 | import "package:test/test.dart"; |
10 | 10 | import "package:typed_data/typed_buffers.dart"; |
11 | 11 |
|
12 | | -main() { |
13 | | - testUint(8, (l) => new Uint8Buffer(l)); |
14 | | - testInt(8, (l) => new Int8Buffer(l)); |
| 12 | +const List<int> browserSafeIntSamples = const [ |
| 13 | + 0x8000000000000000, // 2^63 |
| 14 | + 0x100000001, |
| 15 | + 0x100000000, // 2^32 |
| 16 | + 0x0ffffffff, |
| 17 | + 0xaaaaaaaa, |
| 18 | + 0x80000001, |
| 19 | + 0x80000000, // 2^31 |
| 20 | + 0x7fffffff, |
| 21 | + 0x55555555, |
| 22 | + 0x10001, |
| 23 | + 0x10000, // 2^16 |
| 24 | + 0x0ffff, |
| 25 | + 0xaaaa, |
| 26 | + 0x8001, |
| 27 | + 0x8000, // 2^15 |
| 28 | + 0x7fff, |
| 29 | + 0x5555, |
| 30 | + 0x101, |
| 31 | + 0x100, // 2^8 |
| 32 | + 0x0ff, |
| 33 | + 0xaa, |
| 34 | + 0x81, |
| 35 | + 0x80, // 2^7 |
| 36 | + 0x7f, |
| 37 | + 0x55, |
| 38 | + 0x02, |
| 39 | + 0x01, |
| 40 | + 0x00 |
| 41 | +]; |
| 42 | + |
| 43 | +void main() { |
| 44 | + initTests(browserSafeIntSamples); |
| 45 | +} |
| 46 | + |
| 47 | +void initTests(List<int> intSamples) { |
| 48 | + testUint(intSamples, 8, (l) => new Uint8Buffer(l)); |
| 49 | + testInt(intSamples, 8, (l) => new Int8Buffer(l)); |
15 | 50 | test("Uint8ClampedBuffer", () { |
16 | | - testIntBuffer(8, 0, 255, (l) => new Uint8ClampedBuffer(l), clampUint8); |
| 51 | + testIntBuffer( |
| 52 | + intSamples, 8, 0, 255, (l) => new Uint8ClampedBuffer(l), clampUint8); |
17 | 53 | }); |
18 | | - testUint(16, (l) => new Uint16Buffer(l)); |
19 | | - testInt(16, (l) => new Int16Buffer(l)); |
20 | | - testUint(32, (l) => new Uint32Buffer(l)); |
| 54 | + testUint(intSamples, 16, (l) => new Uint16Buffer(l)); |
| 55 | + testInt(intSamples, 16, (l) => new Int16Buffer(l)); |
| 56 | + testUint(intSamples, 32, (l) => new Uint32Buffer(l)); |
21 | 57 |
|
22 | | - testInt(32, (l) => new Int32Buffer(l)); |
| 58 | + testInt(intSamples, 32, (l) => new Int32Buffer(l)); |
23 | 59 |
|
24 | | - testUint(64, (l) => new Uint64Buffer(l), |
| 60 | + testUint(intSamples, 64, (l) => new Uint64Buffer(l), |
25 | 61 | // JS doesn't support 64-bit ints, so only test this on the VM. |
26 | 62 | testOn: "dart-vm"); |
27 | | - testInt(64, (l) => new Int64Buffer(l), |
| 63 | + testInt(intSamples, 64, (l) => new Int64Buffer(l), |
28 | 64 | // JS doesn't support 64-bit ints, so only test this on the VM. |
29 | 65 | testOn: "dart-vm"); |
30 | 66 |
|
@@ -185,42 +221,6 @@ const floatSamples = const [ |
185 | 221 | 16777215.0 |
186 | 222 | ]; |
187 | 223 |
|
188 | | -const List<int> intSamples = const [ |
189 | | - 0x0ffffffffffffffff, |
190 | | - 0xaaaaaaaaaaaaaaaa, |
191 | | - 0x8000000000000001, |
192 | | - 0x8000000000000000, // 2^63 |
193 | | - 0x7fffffffffffffff, |
194 | | - 0x5555555555555555, |
195 | | - 0x100000001, |
196 | | - 0x100000000, // 2^32 |
197 | | - 0x0ffffffff, |
198 | | - 0xaaaaaaaa, |
199 | | - 0x80000001, |
200 | | - 0x80000000, // 2^31 |
201 | | - 0x7fffffff, |
202 | | - 0x55555555, |
203 | | - 0x10001, |
204 | | - 0x10000, // 2^16 |
205 | | - 0x0ffff, |
206 | | - 0xaaaa, |
207 | | - 0x8001, |
208 | | - 0x8000, // 2^15 |
209 | | - 0x7fff, |
210 | | - 0x5555, |
211 | | - 0x101, |
212 | | - 0x100, // 2^8 |
213 | | - 0x0ff, |
214 | | - 0xaa, |
215 | | - 0x81, |
216 | | - 0x80, // 2^7 |
217 | | - 0x7f, |
218 | | - 0x55, |
219 | | - 0x02, |
220 | | - 0x01, |
221 | | - 0x00 |
222 | | -]; |
223 | | - |
224 | 224 | int clampUint8(x) => x < 0 ? 0 : x > 255 ? 255 : x; |
225 | 225 |
|
226 | 226 | void doubleEqual(x, y) { |
@@ -366,11 +366,12 @@ void testFloatBuffer( |
366 | 366 | }); |
367 | 367 | } |
368 | 368 |
|
369 | | -void testInt(int bits, buffer(int length), {String testOn}) { |
| 369 | +void testInt(List<int> intSamples, int bits, buffer(int length), |
| 370 | + {String testOn}) { |
370 | 371 | int min = -(1 << (bits - 1)); |
371 | 372 | int max = -(min + 1); |
372 | 373 | test("Int${bits}Buffer", () { |
373 | | - testIntBuffer(bits, min, max, buffer, intRounder(bits)); |
| 374 | + testIntBuffer(intSamples, bits, min, max, buffer, intRounder(bits)); |
374 | 375 | }, testOn: testOn); |
375 | 376 | } |
376 | 377 |
|
@@ -433,8 +434,8 @@ void testInt32x4Buffer(List<int> intSamples) { |
433 | 434 | }); |
434 | 435 | } |
435 | 436 |
|
436 | | -void testIntBuffer( |
437 | | - int bits, int min, int max, create(int length), int round(int val)) { |
| 437 | +void testIntBuffer(List<int> intSamples, int bits, int min, int max, |
| 438 | + create(int length), int round(int val)) { |
438 | 439 | assert(round(min) == min); |
439 | 440 | assert(round(max) == max); |
440 | 441 | // All int buffers default to the value 0. |
@@ -504,12 +505,13 @@ void testIntBuffer( |
504 | 505 | expect(buffer[1], equals(min)); |
505 | 506 | } |
506 | 507 |
|
507 | | -void testUint(int bits, buffer(int length), {String testOn}) { |
| 508 | +void testUint(List<int> intSamples, int bits, buffer(int length), |
| 509 | + {String testOn}) { |
508 | 510 | int min = 0; |
509 | 511 | var rounder = uintRounder(bits); |
510 | 512 | int max = rounder(-1); |
511 | 513 | test("Uint${bits}Buffer", () { |
512 | | - testIntBuffer(bits, min, max, buffer, rounder); |
| 514 | + testIntBuffer(intSamples, bits, min, max, buffer, rounder); |
513 | 515 | }, testOn: testOn); |
514 | 516 | } |
515 | 517 |
|
|
0 commit comments