summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/JSON/immutable-reviver.js
blob: b9f4abc31ca056e1d7e9d9da9c1459d7e5f911dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// |reftest| skip-if(!this.hasOwnProperty("Record"))

const values = [];

const result = JSON.parseImmutable('{"x":1,"a":[1,2,{},[]]}', function (k, v) {
	values.push(#[k, v]);
	return v;
});

assertEq(result, #{x: 1, a: #[1, 2, #{}, #[]]});

const next = () => values.shift();
assertEq(next(), #["x", 1]);
assertEq(next(), #["0", 1]);
assertEq(next(), #["1", 2]);
assertEq(next(), #["2", #{}]);
assertEq(next(), #["3", #[]]);
assertEq(next(), #["a", #[1, 2, #{}, #[]]]);
assertEq(next(), #["", result]);
assertEq(values.length, 0);

if (typeof reportCompare === "function") reportCompare(0, 0);