dig
Version:
Graph algorithms
85 lines (74 loc) • 2.3 kB
JavaScript
require('../../test-env');
describe('dig.data.Queue', function() {
describe("constructor", function() {
it("Queue() returns an empty queue", function() {
var q = new dig.data.Queue();
assert.equal(0, q.size());
});
it("Queue(array) returns a queue with the array's elements", function() {
var q = new dig.data.Queue([1]);
assert.equal(1, q.size());
assert.equal(1, q.dequeue());
});
it("throws an error if new was not used", function() {
assert.throws(function() { dig.data.Queue(); });
});
});
describe("size()", function() {
it("increases as elements are added to the queue", function() {
var q = new dig.data.Queue();
q.enqueue(1);
assert.equal(1, q.size());
q.enqueue(2);
assert.equal(2, q.size());
});
it("decreases as elements are dequeued", function() {
var q = new dig.data.Queue();
q.enqueue("a");
q.enqueue("b");
q.dequeue();
assert.equal(1, q.size());
q.dequeue();
assert.equal(0, q.size());
});
});
describe("enqueue(elem)", function() {
it("adds an element to the queue", function() {
var q = new dig.data.Queue();
q.enqueue("a");
assert.equal(1, q.size());
assert.equal("a", q.dequeue());
});
it("allows primitives to be added", function() {
var q = new dig.data.Queue();
q.enqueue("a");
assert.equal("a", q.dequeue());
q.enqueue(1);
assert.equal(1, q.dequeue());
q.enqueue(false);
assert.equal(false, q.dequeue());
q.enqueue(undefined);
assert.equal(undefined, q.dequeue());
q.enqueue(null);
assert.equal(null, q.dequeue());
});
it("allows objects to be added", function() {
var obj = {key: "key"};
var q = new dig.data.Queue();
q.enqueue(obj);
assert.equal(obj, q.dequeue());
});
});
describe("dequeue()", function() {
it("removes and returns elements in FIFO order", function() {
var q = new dig.data.Queue();
q.enqueue(1);
q.enqueue(2);
assert.equal(1, q.dequeue());
assert.equal(2, q.dequeue());
});
it("throws an error if the queue is empty", function() {
assert.throws(function() { q.dequeue(); });
});
});
});