| <!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> |