1 var assert = require("chai").assert;
3 var ForkStream = require("../");
5 describe("fork-stream", function() {
6 it("should split objects into their correct streams", function(done) {
7 var fork = new ForkStream({
8 classifier: function classify(e, done) {
9 return done(null, e >= 5);
13 var expectedA = [5, 7, 9],
14 expectedB = [1, 4, 3, 1];
19 fork.a.on("data", function(e) {
23 fork.b.on("data", function(e) {
27 fork.on("finish", function() {
28 assert.deepEqual(expectedA, actualA);
29 assert.deepEqual(expectedB, actualB);
34 [1, 5, 7, 4, 9, 3, 1].forEach(function(n) {
41 it("should respect backpressure", function(done) {
42 var fork = new ForkStream({
44 classifier: function classify(e, done) {
45 return done(null, e >= 5);
49 var expected = [5, 7],
52 fork.a.on("data", function(e) {
56 var timeout = setTimeout(function() {
57 assert.deepEqual(expected, actual);
62 fork.on("finish", function() {
63 clearTimeout(timeout);
65 return done(Error("should not finish"));
68 [1, 5, 7, 4, 9, 3, 1].forEach(function(n) {
75 it("should end the outputs when the input finishes", function(done) {
76 var fork = new ForkStream();
79 var onEnd = function onEnd() {
85 fork.a.on("end", onEnd)
86 fork.b.on("end", onEnd);
88 // start "flowing" mode