rafa
Version:
Rafa.js is a Javascript framework for building concurrent applications.
42 lines (38 loc) • 1.27 kB
JavaScript
module.exports = (assert, Rafa) => {
suite("until", () => {
test("emits until inner message", () => {
var values = [];
var outer = Rafa.stream();
var inner = Rafa.stream();
outer.until(inner).each(v => values.push(v)).done(v => values.push(v));
outer.write(1).write(2);
inner.write(3);
assert.equal(values.length, 4);
assert.equal(values[0], 1);
assert.equal(values[1], 2);
assert.equal(values[2], 3);
assert.equal(values[3], 3);
assert.isNull(outer.child);
assert.isNull(inner.child);
});
test("outer errors pass through", () => {
var values = [];
var outer = Rafa.stream();
outer.until(Rafa.stream()).error(v => values.push(v)).done(v => values.push(v));
outer.write(new Error("oops"));
assert.equal(values.length, 1);
assert.isNotNull(values[0]);
assert.equal(values[0].message, "oops");
});
test("outer done detaches all", () => {
var values = [];
var outer = Rafa.stream();
var inner = Rafa.stream();
outer.until(inner).done(v => values.push(v));
outer.write(1, true);
assert.equal(values[0], 1);
assert.isNull(outer.child);
assert.isNull(inner.child);
});
});
};