js/src/tests/ecma_5/JSON/stringify-replacer-array-boxed-elements.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:01be723624e8
1 // Any copyright is dedicated to the Public Domain.
2 // http://creativecommons.org/licenses/publicdomain/
3
4 var gTestfile = 'stringify-replacer-array-boxed-elements.js';
5 //-----------------------------------------------------------------------------
6 var BUGNUMBER = 648471;
7 var summary = "Boxed-string/number objects in replacer arrays";
8
9 print(BUGNUMBER + ": " + summary);
10
11 /**************
12 * BEGIN TEST *
13 **************/
14
15 var S = new String(3);
16 var N = new Number(4);
17
18 assertEq(JSON.stringify({ 3: 3, 4: 4 }, [S]),
19 '{"3":3}');
20 assertEq(JSON.stringify({ 3: 3, 4: 4 }, [N]),
21 '{"4":4}');
22
23 Number.prototype.toString = function() { return 3; };
24 assertEq(JSON.stringify({ 3: 3, 4: 4 }, [N]),
25 '{"3":3}');
26
27 String.prototype.toString = function() { return 4; };
28 assertEq(JSON.stringify({ 3: 3, 4: 4 }, [S]),
29 '{"4":4}');
30
31 Number.prototype.toString = function() { return new String(42); };
32 assertEq(JSON.stringify({ 3: 3, 4: 4 }, [N]),
33 '{"4":4}');
34
35 String.prototype.toString = function() { return new Number(17); };
36 assertEq(JSON.stringify({ 3: 3, 4: 4 }, [S]),
37 '{"3":3}');
38
39 Number.prototype.toString = null;
40 assertEq(JSON.stringify({ 3: 3, 4: 4 }, [N]),
41 '{"4":4}');
42
43 String.prototype.toString = null;
44 assertEq(JSON.stringify({ 3: 3, 4: 4 }, [S]),
45 '{"3":3}');
46
47 Number.prototype.valueOf = function() { return 17; };
48 assertEq(JSON.stringify({ 4: 4, 17: 17 }, [N]),
49 '{"17":17}');
50
51 String.prototype.valueOf = function() { return 42; };
52 assertEq(JSON.stringify({ 3: 3, 42: 42 }, [S]),
53 '{"42":42}');
54
55 /******************************************************************************/
56
57 if (typeof reportCompare === "function")
58 reportCompare(true, true);
59
60 print("Tests complete");

mercurial