blob: a5d0604e90499a80e8a115165a3a9acdad149f74 [file] [log] [blame]
<!doctype html>
<title>Typed Array constructors</title>
<link rel=author href=mailto:Ms2ger@gmail.com title=Ms2ger>
<link rel=help href=https://www.khronos.org/registry/typedarray/specs/latest/#7>
<link rel=help href=http://dev.w3.org/2006/webapi/WebIDL/#dfn-overload-resolution-algorithm>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
<script>
var args = [
/* numbers */
[NaN, 0], [+Infinity, 0], [-Infinity, 0], [+0, 0], [-0, 0], // Step 2
[-0.4, 0], [-0.9, 0], [1.1, 1], [2.9, 2], // Step 3
[1, 1], [-0xF1000000, 0], // Step 4
/* strings */
["1", 1], ["1e2", 100],
/* null, undefined, booleans */
[undefined, 0], [null, 0], [false, 0], [true, 1],
/* objects */
[{}, 0], [{ length: 2, 0: 0, 1: 0 }, 0], [[0, 0], 2]
];
var interfaces = [
"Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array",
"Int32Array", "Uint32Array", "Float32Array", "Float64Array"
];
test(function() {
interfaces.concat(["ArrayBuffer", "DataView"]).forEach(function(i) {
test(function() {
// XXX The spec is wrong here.
assert_throws(new TypeError(), function() {
new window[i]();
});
}, "Constructing interface " + i + " with no arguments should throw.");
});
interfaces.forEach(function(i) {
args.forEach(function(arg, j) {
var input = arg[0], expected = arg[1];
test(function() {
var ta = new window[i](input);
assert_equals(ta.length, expected);
}, "The argument " + format_value(input) + " (" + j + ") should be interpreted as " +
expected + " for interface " + i + ".");
});
});
});
</script>