Skip to content

Commit 61ec71e

Browse files
authored
Improve median_heap tests (#24)
1 parent c026a97 commit 61ec71e

File tree

1 file changed

+45
-7
lines changed

1 file changed

+45
-7
lines changed
Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,48 @@
11
describe("Median heap", function()
22
local median_heap = require("data_structures.median_heap")
3-
local heap = median_heap.new()
4-
for i = 1, 100 do
5-
heap:push(i)
6-
end
7-
assert.equal(50, heap:top())
8-
assert.equal(50, heap:pop())
9-
assert.equal(51, heap:pop())
3+
it("constructs the correct heap when inserting sorted elements", function()
4+
local heap = median_heap.new()
5+
for i = 1, 100 do
6+
heap:push(i)
7+
end
8+
assert.equal(100, heap:size())
9+
assert.equal(50, heap:top())
10+
assert.equal(50, heap:pop())
11+
assert.equal(51, heap:pop())
12+
end)
13+
it("constructs the correct heap when inserting sorted elements in reverse", function()
14+
local heap = median_heap.new()
15+
for i = 100, 1, -1 do
16+
heap:push(i)
17+
end
18+
assert.equal(100, heap:size())
19+
assert.equal(50, heap:top())
20+
assert.equal(50, heap:pop())
21+
assert.equal(51, heap:pop())
22+
end)
23+
it("works when inserting and popping some elements", function()
24+
local heap = median_heap.new()
25+
heap:push(3)
26+
heap:push(2)
27+
heap:push(10)
28+
heap:push(1)
29+
heap:push(7)
30+
-- Numbers in heap: 1, 2, 3, 7, 10
31+
assert.equal(3, heap:top())
32+
assert.equal(5, heap:size())
33+
assert.equal(3, heap:pop())
34+
-- Numbers in heap: 1, 2, 7, 10
35+
assert.equal(4, heap:size())
36+
assert.equal(2, heap:pop())
37+
-- Numbers in heap: 1, 7, 10
38+
assert.equal(3, heap:size())
39+
assert.equal(7, heap:pop())
40+
-- Numbers in heap: 1, 10
41+
assert.equal(2, heap:size())
42+
assert.equal(1, heap:pop())
43+
-- Numbers in heap: 10
44+
assert.equal(1, heap:size())
45+
assert.equal(10, heap:pop())
46+
assert.equal(0, heap:size())
47+
end)
1048
end)

0 commit comments

Comments
 (0)