rafa
Version:
Rafa.js is a Javascript framework for building concurrent applications.
65 lines (57 loc) • 1.82 kB
JavaScript
module.exports = function(assert, Rafa) {
suite("write", () => {
test("has callback", () => {
var l = Rafa.channel();
var value;
var callback = m => value = m;
l.callback = callback;
l.write(1);
assert.equal(value, 1);
assert.isNull(l.callback);
});
test("has size & no callback", () => {
var l = Rafa.channel(2);
l.write(1);
assert.equal(l.buffer.length, 1);
assert.equal(l.buffer.buffer[0], 1);
l.write(2);
assert.equal(l.buffer.length, 2);
assert.equal(l.buffer.buffer[0], 1);
assert.equal(l.buffer.buffer[1], 2);
});
test("drop & keep first in: size of 1", () => {
var l = Rafa.channel(1);
l.write(1);
l.write(2);
assert.equal(l.buffer.length, 1);
assert.equal(l.buffer.buffer[0], 1);
});
test("drop & keep first in: size of 4", () => {
var l = Rafa.channel(4);
var i = 0;
while (i < 6) l.write(i++);
assert.equal(l.buffer.length, 4);
assert.equal(l.buffer.buffer[0], 0);
assert.equal(l.buffer.buffer[1], 1);
assert.equal(l.buffer.buffer[2], 2);
assert.equal(l.buffer.buffer[3], 3);
});
test("drop & keep last in: rotate with size of 1", () => {
var l = Rafa.channel(1, 'rotate');
l.write(1);
l.write(2);
assert.equal(l.buffer.length, 1);
assert.equal(l.buffer.buffer[0], 2);
});
test("drop & keep last in: rotate with size of 4", () => {
var l = Rafa.channel(4, 'rotate');
var i = 0;
while (i < 6) l.write(i++);
assert.equal(l.buffer.length, 4);
assert.equal(l.buffer.buffer[0], 4);
assert.equal(l.buffer.buffer[1], 5);
assert.equal(l.buffer.buffer[2], 2);
assert.equal(l.buffer.buffer[3], 3);
});
});
};