diff options
author | Anna Henningsen <anna@addaleax.net> | 2017-10-22 17:05:05 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-10-23 16:50:43 +0200 |
commit | e340a66cb1c951620b360b9420269b36c742ba57 (patch) | |
tree | e918014ae11bba804f392c6e3f2dfab7354e70ad /test/common/duplexpair.js | |
parent | 170bc3166963a9d8811b5bcdd45de6b12827f55c (diff) | |
download | android-node-v8-e340a66cb1c951620b360b9420269b36c742ba57.tar.gz android-node-v8-e340a66cb1c951620b360b9420269b36c742ba57.tar.bz2 android-node-v8-e340a66cb1c951620b360b9420269b36c742ba57.zip |
test: add `makeDuplexPair()` helper
Add a utility for adding simple, streams-API based duplex pairs.
PR-URL: https://github.com/nodejs/node/pull/16269
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test/common/duplexpair.js')
-rw-r--r-- | test/common/duplexpair.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test/common/duplexpair.js b/test/common/duplexpair.js new file mode 100644 index 0000000000..ea5bd86a04 --- /dev/null +++ b/test/common/duplexpair.js @@ -0,0 +1,45 @@ +/* eslint-disable required-modules */ +'use strict'; +const { Duplex } = require('stream'); +const assert = require('assert'); + +const kCallback = Symbol('Callback'); +const kOtherSide = Symbol('Other'); + +class DuplexSocket extends Duplex { + constructor() { + super(); + this[kCallback] = null; + this[kOtherSide] = null; + } + + _read() { + const callback = this[kCallback]; + if (callback) { + this[kCallback] = null; + callback(); + } + } + + _write(chunk, encoding, callback) { + assert.notStrictEqual(this[kOtherSide], null); + assert.strictEqual(this[kOtherSide][kCallback], null); + this[kOtherSide][kCallback] = callback; + this[kOtherSide].push(chunk); + } + + _final(callback) { + this[kOtherSide].on('end', callback); + this[kOtherSide].push(null); + } +} + +function makeDuplexPair() { + const clientSide = new DuplexSocket(); + const serverSide = new DuplexSocket(); + clientSide[kOtherSide] = serverSide; + serverSide[kOtherSide] = clientSide; + return { clientSide, serverSide }; +} + +module.exports = makeDuplexPair; |