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

51 lines
1.5 KiB
HTML

<script src="../include.js"></script>
<script>
const TYPED_ARRAYS = [
Uint8Array,
Uint8ClampedArray,
Uint16Array,
Uint32Array,
Int8Array,
Int16Array,
Int32Array,
Float32Array,
Float64Array,
];
const BIGINT_TYPED_ARRAYS = [BigUint64Array, BigInt64Array];
test(() => {
TYPED_ARRAYS.forEach(T => {
const a = new T([30, 40, 50, 60]);
let b = structuredClone(a)
if (!a.every((value, index) => value === b[index]))
println("FAIL")
println(`${b[Symbol.toStringTag]} ${b}`)
});
BIGINT_TYPED_ARRAYS.forEach(T => {
const a = new T([30n, 40n, 50n, 60n]);
let b = structuredClone(a)
if (!a.every((value, index) => value === b[index]))
println("FAIL")
println(`${b[Symbol.toStringTag]} ${b}`)
});
// Test DataView clone
let a = new ArrayBuffer(64);
for(let i = 0; i < a.byteLength; ++i) {
a[i] = i;
}
let view = new DataView(a);
let view2 = structuredClone(view);
if (view.buffer === view2.buffer)
println("FAIL: Buffer not deep copied");
for (let i = 0; i < view.byteLength; ++i) {
if (!view[i] === view2[i])
println("FAIL: Data not copied")
}
println(`${view2[Symbol.toStringTag]} ${view2}`)
});
</script>