js/src/tests/ecma_5/Array/length-nonwritable-redefine-nop.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:bad854918971
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");

mercurial