summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_6/ArrayBuffer/CloneArrayBuffer.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/ecma_6/ArrayBuffer/CloneArrayBuffer.js')
-rw-r--r--js/src/tests/ecma_6/ArrayBuffer/CloneArrayBuffer.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/js/src/tests/ecma_6/ArrayBuffer/CloneArrayBuffer.js b/js/src/tests/ecma_6/ArrayBuffer/CloneArrayBuffer.js
new file mode 100644
index 000000000..480314ad8
--- /dev/null
+++ b/js/src/tests/ecma_6/ArrayBuffer/CloneArrayBuffer.js
@@ -0,0 +1,35 @@
+var BUGNUMBER = 1264941;
+var summary = 'CloneArrayBuffer should be called with byteLength of source typedArray';
+
+print(BUGNUMBER + ": " + summary);
+
+function test(ctor, byteLength) {
+ var abuf = new ctor(byteLength);
+ assertEq(abuf.byteLength, byteLength);
+
+ for (var byteOffset of [0, 16]) {
+ for (var elementLength = 0;
+ elementLength < (byteLength - byteOffset) / Float64Array.BYTES_PER_ELEMENT;
+ elementLength++) {
+ var a1 = new Float64Array(abuf, byteOffset, elementLength);
+ assertEq(a1.buffer.byteLength, byteLength);
+ assertEq(a1.byteLength, elementLength * Float64Array.BYTES_PER_ELEMENT);
+ assertEq(a1.byteOffset, byteOffset);
+
+ var a2 = new Float64Array(a1);
+ assertEq(a2.buffer.byteLength, a1.byteLength);
+ assertEq(a2.byteLength, a1.byteLength);
+ assertEq(a2.byteOffset, 0);
+ }
+ }
+}
+
+test(ArrayBuffer, 16);
+test(ArrayBuffer, 128);
+
+class MyArrayBuffer extends ArrayBuffer {}
+test(MyArrayBuffer, 16);
+test(MyArrayBuffer, 128);
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);