summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/json-parse-object-edge-cases.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/basic/json-parse-object-edge-cases.js')
-rw-r--r--js/src/jit-test/tests/basic/json-parse-object-edge-cases.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/basic/json-parse-object-edge-cases.js b/js/src/jit-test/tests/basic/json-parse-object-edge-cases.js
new file mode 100644
index 0000000000..2a93cd4211
--- /dev/null
+++ b/js/src/jit-test/tests/basic/json-parse-object-edge-cases.js
@@ -0,0 +1,49 @@
+// Array includes objects with duplicate keys and integer keys.
+let json = `[
+ {"x1": 1},
+ {"x2": 2},
+ {"x3": 3},
+ {"x1": 1, "y": 0},
+ {"x2": 1, "y": 0},
+ {"x3": 1, "y": 0},
+ {"x1": 1, "x1": 2, "y": 0},
+ {"x1": 1, "x1": 2, "y": 0},
+ {"x1": 1, "x1": 2, "y": 0},
+ {"0": 1, "x1": 1},
+ {"0": 1, "0": 2, "x1": 1},
+ {"0": 1, "0": 2, "x1": 1},
+ {"2147483648": 1},
+ {"2147483648": 2},
+ {"2147483648": 0, "x": 0, "2147483648": 3},
+ {"4294967295": 4},
+ {"4294967295": 5},
+ {"-1": 6},
+ {"-1": 7},
+ {"__proto__": 1},
+ {"__proto__": 2}
+]`;
+for (let i = 0; i < 3; i++) {
+ let res = JSON.parse(json);
+ assertEq(JSON.stringify(res),
+ `[{"x1":1},` +
+ `{"x2":2},` +
+ `{"x3":3},` +
+ `{"x1":1,"y":0},` +
+ `{"x2":1,"y":0},` +
+ `{"x3":1,"y":0},` +
+ `{"x1":2,"y":0},` +
+ `{"x1":2,"y":0},` +
+ `{"x1":2,"y":0},` +
+ `{"0":1,"x1":1},` +
+ `{"0":2,"x1":1},` +
+ `{"0":2,"x1":1},` +
+ `{"2147483648":1},` +
+ `{"2147483648":2},` +
+ `{"2147483648":3,"x":0},` +
+ `{"4294967295":4},` +
+ `{"4294967295":5},` +
+ `{"-1":6},` +
+ `{"-1":7},` +
+ `{"__proto__":1},` +
+ `{"__proto__":2}]`);
+}