malwoden
Version:
   
58 lines • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var priority_queue_array_1 = require("./priority-queue-array");
describe("PriorityQueue", function () {
it("Can take in numbers", function () {
var q = new priority_queue_array_1.ArrayPriorityQueue(function (n) { return n; });
q.insert(1000);
q.insert(100);
q.insert(10);
q.insert(1);
expect(q.pop()).toEqual(1);
expect(q.pop()).toEqual(10);
expect(q.pop()).toEqual(100);
expect(q.pop()).toEqual(1000);
});
it("Can peek at the top entry", function () {
var q = new priority_queue_array_1.ArrayPriorityQueue(function (n) { return n; });
q.insert(100);
q.insert(50);
q.insert(500);
expect(q.peek()).toEqual(50);
expect(q.peek()).toEqual(50);
expect(q.peek()).toEqual(50);
});
it("Will return undefined when peeking at an empty queue", function () {
var q = new priority_queue_array_1.ArrayPriorityQueue(function (n) { return n; });
expect(q.peek()).toEqual(undefined);
});
it("Will return undefined when popping an empty queue", function () {
var q = new priority_queue_array_1.ArrayPriorityQueue(function (n) { return n; });
expect(q.pop()).toEqual(undefined);
});
it("Can take in objects", function () {
var q = new priority_queue_array_1.ArrayPriorityQueue(function (v) { return v.x; });
q.insert({ x: 100, y: 10 });
q.insert({ x: 10, y: 10 });
q.insert({ x: 1, y: 10 });
q.insert({ x: -1, y: 10 });
q.insert({ x: -10, y: 10 });
q.insert({ x: -100, y: 10 });
expect(q.pop()).toEqual({ x: -100, y: 10 });
expect(q.pop()).toEqual({ x: -10, y: 10 });
expect(q.pop()).toEqual({ x: -1, y: 10 });
expect(q.pop()).toEqual({ x: 1, y: 10 });
expect(q.pop()).toEqual({ x: 10, y: 10 });
expect(q.pop()).toEqual({ x: 100, y: 10 });
});
it("Will prioritize object inserted first", function () {
var q = new priority_queue_array_1.ArrayPriorityQueue(function (v) { return v.x; });
for (var y = 0; y < 100; y++) {
q.insert({ x: 0, y: y });
}
for (var y = 0; y < 100; y++) {
expect(q.pop()).toEqual({ x: 0, y: y });
}
});
});
//# sourceMappingURL=priority-queue-array.spec.js.map