|
1 // Any copyright is dedicated to the Public Domain. |
|
2 // http://creativecommons.org/licenses/publicdomain/ |
|
3 |
|
4 var gTestfile = 'stringify-replacer-array-skipped-element.js'; |
|
5 //----------------------------------------------------------------------------- |
|
6 var BUGNUMBER = 648471; |
|
7 var summary = |
|
8 "Better/more correct handling for replacer arrays with getter array index " + |
|
9 "properties"; |
|
10 |
|
11 print(BUGNUMBER + ": " + summary); |
|
12 |
|
13 /************** |
|
14 * BEGIN TEST * |
|
15 **************/ |
|
16 |
|
17 assertEq(JSON.stringify({ 3: 3, 4: 4 }, |
|
18 ["3", { toString: function() { return "4" } }]), |
|
19 '{"3":3}'); |
|
20 |
|
21 assertEq(JSON.stringify({ 3: 3, true: 4 }, ["3", true]), |
|
22 '{"3":3}'); |
|
23 |
|
24 assertEq(JSON.stringify({ 3: 3, true: 4 }, ["3", "true", true]), |
|
25 '{"3":3,"true":4}'); |
|
26 |
|
27 assertEq(JSON.stringify({ 3: 3, true: 4 }, ["3", true, "true"]), |
|
28 '{"3":3,"true":4}'); |
|
29 |
|
30 assertEq(JSON.stringify({ 3: 3, false: 4 }, ["3", false]), |
|
31 '{"3":3}'); |
|
32 |
|
33 assertEq(JSON.stringify({ 3: 3, false: 4 }, ["3", "false", false]), |
|
34 '{"3":3,"false":4}'); |
|
35 |
|
36 assertEq(JSON.stringify({ 3: 3, false: 4 }, ["3", false, "false"]), |
|
37 '{"3":3,"false":4}'); |
|
38 |
|
39 assertEq(JSON.stringify({ 3: 3, undefined: 4 }, ["3", undefined]), |
|
40 '{"3":3}'); |
|
41 |
|
42 assertEq(JSON.stringify({ 3: 3, undefined: 4 }, ["3", "undefined", undefined]), |
|
43 '{"3":3,"undefined":4}'); |
|
44 |
|
45 assertEq(JSON.stringify({ 3: 3, undefined: 4 }, ["3", undefined, "undefined"]), |
|
46 '{"3":3,"undefined":4}'); |
|
47 |
|
48 assertEq(JSON.stringify({ 3: 3, null: 4 }, ["3", null]), |
|
49 '{"3":3}'); |
|
50 |
|
51 assertEq(JSON.stringify({ 3: 3, null: 4 }, ["3", "null", null]), |
|
52 '{"3":3,"null":4}'); |
|
53 |
|
54 assertEq(JSON.stringify({ 3: 3, null: 4 }, ["3", null, "null"]), |
|
55 '{"3":3,"null":4}'); |
|
56 |
|
57 /******************************************************************************/ |
|
58 |
|
59 if (typeof reportCompare === "function") |
|
60 reportCompare(true, true); |
|
61 |
|
62 print("Tests complete"); |