summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/json-parse-object-edge-cases.js
blob: 2a93cd421118150fba6ddf924a3b51c6e035093a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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}]`);
}