rafa
Version:
Rafa.js is a Javascript framework for building concurrent applications.
56 lines (46 loc) • 1.59 kB
JavaScript
require("../../../core.js")(function(assert, Rafa) {
var fs = require('fs');
var readline = require('readline');
suite("Read File", () => {
test("fast stream", (done) => {
var stream = Rafa.stream();
var values = [];
stream
.map(line => parseInt(line.replace(/[^\d]/g, ''), 10))
.each(n => values.push(n))
.done(() => {
assert.equal(values.length, 9);
for (var i=0; i < values.length; i++)
assert.equal(values[i], i+1);
done();
});
var rs = fs.createReadStream(__dirname+"/input.txt");
var rd = readline.createInterface({ input: rs });
rd.on('line', stream.listener());
rs.on('error', stream.listener("Error"));
rd.on('close', stream.listener("Done"));
});
test("slow stream", (done) => {
var stream = Rafa.stream();
var values = [];
stream
.map(line => {
var f = Rafa.future();
setTimeout(() => f.resolve(parseInt(line.replace(/[^\d]/g, ''), 10)));
return f.promise;
})
.each(n => values.push(n))
.done(() => {
assert.equal(values.length, 9);
for (var i=0; i < values.length; i++)
assert.equal(values[i], i+1);
done();
});
var rs = fs.createReadStream(__dirname+"/input.txt");
var rd = readline.createInterface({ input: rs });
rd.on('line', stream.listener("Value", 12));
rs.on('error', stream.listener("Error"));
rd.on('close', stream.listener("Done"));
});
});
});