rafa
Version:
Rafa.js is a Javascript framework for building concurrent applications.
46 lines (41 loc) • 1.36 kB
JavaScript
module.exports = (assert, Rafa) => {
suite("until", () => {
test("emit until value", () => {
var values = [1,2];
var idx = 0;
var messages = [];
var it = Rafa.Enumerator.until(() => values[idx++], 2);
var callback = m => messages.push(m);
it.next(callback);
it.next(callback);
assert.equal(messages[0].value, 1);
assert.equal(messages[1].value, 2);
assert.ok(messages[1].isDone);
});
test("emit until undefined", () => {
var values = [1];
var idx = 0;
var messages = [];
var it = Rafa.Enumerator.until(() => values[idx++]);
var callback = m => messages.push(m);
it.next(callback);
it.next(callback);
assert.equal(messages[0].value, 1);
assert.isUndefined(messages[1].value);
assert.ok(messages[1].isDone);
});
test("throws CompleteError", () => {
var it = Rafa.Enumerator.until(() => undefined)
it.next(it.noop);
assert.throws(() => it.next(it.noop), RangeError, "Enumerator is complete");
});
test("emit error", () => {
var it = Rafa.Enumerator.until(() => new Error("foo"));
it.next(function(message){
assert.ok(message.isError);
assert.ok(message.error instanceof Error);
assert.equal(message.error.message, "foo");
});
});
});
};