blob: acc35e7fc152d0e168fa7138b2fc471ec38e4c93 [file] [log] [blame]
var pipeline = require('../');
var through = require('through2');
var split = require('split');
var test = require('tape');
test('push', function (t) {
var expected = {};
expected.first = [ 333, 444, 555, 666, 777 ];
expected.second = [ 6.66, 7.77 ];
expected.output = [ 3.33, 4.44, 5.55, 3, 2 ];
t.plan(5 + 2 + 5 + 3);
var a = split();
var b = through.obj(function (row, enc, next) {
this.push(JSON.parse(row));
next();
});
var c = through.obj(function (row, enc, next) { this.push(row.x); next() });
var d = through.obj(function (x, enc, next) { this.push(x * 111); next() });
var first = through.obj(function (row, enc, next) {
if (expected.first.length === 2) {
t.equal(p.length, 5);
p.push(second);
t.equal(p.length, 6);
}
var ex = expected.first.shift();
t.deepEqual(row, ex);
this.push(row / 100);
next();
});
var second = through.obj(function (row, enc, next) {
var ex = expected.second.shift();
t.deepEqual(row, ex);
this.push(Math.floor(10 - row));
next();
});
var p = pipeline.obj([ a, b, c, d, first ]);
t.equal(p.length, 5);
p.pipe(through.obj(function (row, enc, next) {
var ex = expected.output.shift();
t.deepEqual(row, ex);
next();
}));
p.write('{"x":3}\n');
p.write('{"x":4}\n');
p.write('{"x":5}\n');
p.write('{"x":6}\n');
p.write('{"x":7}');
p.end();
});