OLD | NEW |
(Empty) | |
| 1 'use strict'; |
| 2 |
| 3 if (self.importScripts) { |
| 4 self.importScripts('../resources/test-utils.js'); |
| 5 self.importScripts('/resources/testharness.js'); |
| 6 } |
| 7 |
| 8 var ReadableStreamReader; |
| 9 var ReadableStreamController; |
| 10 |
| 11 test(function() { |
| 12 // It's not exposed globally, but we test a few of its properties here. |
| 13 ReadableStreamReader = (new ReadableStream()).getReader().constructor; |
| 14 }, 'Can get the ReadableStreamReader constructor indirectly'); |
| 15 |
| 16 test(function() { |
| 17 // It's not exposed globally, but we test a few of its properties here. |
| 18 new ReadableStream({ |
| 19 start: function(c) { |
| 20 ReadableStreamController = c.constructor; |
| 21 } |
| 22 }); |
| 23 }, 'Can get the ReadableStreamController constructor indirectly'); |
| 24 |
| 25 function fakeReadableStream() { |
| 26 return { |
| 27 cancel: function(reason) { return Promise.resolve(); }, |
| 28 getReader: function() { return new ReadableStreamReader(new ReadableStre
am()); }, |
| 29 pipeThrough: function(obj, options) { return obj.readable; }, |
| 30 pipeTo: function() { return Promise.resolve(); }, |
| 31 tee: function() { return [realReadableStream(), realReadableStream()]; } |
| 32 }; |
| 33 } |
| 34 |
| 35 function realReadableStream() { |
| 36 return new ReadableStream(); |
| 37 } |
| 38 |
| 39 function fakeReadableStreamReader() { |
| 40 return { |
| 41 get closed() { return Promise.resolve(); }, |
| 42 cancel: function(reason) { return Promise.resolve(); }, |
| 43 read: function() { return Promise.resolve({ value: undefined, done: true
}); }, |
| 44 releaseLock: function() { return; } |
| 45 }; |
| 46 } |
| 47 |
| 48 function fakeReadableStreamController() { |
| 49 return { |
| 50 close: function() { }, |
| 51 enqueue: function(chunk) { }, |
| 52 error: function(e) { } |
| 53 }; |
| 54 } |
| 55 |
| 56 var test1 = async_test('ReadableStream.prototype.cancel enforces a brand check')
; |
| 57 test1.step(function() { |
| 58 methodRejects(test1, ReadableStream.prototype, 'cancel', fakeReadableStream(
), true); |
| 59 }); |
| 60 |
| 61 test(function() { |
| 62 methodThrows(ReadableStream.prototype, 'getReader', fakeReadableStream()); |
| 63 }, 'ReadableStream.prototype.getReader enforces a brand check'); |
| 64 |
| 65 test(function() { |
| 66 methodThrows(ReadableStream.prototype, 'tee', fakeReadableStream()); |
| 67 }, 'ReadableStream.prototype.tee enforces a brand check'); |
| 68 |
| 69 test(function() { |
| 70 assert_throws(new TypeError(), function() { new ReadableStreamReader(fakeRea
dableStream()); }, 'Constructing a ReadableStreamReader should throw'); |
| 71 }, 'ReadableStreamReader enforces a brand check on its argument'); |
| 72 |
| 73 var test2 = async_test('ReadableStreamReader.prototype.closed enforces a brand c
heck'); |
| 74 test2.step(function() { |
| 75 getterRejects(test2, ReadableStreamReader.prototype, 'closed', fakeReadableS
treamReader()); |
| 76 getterRejects(test2, ReadableStreamReader.prototype, 'closed', realReadableS
tream(), true); |
| 77 }); |
| 78 |
| 79 var test3 = async_test('ReadableStreamReader.prototype.cancel enforces a brand c
heck'); |
| 80 test3.step(function() { |
| 81 methodRejects(test3, ReadableStreamReader.prototype, 'cancel', fakeReadableS
treamReader()); |
| 82 methodRejects(test3, ReadableStreamReader.prototype, 'cancel', realReadableS
tream(), true); |
| 83 }); |
| 84 |
| 85 var test4 = async_test('ReadableStreamReader.prototype.read enforces a brand che
ck'); |
| 86 test4.step(function() { |
| 87 methodRejects(test4, ReadableStreamReader.prototype, 'read', fakeReadableStr
eamReader()); |
| 88 methodRejects(test4, ReadableStreamReader.prototype, 'read', realReadableStr
eam(), true); |
| 89 }); |
| 90 |
| 91 var test5 = async_test('ReadableStreamReader.prototype.read enforces a brand che
ck'); |
| 92 test5.step(function() { |
| 93 methodRejects(test5, ReadableStreamReader.prototype, 'read', fakeReadableStr
eamReader()); |
| 94 methodRejects(test5, ReadableStreamReader.prototype, 'read', realReadableStr
eam(), true); |
| 95 }); |
| 96 |
| 97 test(function() { |
| 98 methodThrows(ReadableStreamReader.prototype, 'releaseLock', fakeReadableStre
amReader()); |
| 99 methodThrows(ReadableStreamReader.prototype, 'releaseLock', realReadableStre
am()); |
| 100 }, 'ReadableStreamReader.prototype.releaseLock enforces a brand check'); |
| 101 |
| 102 test(function() { |
| 103 assert_throws(new TypeError(), function() { new ReadableStreamController(fak
eReadableStream()); }, 'Constructing a ReadableStreamController should throw'); |
| 104 }, 'ReadableStreamController enforces a brand check on its argument'); |
| 105 |
| 106 test(function() { |
| 107 assert_throws(new TypeError(), function() { new ReadableStreamController(rea
lReadableStream()); }, 'Constructing a ReadableStreamController should throw'); |
| 108 }, 'ReadableStreamController can\'t be given a fully-constructed ReadableStream'
); |
| 109 |
| 110 test(function() { |
| 111 methodThrows(ReadableStreamController.prototype, 'close', fakeReadableStreamCo
ntroller()); |
| 112 }, 'ReadableStreamController.prototype.close enforces a brand check'); |
| 113 |
| 114 test(function() { |
| 115 methodThrows(ReadableStreamController.prototype, 'enqueue', fakeReadableStream
Controller()); |
| 116 }, 'ReadableStreamController.prototype.enqueue enforces a brand check'); |
| 117 |
| 118 test(function() { |
| 119 methodThrows(ReadableStreamController.prototype, 'error', fakeReadableStreamCo
ntroller()); |
| 120 }, 'ReadableStreamController.prototype.error enforces a brand check'); |
| 121 |
| 122 done(); |
OLD | NEW |