1// META: global=worker 2 3'use strict'; 4 5const badChunks = [ 6 { 7 name: 'undefined', 8 value: undefined 9 }, 10 { 11 name: 'null', 12 value: null 13 }, 14 { 15 name: 'numeric', 16 value: 3.14 17 }, 18 { 19 name: 'object, not BufferSource', 20 value: {} 21 }, 22 { 23 name: 'array', 24 value: [65] 25 }, 26 { 27 name: 'SharedArrayBuffer', 28 // Use a getter to postpone construction so that all tests don't fail where 29 // SharedArrayBuffer is not yet implemented. 30 get value() { 31 return new SharedArrayBuffer(); 32 } 33 }, 34 { 35 name: 'shared Uint8Array', 36 get value() { 37 new Uint8Array(new SharedArrayBuffer()) 38 } 39 } 40]; 41 42for (const chunk of badChunks) { 43 promise_test(async t => { 44 const tds = new TextDecoderStream(); 45 const reader = tds.readable.getReader(); 46 const writer = tds.writable.getWriter(); 47 const writePromise = writer.write(chunk.value); 48 const readPromise = reader.read(); 49 await promise_rejects(t, new TypeError(), writePromise, 'write should reject'); 50 await promise_rejects(t, new TypeError(), readPromise, 'read should reject'); 51 }, `chunk of type ${chunk.name} should error the stream`); 52} 53