| <!DOCTYPE html> |
| <script src='../../resources/testharness.js'></script> |
| <script src='../../resources/testharnessreport.js'></script> |
| <script src='resources/streams-utils.js'></script> |
| <script> |
| // This is updated till https://github.com/whatwg/streams/commit/4ba861e6f60c248060811830e11271c84b439cc3 |
| |
| test(function() { |
| var theError = new Error('a unique string'); |
| |
| assert_throws(theError, function() { |
| new WritableStream({ |
| get start() { |
| throw theError; |
| } |
| }); |
| }); |
| }, 'Underlying sink: throwing start getter'); |
| |
| test(function() { |
| var theError = new Error('a unique string'); |
| |
| assert_throws(theError, function() { |
| new WritableStream({ |
| start: function() { |
| throw theError; |
| } |
| }); |
| }); |
| }, 'Underlying sink: throwing start method'); |
| |
| var test1 = async_test('Underlying sink: throwing write getter'); |
| test1.step(function() { |
| var writeRejected = false; |
| |
| var theError = new Error('a unique string'); |
| var ws = new WritableStream({ |
| get write() { |
| throw theError; |
| } |
| }); |
| |
| ws.write('a').then( |
| test1.step_func(function() { assert_unreached('write should not fulfill'); }), |
| test1.step_func(function(r) { |
| assert_equals(r, theError, 'write should reject with the thrown error'); |
| writeRejected = true; |
| }) |
| ); |
| |
| ws.closed.then( |
| test1.step_func(function() { assert_unreached('closed should not fulfill'); }), |
| test1.step_func(function(r) { |
| assert_equals(r, theError, 'closed should reject with the thrown error'); |
| assert_true(writeRejected); |
| test1.done(); |
| }) |
| ); |
| }); |
| |
| var test2 = async_test('Underlying sink: throwing write method'); |
| test2.step(function() { |
| var writeRejected = false; |
| |
| var theError = new Error('a unique string'); |
| var ws = new WritableStream({ |
| write: function() { |
| throw theError; |
| } |
| }); |
| |
| ws.write('a').then( |
| test2.step_func(function() { assert_unreached('write should not fulfill'); }), |
| test2.step_func(function(r) { |
| assert_equals(r, theError, 'write should reject with the thrown error'); |
| writeRejected = true; |
| }) |
| ); |
| |
| ws.closed.then( |
| test2.step_func(function() { assert_unreached('closed should not fulfill'); }), |
| test2.step_func(function(r) { |
| assert_equals(r, theError, 'closed should reject with the thrown error'); |
| assert_true(writeRejected); |
| test2.done(); |
| }) |
| ); |
| }); |
| |
| var test3 = async_test('Underlying sink: throwing abort getter'); |
| test3.step(function() { |
| var closedRejected = false; |
| var theError = new Error('a unique string'); |
| var abortReason = new Error('different string'); |
| var ws = new WritableStream({ |
| get abort() { |
| throw theError; |
| } |
| }); |
| |
| ws.abort(abortReason).then( |
| test3.step_func(function() { assert_unreached('abort should not fulfill'); }), |
| test3.step_func(function(r) { |
| assert_equals(r, theError, 'abort should reject with the abort reason'); |
| assert_true(closedRejected); |
| test3.done(); |
| }) |
| ); |
| |
| ws.closed.then( |
| test3.step_func(function() { assert_unreached('closed should not fulfill'); }), |
| test3.step_func(function(r) { |
| assert_equals(r, abortReason, 'closed should reject with the thrown error'); |
| closedRejected = true; |
| }) |
| ); |
| }); |
| |
| var test4 = async_test('Underlying sink: throwing abort method'); |
| test4.step(function() { |
| var closedRejected = false; |
| var theError = new Error('a unique string'); |
| var abortReason = new Error('different string'); |
| var ws = new WritableStream({ |
| abort: function() { |
| throw theError; |
| } |
| }); |
| |
| ws.abort(abortReason).then( |
| test4.step_func(function() { assert_unreached('abort should not fulfill'); }), |
| test4.step_func(function(r) { |
| assert_equals(r, theError, 'abort should reject with the abort reason'); |
| assert_true(closedRejected); |
| test4.done(); |
| }) |
| ); |
| |
| ws.closed.then( |
| test4.step_func(function() { assert_unreached('closed should not fulfill'); }), |
| test4.step_func(function(r) { |
| assert_equals(r, abortReason, 'closed should reject with the thrown error'); |
| closedRejected = true; |
| }) |
| ); |
| }); |
| |
| var test5 = async_test('Underlying sink: throwing close getter'); |
| test5.step(function() { |
| var theError = new Error('a unique string'); |
| var ws = new WritableStream({ |
| get close() { |
| throw theError; |
| } |
| }); |
| |
| ws.close().then( |
| test5.step_func(function() { assert_unreached('close should not fulfill'); }), |
| test5.step_func(function(r) { |
| assert_equals(r, theError, 'close should reject with the thrown error'); |
| test5.done(); |
| }) |
| ); |
| }); |
| |
| var test6 = async_test('Underlying sink: throwing close method'); |
| test6.step(function() { |
| var theError = new Error('a unique string'); |
| var ws = new WritableStream({ |
| close: function() { |
| throw theError; |
| } |
| }); |
| |
| ws.close().then( |
| test6.step_func(function() { assert_unreached('close should not fulfill'); }), |
| test6.step_func(function(r) { |
| assert_equals(r, theError, 'close should reject with the thrown error'); |
| test6.done(); |
| }) |
| ); |
| }); |
| </script> |