| 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 |