1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
// Any copyright is dedicated to the Public Domain.
// http://creativecommons.org/licenses/publicdomain/
var gTestfile = 'stringify-gap.js';
//-----------------------------------------------------------------------------
var BUGNUMBER = 584909;
var summary =
"JSON.stringify(_1, _2, numberGreaterThanOne) produces wrong output";
print(BUGNUMBER + ": " + summary);
/**************
* BEGIN TEST *
**************/
var LF = "\n";
var GAP = " ";
var obj = { a: { b: [1, 2], c: { d: 3, e: 4 }, f: [], g: {}, h: [5], i: { j: 6 } } };
var expected =
'{\n' +
' "a": {\n' +
' "b": [\n' +
' 1,\n' +
' 2\n' +
' ],\n' +
' "c": {\n' +
' "d": 3,\n' +
' "e": 4\n' +
' },\n' +
' "f": [],\n' +
' "g": {},\n' +
' "h": [\n' +
' 5\n' +
' ],\n' +
' "i": {\n' +
' "j": 6\n' +
' }\n' +
' }\n' +
'}';
assertEq(JSON.stringify(obj, null, 3), expected);
assertEq(JSON.stringify(obj, null, " "), expected);
obj = [1, 2, 3];
String.prototype.toString = function() { return "--"; };
assertEq(JSON.stringify(obj, null, new String(" ")), "[\n--1,\n--2,\n--3\n]");
Number.prototype.valueOf = function() { return 0; };
assertEq(JSON.stringify(obj, null, new Number(3)), "[1,2,3]");
/******************************************************************************/
if (typeof reportCompare === "function")
reportCompare(true, true);
print("All tests passed!");
|