summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/ArrayBuffer/CloneArrayBuffer.js
blob: 480314ad8eeb6bed654bb4d02fac96e243506aa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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);