diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/jit-test/tests/typedarray/construct-with-arrays.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit-test/tests/typedarray/construct-with-arrays.js')
-rw-r--r-- | js/src/jit-test/tests/typedarray/construct-with-arrays.js | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/typedarray/construct-with-arrays.js b/js/src/jit-test/tests/typedarray/construct-with-arrays.js new file mode 100644 index 0000000000..290a27b3ea --- /dev/null +++ b/js/src/jit-test/tests/typedarray/construct-with-arrays.js @@ -0,0 +1,165 @@ +// Test TypedArray constructor when called with iterables or typed arrays. + +function testPackedArray() { + function test() { + var array = [ + 1, 2, 3, + 4, 5, 6, + 7, 8, 9, + ]; + for (var i = 0; i < 1000; ++i) { + var ta = new Int32Array(array); + assertEq(ta.length, array.length); + for (var j = 0; j < array.length; ++j) { + assertEq(ta[j], array[j]); + } + } + } + for (var i = 0; i < 2; ++i) { + test(); + } +} +testPackedArray(); + +function testHoleArray() { + function test() { + var array = [ + 1, /* hole */, 3, + 4, /* hole */, 6, + 7, /* hole */, 9, + ]; + for (var i = 0; i < 1000; ++i) { + var ta = new Int32Array(array); + assertEq(ta.length, array.length); + for (var j = 0; j < array.length; ++j) { + assertEq(ta[j], array[j] || 0); + } + } + } + for (var i = 0; i < 2; ++i) { + test(); + } +} +testHoleArray(); + +function testTypedArraySameType() { + function test() { + var array = new Int32Array([ + 1, 2, 3, + 4, 5, 6, + 7, 8, 9, + ]); + for (var i = 0; i < 1000; ++i) { + var ta = new Int32Array(array); + assertEq(ta.length, array.length); + for (var j = 0; j < array.length; ++j) { + assertEq(ta[j], array[j]); + } + } + } + for (var i = 0; i < 2; ++i) { + test(); + } +} +testTypedArraySameType(); + +function testTypedArrayDifferentType() { + function test() { + var array = new Float32Array([ + 1, 2, 3, + 4, 5, 6, + 7, 8, 9, + ]); + for (var i = 0; i < 1000; ++i) { + var ta = new Int32Array(array); + assertEq(ta.length, array.length); + for (var j = 0; j < array.length; ++j) { + assertEq(ta[j], array[j]); + } + } + } + for (var i = 0; i < 2; ++i) { + test(); + } +} +testTypedArrayDifferentType(); + +function testIterable() { + function test() { + var array = [ + 1, 2, 3, + 4, 5, 6, + 7, 8, 9, + ]; + array = Object.defineProperties({ + [Symbol.iterator]() { + var index = 0; + return { + next() { + var done = index >= array.length; + var value = !done ? array[index++] : undefined; + return {done, value}; + } + }; + } + }, Object.getOwnPropertyDescriptors(array)); + + for (var i = 0; i < 1000; ++i) { + var ta = new Int32Array(array); + assertEq(ta.length, array.length); + for (var j = 0; j < array.length; ++j) { + assertEq(ta[j], array[j]); + } + } + } + for (var i = 0; i < 2; ++i) { + test(); + } +} +testIterable(); + +function testWrappedArray() { + var g = newGlobal(); + + function test() { + var array = new g.Array( + 1, 2, 3, + 4, 5, 6, + 7, 8, 9, + ); + for (var i = 0; i < 1000; ++i) { + var ta = new Int32Array(array); + assertEq(ta.length, array.length); + for (var j = 0; j < array.length; ++j) { + assertEq(ta[j], array[j]); + } + } + } + for (var i = 0; i < 2; ++i) { + test(); + } +} +testWrappedArray(); + +function testWrappedTypedArray() { + var g = newGlobal(); + + function test() { + var array = new g.Int32Array([ + 1, 2, 3, + 4, 5, 6, + 7, 8, 9, + ]); + for (var i = 0; i < 1000; ++i) { + var ta = new Int32Array(array); + assertEq(ta.length, array.length); + for (var j = 0; j < array.length; ++j) { + assertEq(ta[j], array[j]); + } + } + } + for (var i = 0; i < 2; ++i) { + test(); + } +} +testWrappedTypedArray(); |