aboutsummaryrefslogtreecommitdiff
path: root/node_modules/duplexer2/test/tests.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/duplexer2/test/tests.js')
-rw-r--r--node_modules/duplexer2/test/tests.js161
1 files changed, 161 insertions, 0 deletions
diff --git a/node_modules/duplexer2/test/tests.js b/node_modules/duplexer2/test/tests.js
new file mode 100644
index 000000000..c3cf76f67
--- /dev/null
+++ b/node_modules/duplexer2/test/tests.js
@@ -0,0 +1,161 @@
+var assert = require("chai").assert;
+
+var stream = require("readable-stream");
+
+var duplexer2 = require("../");
+
+describe("duplexer2", function() {
+ var writable, readable;
+
+ beforeEach(function() {
+ writable = new stream.Writable({objectMode: true});
+ readable = new stream.Readable({objectMode: true});
+
+ writable._write = function _write(input, encoding, done) {
+ return done();
+ };
+
+ readable._read = function _read(n) {
+ };
+ });
+
+ it("should interact with the writable stream properly for writing", function(done) {
+ var duplex = duplexer2(writable, readable);
+
+ writable._write = function _write(input, encoding, _done) {
+ assert.strictEqual(input, "well hello there");
+
+ return done();
+ };
+
+ duplex.write("well hello there");
+ });
+
+ it("should interact with the readable stream properly for reading", function(done) {
+ var duplex = duplexer2(writable, readable);
+
+ duplex.on("data", function(e) {
+ assert.strictEqual(e, "well hello there");
+
+ return done();
+ });
+
+ readable.push("well hello there");
+ });
+
+ it("should end the writable stream, causing it to finish", function(done) {
+ var duplex = duplexer2(writable, readable);
+
+ writable.once("finish", done);
+
+ duplex.end();
+ });
+
+ it("should finish when the writable stream finishes", function(done) {
+ var duplex = duplexer2(writable, readable);
+
+ duplex.once("finish", done);
+
+ writable.end();
+ });
+
+ it("should end when the readable stream ends", function(done) {
+ var duplex = duplexer2(writable, readable);
+
+ // required to let "end" fire without reading
+ duplex.resume();
+ duplex.once("end", done);
+
+ readable.push(null);
+ });
+
+ it("should bubble errors from the writable stream when no behaviour is specified", function(done) {
+ var duplex = duplexer2(writable, readable);
+
+ var originalErr = Error("testing");
+
+ duplex.on("error", function(err) {
+ assert.strictEqual(err, originalErr);
+
+ return done();
+ });
+
+ writable.emit("error", originalErr);
+ });
+
+ it("should bubble errors from the readable stream when no behaviour is specified", function(done) {
+ var duplex = duplexer2(writable, readable);
+
+ var originalErr = Error("testing");
+
+ duplex.on("error", function(err) {
+ assert.strictEqual(err, originalErr);
+
+ return done();
+ });
+
+ readable.emit("error", originalErr);
+ });
+
+ it("should bubble errors from the writable stream when bubbleErrors is true", function(done) {
+ var duplex = duplexer2({bubbleErrors: true}, writable, readable);
+
+ var originalErr = Error("testing");
+
+ duplex.on("error", function(err) {
+ assert.strictEqual(err, originalErr);
+
+ return done();
+ });
+
+ writable.emit("error", originalErr);
+ });
+
+ it("should bubble errors from the readable stream when bubbleErrors is true", function(done) {
+ var duplex = duplexer2({bubbleErrors: true}, writable, readable);
+
+ var originalErr = Error("testing");
+
+ duplex.on("error", function(err) {
+ assert.strictEqual(err, originalErr);
+
+ return done();
+ });
+
+ readable.emit("error", originalErr);
+ });
+
+ it("should not bubble errors from the writable stream when bubbleErrors is false", function(done) {
+ var duplex = duplexer2({bubbleErrors: false}, writable, readable);
+
+ var timeout = setTimeout(done, 25);
+
+ duplex.on("error", function(err) {
+ clearTimeout(timeout);
+
+ return done(Error("shouldn't bubble error"));
+ });
+
+ // prevent uncaught error exception
+ writable.on("error", function() {});
+
+ writable.emit("error", Error("testing"));
+ });
+
+ it("should not bubble errors from the readable stream when bubbleErrors is false", function(done) {
+ var duplex = duplexer2({bubbleErrors: false}, writable, readable);
+
+ var timeout = setTimeout(done, 25);
+
+ duplex.on("error", function(err) {
+ clearTimeout(timeout);
+
+ return done(Error("shouldn't bubble error"));
+ });
+
+ // prevent uncaught error exception
+ readable.on("error", function() {});
+
+ readable.emit("error", Error("testing"));
+ });
+});