| // META: global=worker |
| // META: script=resources/readable-stream-from-array.js |
| // META: script=resources/readable-stream-to-array.js |
| |
| 'use strict'; |
| |
| const error1 = new Error('error1'); |
| error1.name = 'error1'; |
| |
| promise_test(t => { |
| const ts = new TextEncoderStream(); |
| const writer = ts.writable.getWriter(); |
| const reader = ts.readable.getReader(); |
| const writePromise = writer.write({ |
| toString() { throw error1; } |
| }); |
| const readPromise = reader.read(); |
| return Promise.all([ |
| promise_rejects(t, error1, readPromise, 'read should reject with error1'), |
| promise_rejects(t, error1, writePromise, 'write should reject with error1'), |
| promise_rejects(t, error1, reader.closed, 'readable should be errored with error1'), |
| promise_rejects(t, error1, writer.closed, 'writable should be errored with error1'), |
| ]); |
| }, 'a chunk that cannot be converted to a string should error the streams'); |
| |
| const oddInputs = [ |
| { |
| name: 'undefined', |
| value: undefined, |
| expected: 'undefined' |
| }, |
| { |
| name: 'null', |
| value: null, |
| expected: 'null' |
| }, |
| { |
| name: 'numeric', |
| value: 3.14, |
| expected: '3.14' |
| }, |
| { |
| name: 'object', |
| value: {}, |
| expected: '[object Object]' |
| }, |
| { |
| name: 'array', |
| value: ['hi'], |
| expected: 'hi' |
| } |
| ]; |
| |
| for (const input of oddInputs) { |
| promise_test(async () => { |
| const outputReadable = readableStreamFromArray([input.value]) |
| .pipeThrough(new TextEncoderStream()) |
| .pipeThrough(new TextDecoderStream()); |
| const output = await readableStreamToArray(outputReadable); |
| assert_equals(output.length, 1, 'output should contain one chunk'); |
| assert_equals(output[0], input.expected, 'output should be correct'); |
| }, `input of type ${input.name} should be converted correctly to string`); |
| } |