rafa
Version:
Rafa.js is a Javascript framework for building concurrent applications.
52 lines (46 loc) • 1.53 kB
JavaScript
module.exports = (assert, Rafa) => {
suite("array", () => {
test("array with length of 0", () => {
var message;
var callback = m => message = m;
var it = Rafa.Enumerator.array([]);
it.next(callback);
assert.ok(message.isDone);
assert.isUndefined(message.value);
});
test("array with length of 1", () => {
var it = Rafa.Enumerator.array([1]);
var messages = [];
var callback = m => messages.push(m);
it.next(callback);
assert.equal(messages[0].value, 1);
assert.ok(messages[0].isDone);
});
test("array with length of 2", () => {
var it = Rafa.Enumerator.array([1,2]);
var messages = [];
var callback = m => messages.push(m);
it.next(callback);
it.next(callback);
assert.ok(!messages[0].isDone);
assert.ok(messages[1].isDone);
assert.equal(messages[0].value, 1);
assert.equal(messages[1].value, 2);
});
test("throws CompleteError", () => {
var it = Rafa.Enumerator.array([1]);
var noop = it.noop;
it.next(noop);
assert.throws(() => it.next(noop), RangeError, "Enumerator is complete");
});
test("emits error message", () => {
var it = Rafa.Enumerator.array([new RangeError("foo")]);
it.next(message => {
assert.ok(message.isError);
assert.ok(message.error instanceof Error);
assert.ok(message.error instanceof RangeError);
assert.equal(message.error.message, "foo");
});
});
});
};