• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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