You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.1 KiB
JavaScript

import { Queue } from "../../Source/Cesium.js";
describe("Core/Queue", function () {
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);
});
});