Skip to content

Commit 924f0b6

Browse files
committed
cov(tests): better coverage
1 parent 5e633e1 commit 924f0b6

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

src/lib/priority-queue/priority-queue.spec.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,50 @@ test('size', t => {
4848
queue.dequeue();
4949
t.is(queue.size, 0);
5050
});
51+
52+
test('default priority', t => {
53+
const queue = new PriorityQueue<Item>();
54+
55+
queue.queue({ id: 3 }, -2);
56+
queue.queue({ id: 1 });
57+
queue.queue({ id: 1 });
58+
queue.queue({ id: 2 }, -1);
59+
60+
t.deepEqual(queue.dequeue(), { id: 1 });
61+
t.deepEqual(queue.dequeue(), { id: 1 });
62+
t.deepEqual(queue.dequeue(), { id: 2 });
63+
t.deepEqual(queue.dequeue(), { id: 3 });
64+
});
65+
66+
test('duplicate throws error', t => {
67+
const queue = new PriorityQueue<number>();
68+
69+
const value = 42;
70+
71+
queue.queue(value);
72+
73+
const reason = t.throws(() => {
74+
queue.queue(value, 24);
75+
});
76+
77+
t.is(reason.message, 'Cannot add element that already exist');
78+
});
79+
80+
test('add/poll throws error', t => {
81+
t.plan(2);
82+
83+
const queue = new PriorityQueue<any>();
84+
let errors = 0;
85+
86+
try {
87+
queue.add('value');
88+
} catch (e) {
89+
t.is(++errors, 1);
90+
}
91+
92+
try {
93+
queue.poll();
94+
} catch (e) {
95+
t.is(++errors, 2);
96+
}
97+
});

src/lib/priority-queue/priority-queue.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,16 @@ export class PriorityQueue<T> extends MaxHeapTree<T> implements Queue<T> {
7575
return element;
7676
}
7777

78+
/**
79+
* @private
80+
*/
7881
public add(element: T): this {
7982
throw new Error('Use `queue` method instead');
8083
}
8184

85+
/**
86+
* @private
87+
*/
8288
public poll(): T {
8389
throw new Error('Use `dequeue` method instead');
8490
}

0 commit comments

Comments
 (0)