|
1 | 1 | describe("Median heap", function()
|
2 | 2 | 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) |
10 | 48 | end)
|
0 commit comments