| <!DOCTYPE html> | |
| <script src='../../resources/testharness.js'></script> | |
| <script src='../../resources/testharnessreport.js'></script> | |
| <script src='resources/streams-utils.js'></script> | |
| <script> | |
| const IsReadableStreamDisturbed = internals.isReadableStreamDisturbed.bind(internals); | |
| // This is updated till https://github.com/whatwg/streams/commit/4ba861e6f60c248060811830e11271c84b439cc3 | |
| test(function() { | |
| var rs = new ReadableStream(); | |
| assert_false(IsReadableStreamDisturbed(rs), 'rs should not be disturbed on construction'); | |
| var reader = rs.getReader(); | |
| assert_false(IsReadableStreamDisturbed(rs), 'getReader() call has no effect on whether a stream is disturbed or not'); | |
| reader.read(); | |
| assert_true(IsReadableStreamDisturbed(rs), 'rs should be disturbed after read() call'); | |
| }, 'IsReadableStreamDisturbed returns true for an empty non-closed stream on which read() has been called'); | |
| test(function() { | |
| var rs = new ReadableStream(); | |
| assert_false(IsReadableStreamDisturbed(rs), 'rs should not be disturbed on construction'); | |
| var reader = rs.getReader(); | |
| assert_false(IsReadableStreamDisturbed(rs), 'getReader() call has no effect on whether a stream is disturbed or not'); | |
| reader.cancel(); | |
| assert_true(IsReadableStreamDisturbed(rs), 'rs should be disturbed after cancel() call'); | |
| }, 'IsReadableStreamDisturbed returns true for an empty non-closed stream on which cancel() has been called'); | |
| test(function() { | |
| var rs = new ReadableStream({ | |
| start: function(c) { | |
| c.close(); | |
| } | |
| }); | |
| assert_false(IsReadableStreamDisturbed(rs), 'rs should not be disturbed on construction'); | |
| var reader = rs.getReader(); | |
| assert_false(IsReadableStreamDisturbed(rs), 'getReader() call has no effect on whether a stream is disturbed or not'); | |
| reader.read(); | |
| assert_true(IsReadableStreamDisturbed(rs), 'rs should be disturbed after read() call'); | |
| }, 'IsReadableStreamDisturbed returns true for a closed stream on which read() has been called'); | |
| test(function() { | |
| var rs = new ReadableStream({ | |
| start: function(c) { | |
| c.close(); | |
| } | |
| }); | |
| assert_false(IsReadableStreamDisturbed(rs), 'rs should not be disturbed on construction'); | |
| var reader = rs.getReader(); | |
| assert_false(IsReadableStreamDisturbed(rs), 'getReader() call has no effect on whether a stream is disturbed or not'); | |
| reader.cancel(); | |
| assert_true(IsReadableStreamDisturbed(rs), 'rs should be disturbed after cancel() call'); | |
| }, 'IsReadableStreamDisturbed returns true for a closed stream on which cancel() has been called'); | |
| test(function() { | |
| var rs = new ReadableStream({ | |
| start: function(c) { | |
| c.error(new Error('waffles')); | |
| } | |
| }); | |
| assert_false(IsReadableStreamDisturbed(rs), 'rs should not be disturbed on construction'); | |
| var reader = rs.getReader(); | |
| assert_false(IsReadableStreamDisturbed(rs), 'getReader() call has no effect on whether a stream is disturbed or not'); | |
| reader.read(); | |
| assert_true(IsReadableStreamDisturbed(rs), 'rs should be disturbed after read() call'); | |
| }, 'IsReadableStreamDisturbed returns true for an errored stream on which read() has been called'); | |
| test(function() { | |
| var rs = new ReadableStream({ | |
| start: function(c) { | |
| c.error(new Error('waffles')); | |
| } | |
| }); | |
| assert_false(IsReadableStreamDisturbed(rs), 'rs should not be disturbed on construction'); | |
| var reader = rs.getReader(); | |
| assert_false(IsReadableStreamDisturbed(rs), 'getReader() call has no effect on whether a stream is disturbed or not'); | |
| reader.cancel(); | |
| assert_true(IsReadableStreamDisturbed(rs), 'rs should be disturbed after cancel() call'); | |
| }, 'IsReadableStreamDisturbed returns true for an errored stream on which cancel() has been called'); | |
| </script> |