rafa
Version:
Rafa.js is a Javascript framework for building concurrent applications.
51 lines (46 loc) • 1.56 kB
JavaScript
module.exports = (assert, Rafa) => {
suite("all", () => {
test("handles values", () => {
var messages = [];
var a = Rafa.stream();
a.all(message => messages.push(message));
a.push(Rafa.context(), Rafa.message(1));
assert.equal(messages.length, 1);
assert.isNotNull(messages[0]);
assert.ok(messages[0].isValue);
assert.equal(messages[0].value, 1);
});
test("handles errors", () => {
var messages = [];
var a = Rafa.stream();
a.all(message => messages.push(message));
a.push(Rafa.context(), Rafa.errorMessage(1));
assert.equal(messages.length, 1);
assert.isNotNull(messages[0]);
assert.ok(messages[0].isError);
assert.equal(messages[0].error, 1);
});
test("handles done", () => {
var messages = [];
var a = Rafa.stream();
a.all(message => messages.push(message));
a.push(Rafa.context(), Rafa.doneMessage(1));
assert.equal(messages.length, 1);
assert.isNotNull(messages[0]);
assert.ok(messages[0].isDone);
assert.equal(messages[0].value, 1);
});
test("call order", () => {
var values = [];
var stream = Rafa.stream();
stream
.all(m => { values.push(m.value); return m; })
.all(m => { values.push(m.value * 2); return m; })
.all(m => { values.push(m.value * 4); return m; });
stream.push(Rafa.context(), Rafa.message(1));
assert.equal(values[0], 1);
assert.equal(values[1], 2);
assert.equal(values[2], 4);
});
});
};