summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/JSON/stringify-gap.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/non262/JSON/stringify-gap.js')
-rw-r--r--js/src/tests/non262/JSON/stringify-gap.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/js/src/tests/non262/JSON/stringify-gap.js b/js/src/tests/non262/JSON/stringify-gap.js
new file mode 100644
index 0000000000..8480b4b3ee
--- /dev/null
+++ b/js/src/tests/non262/JSON/stringify-gap.js
@@ -0,0 +1,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!");