UNPKG

rafa

Version:

Rafa.js is a Javascript framework for building concurrent applications.

56 lines (46 loc) 1.59 kB
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")); }); }); });