97 lines
2.3 KiB
JavaScript
97 lines
2.3 KiB
JavaScript
|
|
defineSuite([
|
||
|
|
'Core/Queue'
|
||
|
|
], function(
|
||
|
|
Queue) {
|
||
|
|
'use strict';
|
||
|
|
|
||
|
|
var queue;
|
||
|
|
beforeEach(function() {
|
||
|
|
queue = new Queue();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('can enqueue and dequeue items', function() {
|
||
|
|
queue.enqueue(1);
|
||
|
|
queue.enqueue('a');
|
||
|
|
queue.enqueue(null);
|
||
|
|
|
||
|
|
expect(queue.dequeue()).toEqual(1);
|
||
|
|
expect(queue.dequeue()).toEqual('a');
|
||
|
|
expect(queue.dequeue()).toEqual(null);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('returns undefined when dequeueing while empty', function() {
|
||
|
|
expect(queue.dequeue()).toBeUndefined();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('updates length when enqueuing and dequeuing', function() {
|
||
|
|
expect(queue.length).toEqual(0);
|
||
|
|
|
||
|
|
queue.enqueue('a');
|
||
|
|
expect(queue.length).toEqual(1);
|
||
|
|
|
||
|
|
queue.dequeue();
|
||
|
|
expect(queue.length).toEqual(0);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('compacts underlying array', function() {
|
||
|
|
var i;
|
||
|
|
for (i = 0; i < 1000; i++) {
|
||
|
|
queue.enqueue(i);
|
||
|
|
}
|
||
|
|
for (i = 0; i < 1000; i++) {
|
||
|
|
queue.dequeue();
|
||
|
|
}
|
||
|
|
|
||
|
|
expect(queue._array.length).toBeLessThan(1000);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('can peek at the item at the head of the queue', function() {
|
||
|
|
queue.enqueue(1);
|
||
|
|
queue.enqueue(2);
|
||
|
|
|
||
|
|
expect(queue.peek()).toEqual(1);
|
||
|
|
expect(queue.length).toEqual(2);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('returns undefined when peeking while empty', function() {
|
||
|
|
expect(queue.peek()).toBeUndefined();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('can check if it contains an item', function() {
|
||
|
|
queue.enqueue(1);
|
||
|
|
|
||
|
|
expect(queue.contains(1)).toEqual(true);
|
||
|
|
expect(queue.contains(2)).toEqual(false);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('can clear items', function() {
|
||
|
|
queue.enqueue(1);
|
||
|
|
queue.enqueue(2);
|
||
|
|
|
||
|
|
queue.clear();
|
||
|
|
|
||
|
|
expect(queue.length).toEqual(0);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('can sort items', function() {
|
||
|
|
queue.enqueue(99);
|
||
|
|
queue.enqueue(6);
|
||
|
|
queue.enqueue(1);
|
||
|
|
queue.enqueue(53);
|
||
|
|
queue.enqueue(4);
|
||
|
|
queue.enqueue(0);
|
||
|
|
|
||
|
|
queue.dequeue(); //remove 99
|
||
|
|
|
||
|
|
queue.sort(function(a, b) {
|
||
|
|
return a - b;
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(queue.dequeue()).toEqual(0);
|
||
|
|
expect(queue.dequeue()).toEqual(1);
|
||
|
|
expect(queue.dequeue()).toEqual(4);
|
||
|
|
expect(queue.dequeue()).toEqual(6);
|
||
|
|
expect(queue.dequeue()).toEqual(53);
|
||
|
|
});
|
||
|
|
});
|