| <!DOCTYPE html> |
| <script src='../resources/testharness.js'></script> |
| <script src='../resources/testharnessreport.js'></script> |
| <script> |
| promise_test(async t => { |
| |
| return promise_rejects_js(t, TypeError, internals.testAsyncIterator(1)); |
| return promise_rejects_js(t, TypeError, internals.testAsyncIterator({ })); |
| |
| const error = new Error("test"); |
| await promise_rejects_exactly(t, error, internals.testAsyncIterator({ |
| [Symbol.asyncIterator]: () => { throw error; } |
| })); |
| |
| await promise_rejects_exactly(t, error, internals.testAsyncIterator({ |
| [Symbol.iterator]: () => { throw error; } |
| })); |
| |
| await promise_rejects_exactly(t, error, internals.testAsyncIterator({ |
| [Symbol.asyncIterator]: () => { return { |
| next() { |
| return Promise.rejects(error); |
| } |
| };} |
| })); |
| }, "Test asnc iterator error cases"); |
| |
| promise_test(async t => { |
| if (!window.internals) |
| return; |
| |
| const chunks = ["a", 1]; |
| const asyncIterator = { |
| next() { |
| return Promise.resolve({ |
| done: chunks.length === 0, |
| value: chunks.shift() |
| }); |
| } |
| }; |
| |
| const results = await internals.testAsyncIterator({ |
| [Symbol.asyncIterator]: () => asyncIterator |
| }); |
| |
| assert_equals(JSON.stringify(results), '[{"done":false,"value":"a"},{"done":false,"value":1},{"done":true}]'); |
| }, "Test async iterator from asyncIterator"); |
| |
| promise_test(async t => { |
| if (!window.internals) |
| return; |
| |
| const results = await internals.testAsyncIterator(["a", 1]); |
| |
| assert_equals(JSON.stringify(results), '[{"value":"a","done":false},{"value":1,"done":false},{"done":true}]'); |
| }, "Test async iterator from syncIterator"); |
| </script> |