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 |