| 'use strict'; |
| const common = require('../common'); |
| const { Readable } = require('stream'); |
| const assert = require('assert'); |
| const { strictEqual } = require('assert'); |
| |
| { |
| // Strategy 2 |
| const streamData = ['a', 'b', 'c', null]; |
| |
| // Fulfill a Readable object |
| const readable = new Readable({ |
| read: common.mustCall(() => { |
| process.nextTick(() => { |
| readable.push(streamData.shift()); |
| }); |
| }, streamData.length), |
| }); |
| |
| // Use helper to convert it to a Web ReadableStream using ByteLength strategy |
| const readableStream = Readable.toWeb(readable, { |
| strategy: new ByteLengthQueuingStrategy({ highWaterMark: 1 }), |
| }); |
| |
| assert(!readableStream.locked); |
| readableStream.getReader().read().then(common.mustCall()); |
| } |
| |
| { |
| // Strategy 2 |
| const streamData = ['a', 'b', 'c', null]; |
| |
| // Fulfill a Readable object |
| const readable = new Readable({ |
| read: common.mustCall(() => { |
| process.nextTick(() => { |
| readable.push(streamData.shift()); |
| }); |
| }, streamData.length), |
| }); |
| |
| // Use helper to convert it to a Web ReadableStream using Count strategy |
| const readableStream = Readable.toWeb(readable, { |
| strategy: new CountQueuingStrategy({ highWaterMark: 1 }), |
| }); |
| |
| assert(!readableStream.locked); |
| readableStream.getReader().read().then(common.mustCall()); |
| } |
| |
| { |
| const desireSizeExpected = 2; |
| |
| const stringStream = new ReadableStream( |
| { |
| start(controller) { |
| // Check if the strategy is being assigned on the init of the ReadableStream |
| strictEqual(controller.desiredSize, desireSizeExpected); |
| controller.enqueue('a'); |
| controller.enqueue('b'); |
| controller.close(); |
| }, |
| }, |
| new CountQueuingStrategy({ highWaterMark: desireSizeExpected }) |
| ); |
| |
| const reader = stringStream.getReader(); |
| |
| reader.read().then(common.mustCall()); |
| reader.read().then(common.mustCall()); |
| reader.read().then(({ value, done }) => { |
| strictEqual(value, undefined); |
| strictEqual(done, true); |
| }); |
| } |