UNPKG

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
"use strict"; 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(); }); });