mirror of
https://github.com/nodejs/node.git
synced 2026-10-28 10:15:07 +08:00
Refs: https://github.com/nodejs/node/pull/61913 Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk> PR-URL: https://github.com/nodejs/node/pull/62163 Reviewed-By: Filip Skokan <panva.ip@gmail.com>
96 lines
2.9 KiB
JavaScript
96 lines
2.9 KiB
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
|
|
const assert = require('assert');
|
|
const { Buffer } = require('buffer');
|
|
const { Duplex, Writable } = require('stream');
|
|
const { suite, test } = require('node:test');
|
|
|
|
const ctors = [ArrayBuffer, SharedArrayBuffer];
|
|
|
|
suite('underlying Writable', () => {
|
|
suite('in non-object mode', () => {
|
|
for (const ctor of ctors) {
|
|
test(`converts ${ctor.name} chunks`, async () => {
|
|
const buffer = new ctor(4);
|
|
const writable = new Writable({
|
|
objectMode: false,
|
|
write: common.mustCall((chunk, encoding, callback) => {
|
|
assert(Buffer.isBuffer(chunk));
|
|
assert.strictEqual(chunk.buffer, buffer);
|
|
callback();
|
|
}),
|
|
});
|
|
writable.on('error', common.mustNotCall());
|
|
const writer = Writable.toWeb(writable).getWriter();
|
|
await writer.write(buffer);
|
|
});
|
|
}
|
|
});
|
|
|
|
suite('in object mode', () => {
|
|
for (const ctor of ctors) {
|
|
test(`passes through ${ctor.name} chunks`, async () => {
|
|
const buffer = new ctor(4);
|
|
const writable = new Writable({
|
|
objectMode: true,
|
|
write: common.mustCall((chunk, encoding, callback) => {
|
|
assert(chunk instanceof ctor);
|
|
assert.strictEqual(chunk, buffer);
|
|
callback();
|
|
}),
|
|
});
|
|
writable.on('error', common.mustNotCall());
|
|
const writer = Writable.toWeb(writable).getWriter();
|
|
await writer.write(buffer);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
suite('underlying Duplex', () => {
|
|
suite('in non-object mode', () => {
|
|
for (const ctor of ctors) {
|
|
test(`converts ${ctor.name} chunks`, async () => {
|
|
const buffer = new ctor(4);
|
|
const duplex = new Duplex({
|
|
writableObjectMode: false,
|
|
write: common.mustCall((chunk, encoding, callback) => {
|
|
assert(Buffer.isBuffer(chunk));
|
|
assert.strictEqual(chunk.buffer, buffer);
|
|
callback();
|
|
}),
|
|
read() {
|
|
this.push(null);
|
|
},
|
|
});
|
|
duplex.on('error', common.mustNotCall());
|
|
const writer = Duplex.toWeb(duplex).writable.getWriter();
|
|
await writer.write(buffer);
|
|
});
|
|
}
|
|
});
|
|
|
|
suite('in object mode', () => {
|
|
for (const ctor of ctors) {
|
|
test(`passes through ${ctor.name} chunks`, async () => {
|
|
const buffer = new ctor(4);
|
|
const duplex = new Duplex({
|
|
writableObjectMode: true,
|
|
write: common.mustCall((chunk, encoding, callback) => {
|
|
assert(chunk instanceof ctor);
|
|
assert.strictEqual(chunk, buffer);
|
|
callback();
|
|
}),
|
|
read() {
|
|
this.push(null);
|
|
},
|
|
});
|
|
duplex.on('error', common.mustNotCall());
|
|
const writer = Duplex.toWeb(duplex).writable.getWriter();
|
|
await writer.write(buffer);
|
|
});
|
|
}
|
|
});
|
|
});
|