58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
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();
|
|
});
|