Index: test/mjsunit/json.js |
diff --git a/test/mjsunit/json.js b/test/mjsunit/json.js |
index 56562e7694b28423749811829d0b9b760584d2c4..5af6a568ef2edaffe56d7409fb9e7690a745347f 100644 |
--- a/test/mjsunit/json.js |
+++ b/test/mjsunit/json.js |
@@ -200,8 +200,10 @@ TestInvalid('"Unterminated string'); |
TestInvalid('"Unterminated string\\"'); |
TestInvalid('"Unterminated string\\\\\\"'); |
-// Test bad JSON that would be good JavaScript (ES5). |
+// JavaScript RegExp literals not valid in JSON. |
+TestInvalid('/true/'); |
+// Test bad JSON that would be good JavaScript (ES5). |
TestInvalid("{true:42}"); |
TestInvalid("{false:42}"); |
TestInvalid("{null:42}"); |
@@ -211,7 +213,6 @@ TestInvalid("{0:42}"); |
TestInvalid("{-1:42}"); |
// Test for trailing garbage detection. |
- |
TestInvalid('42 px'); |
TestInvalid('42 .2'); |
TestInvalid('42 2'); |
@@ -277,9 +278,26 @@ assertEquals('{\n "a": "b",\n "c": "d"\n}', |
JSON.stringify({a:"b",c:"d"}, null, 1)); |
assertEquals('{"y":6,"x":5}', JSON.stringify({x:5,y:6}, ['y', 'x'])); |
+// The gap is capped at ten characters if specified as string. |
+assertEquals('{\n "a": "b",\n "c": "d"\n}', |
+ JSON.stringify({a:"b",c:"d"}, null, |
+ " /*characters after 10th*/")); |
+ |
+//The gap is capped at ten characters if specified as number. |
+assertEquals('{\n "a": "b",\n "c": "d"\n}', |
+ JSON.stringify({a:"b",c:"d"}, null, 15)); |
+ |
+// Replaced wrapped primitives are unwrapped. |
+function newx(k, v) { return (k == "x") ? new v(42) : v; } |
+assertEquals('{"x":"42"}', JSON.stringify({x: String}, newx)); |
+assertEquals('{"x":42}', JSON.stringify({x: Number}, newx)); |
+assertEquals('{"x":true}', JSON.stringify({x: Boolean}, newx)); |
+ |
assertEquals(undefined, JSON.stringify(undefined)); |
assertEquals(undefined, JSON.stringify(function () { })); |
Rico
2010/02/03 12:57:23
Maybe check for stringify on an array with undefin
Lasse Reichstein
2010/02/03 13:18:30
Check added for behavior of undefined and function
|
+assertThrows("var a = [];a[0] = a;JSON.stringify(a);", TypeError); |
Rico
2010/02/03 12:57:23
Don't we check the same in line 269
Lasse Reichstein
2010/02/03 13:18:30
We do. Removed.
|
+ |
TestInvalid('1); throw "foo"; (1'); |
var x = 0; |