rafa
Version:
Rafa.js is a Javascript framework for building concurrent applications.
60 lines (51 loc) • 1.94 kB
JavaScript
module.exports = (assert, Rafa) => {
suite("push", () => {
test("fill to capacity without overwrite", () => {
var buffer = Rafa.buffer(3, false);
assert.equal(buffer.capacity, 3);
assert.equal(buffer.buffer.length, 3);
assert.equal(buffer.start, 0);
assert.equal(buffer.length, 0);
assert.ok(!buffer.overwrite);
assert.isUndefined(buffer.head());
assert.isUndefined(buffer.tail());
for (var i = 1; i <= 3; i++) {
assert.equal(buffer.push(i), 1);
assert.equal(buffer.start, 0);
assert.equal(buffer.length, i);
assert.equal(buffer.buffer[i-1], i);
assert.equal(buffer.head(), buffer.buffer[0]);
assert.equal(buffer.tail(), buffer.buffer[i-1]);
}
assert.equal(buffer.push(4), 0);
assert.equal(buffer.head(), buffer.buffer[0]);
assert.equal(buffer.tail(), buffer.buffer[2]);
});
test("fill to capacity with overwrite", () => {
var buffer = Rafa.buffer(3);
assert.equal(buffer.capacity, 3);
assert.equal(buffer.buffer.length, 3);
assert.equal(buffer.start, 0);
assert.equal(buffer.length, 0);
assert.ok(buffer.overwrite);
for (var i = 1; i <= 3; i++) {
assert.equal(buffer.push(i), 1);
assert.equal(buffer.start, 0);
assert.equal(buffer.length, i);
assert.equal(buffer.buffer[i-1], i);
}
assert.equal(buffer.push(4), 2);
assert.equal(buffer.start, 1);
assert.equal(buffer.length, 3);
assert.equal(buffer.buffer[0], 4);
assert.equal(buffer.head(), buffer.buffer[1]);
assert.equal(buffer.tail(), buffer.buffer[0]);
assert.equal(buffer.push(5), 2);
assert.equal(buffer.start, 2);
assert.equal(buffer.buffer[1], 5);
assert.equal(buffer.push(6), 2);
assert.equal(buffer.start, 0);
assert.equal(buffer.buffer[2], 6);
});
});
};