| // Flags: --expose-internals --no-warnings |
| 'use strict'; |
| |
| const common = require('../common'); |
| |
| const assert = require('assert'); |
| |
| const { |
| internalBinding, |
| } = require('internal/test/binding'); |
| |
| const { |
| newWritableStreamFromStreamBase, |
| newReadableStreamFromStreamBase, |
| } = require('internal/webstreams/adapters'); |
| |
| const { |
| JSStream |
| } = internalBinding('js_stream'); |
| |
| { |
| const stream = new JSStream(); |
| stream.onwrite = common.mustCall((req, buf) => { |
| assert.deepStrictEqual(buf[0], Buffer.from('hello')); |
| req.oncomplete(); |
| }); |
| |
| const writable = newWritableStreamFromStreamBase(stream); |
| |
| const writer = writable.getWriter(); |
| |
| writer.write(Buffer.from('hello')).then(common.mustCall()); |
| } |
| |
| { |
| const buf = Buffer.from('hello'); |
| const check = new Uint8Array(buf); |
| |
| const stream = new JSStream(); |
| |
| const readable = newReadableStreamFromStreamBase(stream); |
| |
| const reader = readable.getReader(); |
| |
| reader.read().then(common.mustCall(({ done, value }) => { |
| assert(!done); |
| assert.deepStrictEqual(new Uint8Array(value), check); |
| |
| reader.read().then(common.mustCall(({ done, value }) => { |
| assert(done); |
| assert.strictEqual(value, undefined); |
| })); |
| |
| })); |
| |
| stream.readBuffer(buf); |
| stream.emitEOF(); |
| } |
| |
| { |
| const stream = new JSStream(); |
| stream.onshutdown = common.mustCall((req) => { |
| req.oncomplete(); |
| }); |
| const readable = newReadableStreamFromStreamBase(stream); |
| readable.cancel().then(common.mustCall()); |
| } |