| // META: global=window,worker | |
| // META: script=resources/formats.js | |
| '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) | |
| } | |
| }, | |
| ]; | |
| for (const format of formats) { | |
| for (const chunk of badChunks) { | |
| promise_test(async t => { | |
| const cs = new CompressionStream(format); | |
| const reader = cs.readable.getReader(); | |
| const writer = cs.writable.getWriter(); | |
| const writePromise = writer.write(chunk.value); | |
| const readPromise = reader.read(); | |
| await promise_rejects_js(t, TypeError, writePromise, 'write should reject'); | |
| await promise_rejects_js(t, TypeError, readPromise, 'read should reject'); | |
| }, `chunk of type ${chunk.name} should error the stream for ${format}`); | |
| } | |
| } |