|
1 /* |
|
2 * Any copyright is dedicated to the Public Domain. |
|
3 * http://creativecommons.org/licenses/publicdomain/ |
|
4 * Contributor: |
|
5 * Jeff Walden <jwalden+code@mit.edu> |
|
6 */ |
|
7 |
|
8 //----------------------------------------------------------------------------- |
|
9 var BUGNUMBER = 858381; |
|
10 var summary = "No-op array length redefinition"; |
|
11 |
|
12 print(BUGNUMBER + ": " + summary); |
|
13 |
|
14 /************** |
|
15 * BEGIN TEST * |
|
16 **************/ |
|
17 |
|
18 var arr; |
|
19 |
|
20 // initializedLength == capacity == length |
|
21 // 6 == 6 == 6 |
|
22 arr = Object.defineProperty([0, 1, 2, 3, 4, 5], "length", { writable: false }); |
|
23 Object.defineProperty(arr, "length", { value: 6 }); |
|
24 Object.defineProperty(arr, "length", { writable: false }); |
|
25 Object.defineProperty(arr, "length", { configurable: false }); |
|
26 Object.defineProperty(arr, "length", { writable: false, configurable: false }); |
|
27 Object.defineProperty(arr, "length", { writable: false, value: 6 }); |
|
28 Object.defineProperty(arr, "length", { configurable: false, value: 6 }); |
|
29 Object.defineProperty(arr, "length", { writable: false, configurable: false, value: 6 }); |
|
30 |
|
31 // initializedLength == capacity < length |
|
32 // 6 == 6 < 8 |
|
33 arr = Object.defineProperty([0, 1, 2, 3, 4, 5], "length", { value: 8, writable: false }); |
|
34 Object.defineProperty(arr, "length", { value: 8 }); |
|
35 Object.defineProperty(arr, "length", { writable: false }); |
|
36 Object.defineProperty(arr, "length", { configurable: false }); |
|
37 Object.defineProperty(arr, "length", { writable: false, configurable: false }); |
|
38 Object.defineProperty(arr, "length", { writable: false, value: 8 }); |
|
39 Object.defineProperty(arr, "length", { configurable: false, value: 8 }); |
|
40 Object.defineProperty(arr, "length", { writable: false, configurable: false, value: 8 }); |
|
41 |
|
42 // initializedLength < capacity == length |
|
43 // 7 < 8 == 8 |
|
44 arr = Object.defineProperty([0, 1, 2, 3, 4, 5, 6, /* hole */, ], "length", |
|
45 { value: 8, writable: false }); |
|
46 Object.defineProperty(arr, "length", { value: 8 }); |
|
47 Object.defineProperty(arr, "length", { writable: false }); |
|
48 Object.defineProperty(arr, "length", { configurable: false }); |
|
49 Object.defineProperty(arr, "length", { writable: false, configurable: false }); |
|
50 Object.defineProperty(arr, "length", { writable: false, value: 8 }); |
|
51 Object.defineProperty(arr, "length", { configurable: false, value: 8 }); |
|
52 Object.defineProperty(arr, "length", { writable: false, configurable: false, value: 8 }); |
|
53 |
|
54 // initializedLength < capacity < length |
|
55 // 3 < 6 < 8 |
|
56 arr = Object.defineProperty([0, 1, 2], "length", { value: 8, writable: false }); |
|
57 Object.defineProperty(arr, "length", { value: 8 }); |
|
58 Object.defineProperty(arr, "length", { writable: false }); |
|
59 Object.defineProperty(arr, "length", { configurable: false }); |
|
60 Object.defineProperty(arr, "length", { writable: false, configurable: false }); |
|
61 Object.defineProperty(arr, "length", { writable: false, value: 8 }); |
|
62 Object.defineProperty(arr, "length", { configurable: false, value: 8 }); |
|
63 Object.defineProperty(arr, "length", { writable: false, configurable: false, value: 8 }); |
|
64 |
|
65 /******************************************************************************/ |
|
66 |
|
67 if (typeof reportCompare === "function") |
|
68 reportCompare(true, true); |
|
69 |
|
70 print("Tests complete"); |