From 71e40aad5055b51c36d5c654de94b786c1f7288d Mon Sep 17 00:00:00 2001 From: Leo Balter Date: Wed, 28 Aug 2019 17:37:19 -0300 Subject: [PATCH] Fix circular tests for JSON.stringify (#2315) Ref #2168 --- .../replacer-function-array-circular.js | 26 +++---------------- .../replacer-function-object-circular.js | 18 +++++-------- .../stringify/value-tojson-array-circular.js | 16 +++--------- .../stringify/value-tojson-object-circular.js | 25 +++++------------- 4 files changed, 21 insertions(+), 64 deletions(-) diff --git a/test/built-ins/JSON/stringify/replacer-function-array-circular.js b/test/built-ins/JSON/stringify/replacer-function-array-circular.js index 1af92fcea1..a6e2771287 100644 --- a/test/built-ins/JSON/stringify/replacer-function-array-circular.js +++ b/test/built-ins/JSON/stringify/replacer-function-array-circular.js @@ -25,29 +25,11 @@ info: | 1. If stack contains value, throw a TypeError exception because the structure is cyclical. ---*/ -var direct = []; -var directReplacer = function(_key, value) { - if (value === direct) { - return [direct]; - } - - return value; +var circular = [{}]; +var circularReplacer = function(k, v) { + return circular; }; assert.throws(TypeError, function() { - JSON.stringify(direct, directReplacer); -}); - -var arr = []; -var indirect = [[arr]]; -var indirectReplacer = function(_key, value) { - if (value === arr) { - return [indirect]; - } - - return value; -}; - -assert.throws(TypeError, function() { - JSON.stringify(indirect, indirectReplacer); + JSON.stringify(circular, circularReplacer); }); diff --git a/test/built-ins/JSON/stringify/replacer-function-object-circular.js b/test/built-ins/JSON/stringify/replacer-function-object-circular.js index cba4ac2478..7510def987 100644 --- a/test/built-ins/JSON/stringify/replacer-function-object-circular.js +++ b/test/built-ins/JSON/stringify/replacer-function-object-circular.js @@ -25,13 +25,9 @@ info: | 1. If stack contains value, throw a TypeError exception because the structure is cyclical. ---*/ -var direct = {}; -var directReplacer = function(_key, value) { - if (value === direct) { - return {prop: direct}; - } - - return value; +var direct = {prop: {}}; +var directReplacer = function(k, v) { + return direct; }; assert.throws(TypeError, function() { @@ -39,10 +35,10 @@ assert.throws(TypeError, function() { }); var indirect = {p1: {p2: {}}}; -var indirectReplacer = function(_key, value) { - if (value === indirect.p1.p2) { - return {p3: indirect}; - } +var indirectReplacer = function(key, value) { + if (key === 'p2') { + return indirect; + } return value; }; diff --git a/test/built-ins/JSON/stringify/value-tojson-array-circular.js b/test/built-ins/JSON/stringify/value-tojson-array-circular.js index 54b052736d..21890f8119 100644 --- a/test/built-ins/JSON/stringify/value-tojson-array-circular.js +++ b/test/built-ins/JSON/stringify/value-tojson-array-circular.js @@ -27,21 +27,13 @@ info: | 1. If stack contains value, throw a TypeError exception because the structure is cyclical. ---*/ -var direct = []; -direct.toJSON = function() { - return [direct]; -}; - -assert.throws(TypeError, function() { - JSON.stringify(direct); -}); - var arr = []; +var circular = [arr]; + arr.toJSON = function() { - return [indirect]; + return circular; }; -var indirect = [[arr]]; assert.throws(TypeError, function() { - JSON.stringify(indirect); + JSON.stringify(circular); }); diff --git a/test/built-ins/JSON/stringify/value-tojson-object-circular.js b/test/built-ins/JSON/stringify/value-tojson-object-circular.js index 2d20b92fd3..7cb2c8be0f 100644 --- a/test/built-ins/JSON/stringify/value-tojson-object-circular.js +++ b/test/built-ins/JSON/stringify/value-tojson-object-circular.js @@ -27,26 +27,13 @@ info: | 1. If stack contains value, throw a TypeError exception because the structure is cyclical. ---*/ -var direct = { - toJSON: function() { - return {prop: direct}; - }, +var obj = {}; +var circular = { prop: obj }; + +obj.toJSON = function() { + return circular; }; assert.throws(TypeError, function() { - JSON.stringify(direct); -}); - -var indirect = { - p1: { - p2: { - toJSON: function() { - return {p3: indirect}; - }, - }, - }, -}; - -assert.throws(TypeError, function() { - JSON.stringify(indirect); + JSON.stringify(circular); });