| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>Typed Arrays Test: ArrayBuffer properties</title> |
| <link rel="author" title="Intel" href="http://www.intel.com"> |
| <link rel="help" href="https://www.khronos.org/registry/typedarray/specs/latest/#5"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| |
| test(function () { |
| var intLen = 8; |
| var abuffer = new ArrayBuffer(intLen); |
| |
| //byteLength |
| test(function () { |
| var len = abuffer.byteLength; |
| abuffer.byteLength = len + 1; |
| assert_equals(len, intLen, "the byteLength of ArrayBuffer"); |
| assert_equals(abuffer.byteLength, len, "the byteLength of ArrayBuffer"); |
| }, "Check if the byteLength is fixed at construction time and readonly"); |
| |
| //slice() |
| test(function () { |
| var b = abuffer.slice(2); |
| assert_true(b instanceof ArrayBuffer, "Returns a new ArrayBuffer"); |
| assert_equals(b.byteLength, intLen-2, "The byteLength of ArrayBuffer"); |
| }, "Check if the new ArrayBuffer contains all bytes from begin to the end of this ArrayBuffer when the end is unspecified"); |
| |
| test(function () { |
| var b = abuffer.slice(2, 6); |
| assert_true(b instanceof ArrayBuffer, "Returns a new ArrayBuffer"); |
| assert_equals(b.byteLength, 4, "The byteLength of ArrayBuffer"); |
| }, "Check if the new ArrayBuffer contains the bytes from begin to the end of this ArrayBuffer when the end is specified"); |
| |
| test(function () { |
| b = abuffer.slice(2, 10); |
| assert_equals(b.byteLength, 6, "The byteLength of ArrayBuffer"); |
| }, "Check if the slice range specified by the begin and end values is clamped to the valid index range for the current array"); |
| |
| test(function () { |
| var b = abuffer.slice(2, -1); |
| assert_equals(b.byteLength, 5, "The byteLength of ArrayBuffer"); |
| b = abuffer.slice(-2, -1); |
| assert_equals(b.byteLength, 1, "The byteLength of ArrayBuffer"); |
| }, "Check if it refers to an index from the end of the array when either begin or end is negative"); |
| |
| test(function () { |
| var b = abuffer.slice(4, 2); |
| assert_equals(b.byteLength, 0, "The byteLength of ArrayBuffer"); |
| b = abuffer.slice(-1, -2); |
| assert_equals(b.byteLength, 0, "The byteLength of ArrayBuffer"); |
| }, "Check if the length is clamped to zero when the computed length of the new ArrayBuffer is negative"); |
| |
| //static isView() |
| test(function () { |
| var int8a = new Int8Array(8); |
| assert_true(ArrayBuffer.isView(int8a), "The return value of ArrayBufferView.isView"); |
| }, "Check if the isView returns true when the value is an object implementing the ArrayBufferView interface"); |
| |
| test(function () { |
| var arr = new Array(8); |
| assert_false(ArrayBuffer.isView(arr), "The return value of ArrayBufferView.isView"); |
| }, "Check if the isView returns false when the value is an object not implementing the ArrayBufferView interface"); |
| }); |
| |
| </script> |