/*
* Any copyright is dedicated to the Public Domain .
* http : //creativecommons.org/licenses/publicdomain/
*/
load(libdir + "asserts.js" );
var map = new Map();
map.set("self" , map);
var magic = deserialize(serialize(map));
assertEq(magic.get("self" ), magic);
assertEq(magic.size, 1 );
map = new Map();
map.set(map, "self" );
magic = deserialize(serialize(map));
assertEq(magic.get(magic), "self" );
assertEq(magic.size, 1 );
var values = [
"a" , "\uDEFF" , undefined, null , -3 .5 , true , false , NaN, 155 , -2
]
map = new Map();
for (var value of values) {
map.set(value, value);
}
magic = deserialize(serialize(map));
var i = 0 ;
for (value of magic) {
assertEq(value[0 ], value[1 ]);
assertEq(value[0 ], values[i++]);
}
assertDeepEq([...map.keys()], [...magic.keys()]);
assertDeepEq([...map.values()], [...magic.values()]);
var obj = {a: 1 };
obj.map = new Map();
obj.map.set("obj" , obj);
magic = deserialize(serialize(obj));
assertEq(magic.map.get("obj" ), magic);
assertEq(magic.a, 1 );
map = new Map();
map.set("a" , new Number(1 ));
map.set("b" , new String("aaaa" ));
map.set("c" , new Date(NaN));
magic = deserialize(serialize(map));
assertEq(magic.get("a" ).valueOf(), 1 );
assertEq(magic.get("b" ).valueOf(), "aaaa" );
assertEq(magic.get("c" ).valueOf(), NaN);
assertDeepEq([...map.keys()], ["a" , "b" , "c" ]);
map = new Map();
map.set("x" , new Map());
map.get("x" ).set("x" , map);
map.get("x" ).set("b" , null );
magic = deserialize(serialize(map));
assertEq(magic.get("x" ).get("x" ), magic);
assertEq(magic.get("x" ).get("b" ), null );
map = new Map()
map.set({a: 1 }, "b" );
magic = deserialize(serialize(map));
obj = [...magic.keys()][0 ];
assertEq(obj.a, 1 );
assertEq(magic.get(obj), "b" );
// Make sure expandos aren't cloned (Bug 1041172)
map = new Map();
map.a = "aaaaa" ;
magic = deserialize(serialize(map));
assertEq("a" in magic, false );
assertEq(Object.keys(magic).length, 0 );
// Busted [[Prototype]] shouldn't matter
map = new Map();
Object.setPrototypeOf(map, null );
Map.prototype.set.call(map, "self" , map);
magic = deserialize(serialize(map));
assertEq(magic.get("self" ), magic);
assertEq(magic.size, 1 );
// Can't fuzz around with Map after it is cloned
obj = {
a: new Map(),
get b() {
obj.a.delete ("test" );
return "invoked" ;
}
}
obj.a.set("test" , "hello" );
assertEq(obj.a.has("test" ), true );
magic = deserialize(serialize(obj));
assertEq(obj.a.has("test" ), false );
assertEq(magic.a.size, 1 );
assertEq(magic.a.get("test" ), "hello" );
assertEq([...magic.a.keys()].toString(), "test" );
assertEq(magic.b, "invoked" );
Messung V0.5 in Prozent C=91 H=89 G=89
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland