From 5710fffb120eba88e1b261e3ef379cb02575de42 Mon Sep 17 00:00:00 2001 From: Yoshiya Hinosawa Date: Sat, 25 Nov 2023 11:35:36 +0900 Subject: chore: update node_compat test suites to v18.18.2 (#21328) --- .../test/parallel/test-stream-duplex-from.js | 133 ++++++++++++++++++++- 1 file changed, 131 insertions(+), 2 deletions(-) (limited to 'cli/tests/node_compat/test/parallel/test-stream-duplex-from.js') diff --git a/cli/tests/node_compat/test/parallel/test-stream-duplex-from.js b/cli/tests/node_compat/test/parallel/test-stream-duplex-from.js index 5e8818302..c6ab18179 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-duplex-from.js +++ b/cli/tests/node_compat/test/parallel/test-stream-duplex-from.js @@ -9,7 +9,8 @@ const common = require('../common'); const assert = require('assert'); -const { Duplex, Readable, Writable, pipeline } = require('stream'); +const { Duplex, Readable, Writable, pipeline, PassThrough } = require('stream'); +const { ReadableStream, WritableStream } = require('stream/web'); const { Blob } = require('buffer'); { @@ -149,7 +150,7 @@ const { Blob } = require('buffer'); } assert.strictEqual(ret, 'abcdefghi'); }, - common.mustCall(() => {}), + common.mustSucceed(), ); } @@ -285,3 +286,131 @@ const { Blob } = require('buffer'); duplex.write('test'); } + +/* +TODO(kt3k): Enable this test case +{ + const through = new PassThrough({ objectMode: true }); + + let res = ''; + const d = Readable.from(['foo', 'bar'], { objectMode: true }) + .pipe(Duplex.from({ + writable: through, + readable: through + })); + + d.on('data', (data) => { + d.pause(); + setImmediate(() => { + d.resume(); + }); + res += data; + }).on('end', common.mustCall(() => { + assert.strictEqual(res, 'foobar'); + })).on('close', common.mustCall()); +} +*/ + +function makeATestReadableStream(value) { + return new ReadableStream({ + start(controller) { + controller.enqueue(value); + controller.close(); + } + }); +} + +function makeATestWritableStream(writeFunc) { + return new WritableStream({ + write(chunk) { + writeFunc(chunk); + } + }); +} + +{ + const d = Duplex.from({ + readable: makeATestReadableStream('foo'), + }); + assert.strictEqual(d.readable, true); + assert.strictEqual(d.writable, false); + + d.on('data', common.mustCall((data) => { + assert.strictEqual(data.toString(), 'foo'); + })); + + d.on('end', common.mustCall(() => { + assert.strictEqual(d.readable, false); + })); +} + +{ + const d = Duplex.from(makeATestReadableStream('foo')); + + assert.strictEqual(d.readable, true); + assert.strictEqual(d.writable, false); + + d.on('data', common.mustCall((data) => { + assert.strictEqual(data.toString(), 'foo'); + })); + + d.on('end', common.mustCall(() => { + assert.strictEqual(d.readable, false); + })); +} + +/* +TODO(kt3k): Enable this test case +{ + let ret = ''; + const d = Duplex.from({ + writable: makeATestWritableStream((chunk) => ret += chunk), + }); + + assert.strictEqual(d.readable, false); + assert.strictEqual(d.writable, true); + + d.end('foo'); + d.on('finish', common.mustCall(() => { + assert.strictEqual(ret, 'foo'); + assert.strictEqual(d.writable, false); + })); +} + +{ + let ret = ''; + const d = Duplex.from(makeATestWritableStream((chunk) => ret += chunk)); + + assert.strictEqual(d.readable, false); + assert.strictEqual(d.writable, true); + + d.end('foo'); + d.on('finish', common.mustCall(() => { + assert.strictEqual(ret, 'foo'); + assert.strictEqual(d.writable, false); + })); +} + +{ + let ret = ''; + const d = Duplex.from({ + readable: makeATestReadableStream('foo'), + writable: makeATestWritableStream((chunk) => ret += chunk), + }); + + d.end('bar'); + + d.on('data', common.mustCall((data) => { + assert.strictEqual(data.toString(), 'foo'); + })); + + d.on('end', common.mustCall(() => { + assert.strictEqual(d.readable, false); + })); + + d.on('finish', common.mustCall(() => { + assert.strictEqual(ret, 'bar'); + assert.strictEqual(d.writable, false); + })); +} +*/ -- cgit v1.2.3