ncollections
Version:
Neat JavaScript collections.
99 lines (84 loc) • 2.56 kB
JavaScript
const assert = require('assert');
const Deque = require(__dirname + '/../main/Deque.js');
const IllegalArgumentException = require(__dirname + '/../main/IllegalArgumentException.js');
const Util = require(__dirname + '/../main/Util.js');
const ListishTest = require(__dirname + '/ListishTest.js');
class DequeTest extends ListishTest {
constructor(dequeClass=Deque, options) {
super(dequeClass, options);
}
class_method_names = this.class_method_names.concat([
'addFirst',
'addLast',
'peekFirst',
'peekLast',
'pollFirst',
'pollLast',
]);
add_fn = function(deque, element) {
return deque.addLast(element);
}
test_addFirst(test) {
it('[] + undefined -> IllegalArgumentException', function() {
let deque = test.newInstance();
let methodCall = () => deque.addFirst(undefined);
assert.throws(methodCall, IllegalArgumentException);
});
it('[] + 1 -> true & [1]', function() {
let deque = test.newInstance();
assert(deque.addFirst(1));
});
it('[1,2] + 1 -> true & [1,1,2]', function() {
let deque = test.newInstance([1,2]);
assert(deque.addFirst(1));
assert(Util.equals(deque.toArray(), [1,1,2]));
});
}
test_addLast(test) {
super.test_add0(test);
}
test_peekFirst(test) {
it('[] -> undefined', function() {
let deque = test.newInstance();
assert(deque.peekFirst() === undefined);
});
it('[1,2,3] -> 1', function() {
let deque = test.newInstance([1,2,3]);
assert(deque.peekFirst() === 1);
});
}
test_peekLast(test) {
it('[] -> undefined', function() {
let deque = test.newInstance();
assert(deque.peekLast() === undefined);
});
it('[1,2,3] -> 2', function() {
let deque = test.newInstance([1,2,3]);
assert(deque.peekLast() === 3);
});
}
test_pollFirst(test) {
it('[] -> undefined', function() {
let deque = test.newInstance();
assert(deque.pollFirst() === undefined);
});
it('[1,2,3] -> 1', function() {
let deque = test.newInstance([1,2,3]);
assert(deque.pollFirst() === 1);
Util.equals(deque.toArray(), [2,3]);
});
}
test_pollLast(test) {
it('[] -> undefined', function() {
let deque = test.newInstance();
assert(deque.pollLast() === undefined);
});
it('[1,2,3] -> 1', function() {
let deque = test.newInstance([1,2,3]);
assert(deque.pollLast() === 3);
Util.equals(deque.toArray(), [1,2]);
});
}
}
module.exports = DequeTest;