1
0
Fork 0
firefox/testing/web-platform/mozilla/tests/compression/zstd/decompression-bad-chunks.tentative.any.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

66 lines
1.8 KiB
JavaScript

// META: global=window,worker
"use strict";
const badChunks = [
{
name: "undefined",
value: undefined,
},
{
name: "null",
value: null,
},
{
name: "numeric",
value: 3.14,
},
{
name: "object, not BufferSource",
value: {},
},
{
name: "array",
value: [65],
},
{
name: "SharedArrayBuffer",
// Use a getter to postpone construction so that all tests don't fail where
// SharedArrayBuffer is not yet implemented.
get value() {
// See https://github.com/whatwg/html/issues/5380 for why not `new SharedArrayBuffer()`
return new WebAssembly.Memory({ shared: true, initial: 1, maximum: 1 })
.buffer;
},
},
{
name: "shared Uint8Array",
get value() {
// See https://github.com/whatwg/html/issues/5380 for why not `new SharedArrayBuffer()`
return new Uint8Array(
new WebAssembly.Memory({ shared: true, initial: 1, maximum: 1 }).buffer
);
},
},
{
name: "invalid zstd bytes",
value: new Uint8Array([0x00, 0x01, 0x02, 0x03]),
},
];
for (const badChunk of badChunks) {
promise_test(async t => {
const ds = new DecompressionStream("zstd");
const reader = ds.readable.getReader();
const writer = ds.writable.getWriter();
writer.write(badChunk.value).catch(() => {});
reader.read().catch(() => {});
await promise_rejects_js(t, TypeError, writer.close(), "writer.close() should reject");
await promise_rejects_js(t, TypeError, writer.closed, "write.closed should reject");
await promise_rejects_js(t, TypeError, reader.read(), "reader.read() should reject");
await promise_rejects_js(t, TypeError, reader.closed, "read.closed should reject");
}, `"zstd" decompression for bad chunk of type "${badChunk.name}" should produce an error`);
}