Index: test/mjsunit/json.js |
diff --git a/test/mjsunit/json.js b/test/mjsunit/json.js |
index bead376f84da7b82796ec6cdd18ab94a26254bc8..a8688bc8a4b15c84d2417ea67ffb7e5dc3ef9af4 100644 |
--- a/test/mjsunit/json.js |
+++ b/test/mjsunit/json.js |
@@ -257,6 +257,39 @@ assertEquals("[1,2,[3,[4],5],6,7]", |
assertEquals("[2,4,[6,[8],10],12,14]", |
JSON.stringify([1, 2, [3, [4], 5], 6, 7], DoubleNumbers)); |
assertEquals('["a","ab","abc"]', JSON.stringify(["a","ab","abc"])); |
+assertEquals('{"a":1,"c":true}', |
+ JSON.stringify({ a : 1, |
+ b : function() { 1 }, |
+ c : true, |
+ d : function() { 2 } })); |
+assertEquals('[1,null,true,null]', |
+ JSON.stringify([1, function() { 1 }, true, function() { 2 }])); |
+assertEquals('"toJSON 123"', |
+ JSON.stringify({ toJSON : function() { return 'toJSON 123'; } })); |
+assertEquals('{"a":321}', |
+ JSON.stringify({ a : { toJSON : function() { return 321; } } })); |
+assertEquals('{"getter":123}', |
+ JSON.stringify({ get getter() { return 123; } })); |
+assertEquals('{"a":"abc","b":"\u1234bc"}', |
+ JSON.stringify({ a : "abc", b : "\u1234bc" })); |
+ |
+var a = { a : 1, b : 2 }; |
+delete a.a; |
+assertEquals('{"b":2}', JSON.stringify(a)); |
+ |
+var b = {}; |
+b.__proto__ = { toJSON : function() { return 321;} }; |
+assertEquals("321", JSON.stringify(b)); |
+ |
+var array = [""]; |
+var expected = '""'; |
+for (var i = 0; i < 10000; i++) { |
+ array.push(""); |
+ expected = '"",' + expected; |
+} |
+expected = '[' + expected + ']'; |
+assertEquals(expected, JSON.stringify(array)); |
+ |
var circular = [1, 2, 3]; |
circular[2] = circular; |
@@ -428,5 +461,3 @@ var o = JSON.parse('{"__proto__":5}'); |
assertEquals(Object.prototype, o.__proto__); // __proto__ isn't changed. |
assertEquals(0, Object.keys(o).length); // __proto__ isn't added as enumerable. |
- |
- |