OLD | NEW |
(Empty) | |
| 1 'use strict'; |
| 2 |
| 3 if (self.importScripts) { |
| 4 self.importScripts('/resources/testharness.js'); |
| 5 } |
| 6 |
| 7 test(() => { |
| 8 |
| 9 new ReadableStream({}, new CountQueuingStrategy({ highWaterMark: 4 })); |
| 10 |
| 11 }, 'Can construct a readable stream with a valid CountQueuingStrategy'); |
| 12 |
| 13 promise_test(() => { |
| 14 |
| 15 let controller; |
| 16 const rs = new ReadableStream( |
| 17 { |
| 18 start(c) { |
| 19 controller = c; |
| 20 } |
| 21 }, |
| 22 new CountQueuingStrategy({ highWaterMark: 0 }) |
| 23 ); |
| 24 const reader = rs.getReader(); |
| 25 |
| 26 assert_equals(controller.desiredSize, 0, '0 reads, 0 enqueues: desiredSize sho
uld be 0'); |
| 27 controller.enqueue('a'); |
| 28 assert_equals(controller.desiredSize, -1, '0 reads, 1 enqueue: desiredSize sho
uld be -1'); |
| 29 controller.enqueue('b'); |
| 30 assert_equals(controller.desiredSize, -2, '0 reads, 2 enqueues: desiredSize sh
ould be -2'); |
| 31 controller.enqueue('c'); |
| 32 assert_equals(controller.desiredSize, -3, '0 reads, 3 enqueues: desiredSize sh
ould be -3'); |
| 33 controller.enqueue('d'); |
| 34 assert_equals(controller.desiredSize, -4, '0 reads, 4 enqueues: desiredSize sh
ould be -4'); |
| 35 |
| 36 return reader.read() |
| 37 .then(result => { |
| 38 assert_object_equals(result, { value: 'a', done: false }, |
| 39 '1st read gives back the 1st chunk enqueued (queue no
w contains 3 chunks)'); |
| 40 return reader.read(); |
| 41 }) |
| 42 .then(result => { |
| 43 assert_object_equals(result, { value: 'b', done: false }, |
| 44 '2nd read gives back the 2nd chunk enqueued (queue no
w contains 2 chunks)'); |
| 45 return reader.read(); |
| 46 }) |
| 47 .then(result => { |
| 48 assert_object_equals(result, { value: 'c', done: false }, |
| 49 '3rd read gives back the 3rd chunk enqueued (queue no
w contains 1 chunk)'); |
| 50 |
| 51 assert_equals(controller.desiredSize, -1, '3 reads, 4 enqueues: desiredSiz
e should be -1'); |
| 52 controller.enqueue('e'); |
| 53 assert_equals(controller.desiredSize, -2, '3 reads, 5 enqueues: desiredSiz
e should be -2'); |
| 54 |
| 55 return reader.read(); |
| 56 }) |
| 57 .then(result => { |
| 58 assert_object_equals(result, { value: 'd', done: false }, |
| 59 '4th read gives back the 4th chunk enqueued (queue no
w contains 1 chunks)'); |
| 60 return reader.read(); |
| 61 |
| 62 }).then(result => { |
| 63 assert_object_equals(result, { value: 'e', done: false }, |
| 64 '5th read gives back the 5th chunk enqueued (queue no
w contains 0 chunks)'); |
| 65 |
| 66 assert_equals(controller.desiredSize, 0, '5 reads, 5 enqueues: desiredSize
should be 0'); |
| 67 controller.enqueue('f'); |
| 68 assert_equals(controller.desiredSize, -1, '5 reads, 6 enqueues: desiredSiz
e should be -1'); |
| 69 controller.enqueue('g'); |
| 70 assert_equals(controller.desiredSize, -2, '5 reads, 7 enqueues: desiredSiz
e should be -2'); |
| 71 }); |
| 72 |
| 73 }, 'Correctly governs a ReadableStreamController\'s desiredSize property (HWM =
0)'); |
| 74 |
| 75 promise_test(() => { |
| 76 |
| 77 let controller; |
| 78 const rs = new ReadableStream( |
| 79 { |
| 80 start(c) { |
| 81 controller = c; |
| 82 } |
| 83 }, |
| 84 new CountQueuingStrategy({ highWaterMark: 1 }) |
| 85 ); |
| 86 const reader = rs.getReader(); |
| 87 |
| 88 assert_equals(controller.desiredSize, 1, '0 reads, 0 enqueues: desiredSize sho
uld be 1'); |
| 89 controller.enqueue('a'); |
| 90 assert_equals(controller.desiredSize, 0, '0 reads, 1 enqueue: desiredSize shou
ld be 0'); |
| 91 controller.enqueue('b'); |
| 92 assert_equals(controller.desiredSize, -1, '0 reads, 2 enqueues: desiredSize sh
ould be -1'); |
| 93 controller.enqueue('c'); |
| 94 assert_equals(controller.desiredSize, -2, '0 reads, 3 enqueues: desiredSize sh
ould be -2'); |
| 95 controller.enqueue('d'); |
| 96 assert_equals(controller.desiredSize, -3, '0 reads, 4 enqueues: desiredSize sh
ould be -3'); |
| 97 |
| 98 return reader.read() |
| 99 .then(result => { |
| 100 assert_object_equals(result, { value: 'a', done: false }, |
| 101 '1st read gives back the 1st chunk enqueued (queue no
w contains 3 chunks)'); |
| 102 return reader.read(); |
| 103 }) |
| 104 .then(result => { |
| 105 assert_object_equals(result, { value: 'b', done: false }, |
| 106 '2nd read gives back the 2nd chunk enqueued (queue no
w contains 2 chunks)'); |
| 107 return reader.read(); |
| 108 }) |
| 109 .then(result => { |
| 110 assert_object_equals(result, { value: 'c', done: false }, |
| 111 '3rd read gives back the 3rd chunk enqueued (queue no
w contains 1 chunk)'); |
| 112 |
| 113 assert_equals(controller.desiredSize, 0, '3 reads, 4 enqueues: desiredSize
should be 0'); |
| 114 controller.enqueue('e'); |
| 115 assert_equals(controller.desiredSize, -1, '3 reads, 5 enqueues: desiredSiz
e should be -1'); |
| 116 |
| 117 return reader.read(); |
| 118 }) |
| 119 .then(result => { |
| 120 assert_object_equals(result, { value: 'd', done: false }, |
| 121 '4th read gives back the 4th chunk enqueued (queue no
w contains 1 chunks)'); |
| 122 return reader.read(); |
| 123 }) |
| 124 .then(result => { |
| 125 assert_object_equals(result, { value: 'e', done: false }, |
| 126 '5th read gives back the 5th chunk enqueued (queue no
w contains 0 chunks)'); |
| 127 |
| 128 assert_equals(controller.desiredSize, 1, '5 reads, 5 enqueues: desiredSize
should be 1'); |
| 129 controller.enqueue('f'); |
| 130 assert_equals(controller.desiredSize, 0, '5 reads, 6 enqueues: desiredSize
should be 0'); |
| 131 controller.enqueue('g'); |
| 132 assert_equals(controller.desiredSize, -1, '5 reads, 7 enqueues: desiredSiz
e should be -1'); |
| 133 }); |
| 134 |
| 135 }, 'Correctly governs a ReadableStreamController\'s desiredSize property (HWM =
1)'); |
| 136 |
| 137 promise_test(() => { |
| 138 |
| 139 let controller; |
| 140 const rs = new ReadableStream( |
| 141 { |
| 142 start(c) { |
| 143 controller = c; |
| 144 } |
| 145 }, |
| 146 new CountQueuingStrategy({ highWaterMark: 4 }) |
| 147 ); |
| 148 const reader = rs.getReader(); |
| 149 |
| 150 assert_equals(controller.desiredSize, 4, '0 reads, 0 enqueues: desiredSize sho
uld be 4'); |
| 151 controller.enqueue('a'); |
| 152 assert_equals(controller.desiredSize, 3, '0 reads, 1 enqueue: desiredSize shou
ld be 3'); |
| 153 controller.enqueue('b'); |
| 154 assert_equals(controller.desiredSize, 2, '0 reads, 2 enqueues: desiredSize sho
uld be 2'); |
| 155 controller.enqueue('c'); |
| 156 assert_equals(controller.desiredSize, 1, '0 reads, 3 enqueues: desiredSize sho
uld be 1'); |
| 157 controller.enqueue('d'); |
| 158 assert_equals(controller.desiredSize, 0, '0 reads, 4 enqueues: desiredSize sho
uld be 0'); |
| 159 controller.enqueue('e'); |
| 160 assert_equals(controller.desiredSize, -1, '0 reads, 5 enqueues: desiredSize sh
ould be -1'); |
| 161 controller.enqueue('f'); |
| 162 assert_equals(controller.desiredSize, -2, '0 reads, 6 enqueues: desiredSize sh
ould be -2'); |
| 163 |
| 164 |
| 165 reader.read() |
| 166 .then(result => { |
| 167 assert_object_equals(result, { value: 'a', done: false }, |
| 168 '1st read gives back the 1st chunk enqueued (queue no
w contains 5 chunks)'); |
| 169 return reader.read(); |
| 170 }) |
| 171 .then(result => { |
| 172 assert_object_equals(result, { value: 'b', done: false }, |
| 173 '2nd read gives back the 2nd chunk enqueued (queue no
w contains 4 chunks)'); |
| 174 |
| 175 assert_equals(controller.desiredSize, 0, '2 reads, 6 enqueues: desiredSize
should be 0'); |
| 176 controller.enqueue('g'); |
| 177 assert_equals(controller.desiredSize, -1, '2 reads, 7 enqueues: desiredSiz
e should be -1'); |
| 178 |
| 179 return reader.read(); |
| 180 }) |
| 181 .then(result => { |
| 182 assert_object_equals(result, { value: 'c', done: false }, |
| 183 '3rd read gives back the 3rd chunk enqueued (queue no
w contains 4 chunks)'); |
| 184 return reader.read(); |
| 185 }) |
| 186 .then(result => { |
| 187 assert_object_equals(result, { value: 'd', done: false }, |
| 188 '4th read gives back the 4th chunk enqueued (queue no
w contains 3 chunks)'); |
| 189 return reader.read(); |
| 190 }) |
| 191 .then(result => { |
| 192 assert_object_equals(result, { value: 'e', done: false }, |
| 193 '5th read gives back the 5th chunk enqueued (queue no
w contains 2 chunks)'); |
| 194 return reader.read(); |
| 195 }) |
| 196 .then(result => { |
| 197 assert_object_equals(result, { value: 'f', done: false }, |
| 198 '6th read gives back the 6th chunk enqueued (queue no
w contains 0 chunks)'); |
| 199 |
| 200 assert_equals(controller.desiredSize, 3, '6 reads, 7 enqueues: desiredSize
should be 3'); |
| 201 controller.enqueue('h'); |
| 202 assert_equals(controller.desiredSize, 2, '6 reads, 8 enqueues: desiredSize
should be 2'); |
| 203 controller.enqueue('i'); |
| 204 assert_equals(controller.desiredSize, 1, '6 reads, 9 enqueues: desiredSize
should be 1'); |
| 205 controller.enqueue('j'); |
| 206 assert_equals(controller.desiredSize, 0, '6 reads, 10 enqueues: desiredSiz
e should be 0'); |
| 207 controller.enqueue('k'); |
| 208 assert_equals(controller.desiredSize, -1, '6 reads, 11 enqueues: desiredSi
ze should be -1'); |
| 209 }); |
| 210 |
| 211 }, 'Correctly governs a ReadableStreamController\'s desiredSize property (HWM =
4)'); |
| 212 |
| 213 done(); |
OLD | NEW |