|
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