cbuffer
Version:
Circular Buffer JavaScript implementation
60 lines (56 loc) • 1.99 kB
JavaScript
var vows = require('vows');
var assert = require('assert');
var suite = vows.describe('slice');
require('../env');
suite.addBatch({
'slice': {
topic: function() {
return CBuffer(1, 3, 5, 7, 11);
},
'no arguments returns array of data': function(buffer) {
assert.deepEqual(buffer.slice(), [1, 3, 5, 7, 11]);
},
'handles postive start and end indexs': function(buffer) {
assert.deepEqual(buffer.slice(0), [1, 3, 5, 7, 11]);
assert.deepEqual(buffer.slice(0, 3), [1, 3, 5]);
assert.deepEqual(buffer.slice(1, 3), [3, 5]);
},
'handles negative start and end indexs': function(buffer) {
assert.deepEqual(buffer.slice(-2), [7, 11]);
assert.deepEqual(buffer.slice(0, -2), [1, 3, 5]);
},
'handles indexes outside of the buffer size': function(buffer) {
assert.deepEqual(buffer.slice(0, 10), [1, 3, 5, 7, 11]);
assert.deepEqual(buffer.slice(0, -7), []);
assert.deepEqual(buffer.slice(-10), [1, 3, 5, 7, 11]);
},
'works with partial CBuffers': {
topic: function() {
var buffer = CBuffer(10);
buffer.push(1, 2, 3);
return buffer;
},
'handles partial CBuffers': function(buffer) {
assert.deepEqual(buffer.slice(1, 3), [2, 3]);
}
},
'handles circular cases': {
topic: function() {
var buffer = CBuffer(-1, 0, 1, 3, 5);
buffer.push(7, 9);
return buffer;
},
'handles circular buffers': function(buffer) {
assert.deepEqual(buffer.slice(), [1, 3, 5, 7, 9]);
assert.deepEqual(buffer.slice(0), [1, 3, 5, 7, 9]);
assert.deepEqual(buffer.slice(1, 3), [3, 5]);
assert.deepEqual(buffer.slice(-3), [5, 7, 9]);
assert.deepEqual(buffer.slice(-4, -1), [3, 5, 7]);
assert.deepEqual(buffer.slice(-1, 1), []);
assert.deepEqual(buffer.slice(-4, -4), []);
assert.deepEqual(buffer.slice(-4, -5), []);
}
}
}
});
suite.export(module);