1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-15 14:34:59 +00:00
serenity/Tests/LibWeb/Text/input/HTML/StructuredClone-object-primitives.html

47 lines
1.8 KiB
HTML

<script src="../include.js"></script>
<script>
test(() => {
println(structuredClone(new Boolean(true)));
println(structuredClone(new Boolean(false)));
println(structuredClone(new Number(123)));
println(structuredClone(new Number(123.456)));
println(structuredClone(new String("This is a String object")));
println(structuredClone(BigInt("0x1fffffffffffff")));
println(structuredClone(Date.UTC(2023, 7, 23)));
println(structuredClone(/abc/gimsuy));
println(structuredClone(new Error()));
println(structuredClone(new URIError("hello")));
println(structuredClone(JSON.stringify({"a": "b", 1: 2})));
println(structuredClone([1, 4, "aaaa"]));
println(structuredClone(new Set(["a", "b", "c"])).has("b"));
println(structuredClone(new Map([["a", 0], ["b", 1], ["c", 2]])).get("b"));
const obj = {"a": 1, "c": 3};
obj["b"] = obj;
const result = structuredClone(obj);
println(result === result["b"]);
{
let arrayBuffer = new ArrayBuffer(6);
for (let i = 0; i < arrayBuffer.byteLength; ++i) {
arrayBuffer[i] = i;
}
let arrayClone = structuredClone(arrayBuffer);
for (let i = 0; i < arrayBuffer.byteLength; ++i) {
if (arrayBuffer[i] !== arrayBuffer[i]) {
println("FAILED");
}
}
// FIXME: This should print something like ArrayBuffer { byteLength: 6 }
println(arrayClone);
}
try {
structuredClone(Symbol("foo"));
println("FAILED")
}
catch(e) {
println("ERROR: " + e.name + ": " + e.message)
}
});
</script>