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")); }); });
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 19553 | swellard | Move and rename clients | ||
//guest/perforce_software/helix-web-services/main/source/clients/2016.1.0/javascript/node_modules/duplexer2/test/tests.js | |||||
#1 | 19053 | tjuricek |
Rebuild JavaScript Client SDK. The JavaScript client now is a "typed" approach that tends to be similar in approach to the other clients, based on the swagger definition for the platform version. Importantly, client SDK tests are individual scripts (that run under node) that are actually controlled via TestNG. This approach now lets us use a consistent test reporting format so we can at least collect reports from each of the jobs. The documentation is still in progress, that I want to validate as the tests are generated. |