Software /
code /
prosody
Comparison
spec/util_indexedbheap_spec.lua @ 11116:d334f2bebe55
Merge 0.11->trunk
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 30 Sep 2020 07:25:32 +0100 |
parent | 10998:f3fc0f799dc4 |
parent | 11115:7d4c292f178e |
comparison
equal
deleted
inserted
replaced
11114:6a608ecb3471 | 11116:d334f2bebe55 |
---|---|
1 local ibh = require"util.indexedbheap"; | 1 local ibh = require"util.indexedbheap"; |
2 | |
3 local function verify_heap_property(priorities) | |
4 for k in ipairs(priorities) do | |
5 local parent = priorities[k]; | |
6 local childA = priorities[2*k]; | |
7 local childB = priorities[2*k+1]; | |
8 -- print("-", parent, childA, childB) | |
9 assert(childA == nil or childA > parent, "heap property violated"); | |
10 assert(childB == nil or childB > parent, "heap property violated"); | |
11 end | |
12 end | |
13 | |
2 local h | 14 local h |
3 setup(function () | 15 setup(function () |
4 h = ibh.create(); | 16 h = ibh.create(); |
5 end) | 17 end) |
6 describe("util.indexedbheap", function () | 18 describe("util.indexedbheap", function () |
7 pending("item can be moved from end to top", function () | 19 it("item can be moved from end to top", function () |
20 verify_heap_property(h); | |
8 h:insert("a", 1); | 21 h:insert("a", 1); |
22 verify_heap_property(h); | |
9 h:insert("b", 2); | 23 h:insert("b", 2); |
24 verify_heap_property(h); | |
10 h:insert("c", 3); | 25 h:insert("c", 3); |
26 verify_heap_property(h); | |
11 local id = h:insert("*", 10); | 27 local id = h:insert("*", 10); |
28 verify_heap_property(h); | |
12 h:reprioritize(id, 0); | 29 h:reprioritize(id, 0); |
30 verify_heap_property(h); | |
13 assert.same({ 0, "*", id }, { h:pop() }); | 31 assert.same({ 0, "*", id }, { h:pop() }); |
14 end) | 32 end) |
15 end); | 33 end); |