| // META: global=window,dedicatedworker | |
| // META: title=Encoding API: TextDecoder decode() optional arguments | |
| test(t => { | |
| const decoder = new TextDecoder(); | |
| // Just passing nothing. | |
| assert_equals( | |
| decoder.decode(undefined), '', | |
| 'Undefined as first arg should decode to empty string'); | |
| // Flushing an incomplete sequence. | |
| decoder.decode(new Uint8Array([0xc9]), {stream: true}); | |
| assert_equals( | |
| decoder.decode(undefined), '\uFFFD', | |
| 'Undefined as first arg should flush the stream'); | |
| }, 'TextDecoder decode() with explicit undefined'); | |
| test(t => { | |
| const decoder = new TextDecoder(); | |
| // Just passing nothing. | |
| assert_equals( | |
| decoder.decode(undefined, undefined), '', | |
| 'Undefined as first arg should decode to empty string'); | |
| // Flushing an incomplete sequence. | |
| decoder.decode(new Uint8Array([0xc9]), {stream: true}); | |
| assert_equals( | |
| decoder.decode(undefined, undefined), '\uFFFD', | |
| 'Undefined as first arg should flush the stream'); | |
| }, 'TextDecoder decode() with undefined and undefined'); | |
| test(t => { | |
| const decoder = new TextDecoder(); | |
| // Just passing nothing. | |
| assert_equals( | |
| decoder.decode(undefined, {}), '', | |
| 'Undefined as first arg should decode to empty string'); | |
| // Flushing an incomplete sequence. | |
| decoder.decode(new Uint8Array([0xc9]), {stream: true}); | |
| assert_equals( | |
| decoder.decode(undefined, {}), '\uFFFD', | |
| 'Undefined as first arg should flush the stream'); | |
| }, 'TextDecoder decode() with undefined and options'); | |
| test(t => { | |
| const decoder = new TextDecoder(); | |
| const arr = new Uint8Array(10000).fill(42); | |
| const options = { | |
| get stream() { | |
| arr.buffer.transfer(0); | |
| return false; | |
| } | |
| }; | |
| assert_equals( | |
| decoder.decode(arr, options), '', | |
| 'Decoding should return an empty string with underlying array buffer detached during options conversion'); | |
| }, 'TextDecoder decode() with array buffer detached during arg conversion'); |