ts-collection
Version:
This is re-write of the java collection classes in typescript. There is some tweak as typescript templates are not as equivalent as Java.
67 lines (66 loc) • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var assert = require("assert");
var Integer_1 = require("./Integer");
var priorityqueue_1 = require("../../util/priorityqueue");
function left(index) {
return 2 * index + 1;
}
function right(index) {
return 2 * index + 2;
}
describe('testing priorityqueue with Integer comparator', function () {
var pq = null;
beforeEach(function (done) {
pq = new priorityqueue_1.PriorityQueue(new Integer_1.IntegerComparator());
pq.add(new Integer_1.Integer(4));
pq.add(new Integer_1.Integer(1));
pq.add(new Integer_1.Integer(3));
pq.add(new Integer_1.Integer(2));
pq.add(new Integer_1.Integer(16));
pq.add(new Integer_1.Integer(9));
pq.add(new Integer_1.Integer(10));
pq.add(new Integer_1.Integer(14));
pq.add(new Integer_1.Integer(8));
pq.add(new Integer_1.Integer(7));
done();
});
after(function (done) {
done();
});
it('testing size', function (done) {
assert(pq.size() === 10, 'priorityquere size should be 10');
done();
});
it('testing isEmpty', function (done) {
assert(pq.isEmpty() === false, 'pq should not be empty');
done();
});
it('testing isEmpty', function (done) {
assert(pq.size() === 10, 'pq should not be empty');
pq.clear();
assert(pq.size() === 0, 'pq should be empty');
assert(pq.isEmpty() === true, 'pq should be empty');
done();
});
it('testing poll', function (done) {
checkHeap();
done();
});
function checkHeap() {
var arr = new Array();
while (!pq.isEmpty()) {
arr.push(pq.poll());
}
for (var i = 1; i < arr.length; i++) {
assert(arr[i - 1] >= arr[i], 'heap should alwyas maximum at its top');
}
assert(pq.size() === 0, 'pq should be empty');
}
it('testing remove', function (done) {
pq.remove(new Integer_1.Integer(10));
assert(pq.size() === 9, 'after deleting 16 pq should have 9 elements');
checkHeap();
done();
});
});