summaryrefslogtreecommitdiff
path: root/cli/tests/node_compat/test/parallel/test-stream-duplex-from.js
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2023-11-25 11:35:36 +0900
committerGitHub <noreply@github.com>2023-11-25 11:35:36 +0900
commit5710fffb120eba88e1b261e3ef379cb02575de42 (patch)
tree1e5fadbbba88bf816c124ed559082a5968adf1d3 /cli/tests/node_compat/test/parallel/test-stream-duplex-from.js
parent60b5d32d902deb46f640cbdb0d2d4caf47a437c4 (diff)
chore: update node_compat test suites to v18.18.2 (#21328)
Diffstat (limited to 'cli/tests/node_compat/test/parallel/test-stream-duplex-from.js')
-rw-r--r--cli/tests/node_compat/test/parallel/test-stream-duplex-from.js133
1 files changed, 131 insertions, 2 deletions
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);
+ }));
+}
+*/