OLD | NEW |
| (Empty) |
1 'use strict'; | |
2 | |
3 if (self.importScripts) { | |
4 self.importScripts('/resources/testharness.js'); | |
5 } | |
6 | |
7 test(() => { | |
8 new WritableStream({}, new CountQueuingStrategy({ highWaterMark: 4 })); | |
9 }, 'Can construct a writable stream with a valid CountQueuingStrategy'); | |
10 | |
11 promise_test(() => { | |
12 const dones = Object.create(null); | |
13 | |
14 const ws = new WritableStream( | |
15 { | |
16 write(chunk) { | |
17 return new Promise(resolve => { | |
18 dones[chunk] = resolve; | |
19 }); | |
20 } | |
21 }, | |
22 new CountQueuingStrategy({ highWaterMark: 0 }) | |
23 ); | |
24 | |
25 const writer = ws.getWriter(); | |
26 let writePromiseB; | |
27 let writePromiseC; | |
28 | |
29 return Promise.resolve().then(() => { | |
30 assert_equals(writer.desiredSize, 0, 'desiredSize should be initially 0'); | |
31 | |
32 const writePromiseA = writer.write('a'); | |
33 assert_equals(writer.desiredSize, -1, 'desiredSize should be -1 after 1st wr
ite()'); | |
34 | |
35 writePromiseB = writer.write('b'); | |
36 assert_equals(writer.desiredSize, -2, 'desiredSize should be -2 after 2nd wr
ite()'); | |
37 | |
38 dones.a(); | |
39 return writePromiseA; | |
40 }).then(() => { | |
41 assert_equals(writer.desiredSize, -1, 'desiredSize should be -1 after comple
ting 1st write()'); | |
42 | |
43 dones.b(); | |
44 return writePromiseB; | |
45 }).then(() => { | |
46 assert_equals(writer.desiredSize, 0, 'desiredSize should be 0 after completi
ng 2nd write()'); | |
47 | |
48 writePromiseC = writer.write('c'); | |
49 assert_equals(writer.desiredSize, -1, 'desiredSize should be -1 after 3rd wr
ite()'); | |
50 | |
51 dones.c(); | |
52 return writePromiseC; | |
53 }).then(() => { | |
54 assert_equals(writer.desiredSize, 0, 'desiredSize should be 0 after completi
ng 3rd write()'); | |
55 }); | |
56 }, 'Correctly governs the value of a WritableStream\'s state property (HWM = 0)'
); | |
57 | |
58 promise_test(() => { | |
59 const dones = Object.create(null); | |
60 | |
61 const ws = new WritableStream( | |
62 { | |
63 write(chunk) { | |
64 return new Promise(resolve => { | |
65 dones[chunk] = resolve; | |
66 }); | |
67 } | |
68 }, | |
69 new CountQueuingStrategy({ highWaterMark: 4 }) | |
70 ); | |
71 | |
72 const writer = ws.getWriter(); | |
73 let writePromiseB; | |
74 let writePromiseC; | |
75 let writePromiseD; | |
76 | |
77 return Promise.resolve().then(() => { | |
78 assert_equals(writer.desiredSize, 4, 'desiredSize should be initially 4'); | |
79 | |
80 const writePromiseA = writer.write('a'); | |
81 assert_equals(writer.desiredSize, 3, 'desiredSize should be 3 after 1st writ
e()'); | |
82 | |
83 writePromiseB = writer.write('b'); | |
84 assert_equals(writer.desiredSize, 2, 'desiredSize should be 2 after 2nd writ
e()'); | |
85 | |
86 writePromiseC = writer.write('c'); | |
87 assert_equals(writer.desiredSize, 1, 'desiredSize should be 1 after 3rd writ
e()'); | |
88 | |
89 writePromiseD = writer.write('d'); | |
90 assert_equals(writer.desiredSize, 0, 'desiredSize should be 0 after 4th writ
e()'); | |
91 | |
92 writer.write('e'); | |
93 assert_equals(writer.desiredSize, -1, 'desiredSize should be -1 after 5th wr
ite()'); | |
94 | |
95 writer.write('f'); | |
96 assert_equals(writer.desiredSize, -2, 'desiredSize should be -2 after 6th wr
ite()'); | |
97 | |
98 writer.write('g'); | |
99 assert_equals(writer.desiredSize, -3, 'desiredSize should be -3 after 7th wr
ite()'); | |
100 | |
101 dones.a(); | |
102 return writePromiseA; | |
103 }).then(() => { | |
104 assert_equals(writer.desiredSize, -2, 'desiredSize should be -2 after comple
ting 1st write()'); | |
105 | |
106 dones.b(); | |
107 return writePromiseB; | |
108 }).then(() => { | |
109 assert_equals(writer.desiredSize, -1, 'desiredSize should be -1 after comple
ting 2nd write()'); | |
110 | |
111 dones.c(); | |
112 return writePromiseC; | |
113 }).then(() => { | |
114 assert_equals(writer.desiredSize, 0, 'desiredSize should be 0 after completi
ng 3rd write()'); | |
115 | |
116 writer.write('h'); | |
117 assert_equals(writer.desiredSize, -1, 'desiredSize should be -1 after 8th wr
ite()'); | |
118 | |
119 dones.d(); | |
120 return writePromiseD; | |
121 }).then(() => { | |
122 assert_equals(writer.desiredSize, 0, 'desiredSize should be 0 after completi
ng 4th write()'); | |
123 | |
124 writer.write('i'); | |
125 assert_equals(writer.desiredSize, -1, 'desiredSize should be -1 after 9th wr
ite()'); | |
126 }); | |
127 }, 'Correctly governs the value of a WritableStream\'s state property (HWM = 4)'
); | |
128 | |
129 done(); | |
OLD | NEW |