|
1 // Check superficial features of Array.build. |
|
2 |
|
3 if (getBuildConfiguration().parallelJS) { |
|
4 load(libdir + "asserts.js"); |
|
5 |
|
6 var desc = Object.getOwnPropertyDescriptor(Array, "build"); |
|
7 assertEq(desc.configurable, true); |
|
8 assertEq(desc.enumerable, false); |
|
9 assertEq(desc.writable, true); |
|
10 assertEq(Array.build.length, 2); |
|
11 assertThrowsInstanceOf(() => new Array.build(), TypeError); // not a constructor |
|
12 |
|
13 // Must pass a function to second argument. |
|
14 for (let v of [undefined, null, false, "cow"]) |
|
15 assertThrowsInstanceOf(() => Array.build(1, v), TypeError); |
|
16 |
|
17 // The first argument must be a legal length. |
|
18 assertThrowsInstanceOf(() => Array.build(-1, function() {}), RangeError); |
|
19 |
|
20 // When the this-value passed in is not a constructor, the result is an array. |
|
21 for (let v of [undefined, null, false, "cow"]) |
|
22 assertEq(Array.isArray(Array.build.call(v, 1, function() {})), true); |
|
23 } |