Mercurial > prosody-hg
comparison spec/util_multitable_spec.lua @ 8236:4878e4159e12
Port tests to the `busted` test runner
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Fri, 15 Sep 2017 17:07:57 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 8235:7d9a2c200736 | 8236:4878e4159e12 |
|---|---|
| 1 | |
| 2 local multitable = require "util.multitable"; | |
| 3 | |
| 4 describe("util.multitable", function() | |
| 5 describe("#new()", function() | |
| 6 it("should create a multitable", function() | |
| 7 local mt = multitable.new(); | |
| 8 assert.is_table(mt, "Multitable is a table"); | |
| 9 assert.is_function(mt.add, "Multitable has method add"); | |
| 10 assert.is_function(mt.get, "Multitable has method get"); | |
| 11 assert.is_function(mt.remove, "Multitable has method remove"); | |
| 12 end); | |
| 13 end); | |
| 14 | |
| 15 describe("#get()", function() | |
| 16 it("should allow getting correctly", function() | |
| 17 local function has_items(list, ...) | |
| 18 local should_have = {}; | |
| 19 if select('#', ...) > 0 then | |
| 20 assert.is_table(list, "has_items: list is table", 3); | |
| 21 else | |
| 22 assert.is.falsy(list and #list > 0, "No items, and no list"); | |
| 23 return true, "has-all"; | |
| 24 end | |
| 25 for n=1,select('#', ...) do should_have[select(n, ...)] = true; end | |
| 26 for _, item in ipairs(list) do | |
| 27 if not should_have[item] then return false, "too-many"; end | |
| 28 should_have[item] = nil; | |
| 29 end | |
| 30 if next(should_have) then | |
| 31 return false, "not-enough"; | |
| 32 end | |
| 33 return true, "has-all"; | |
| 34 end | |
| 35 local function assert_has_all(message, list, ...) | |
| 36 return assert.are.equal(select(2, has_items(list, ...)), "has-all", message or "List has all expected items, and no more", 2); | |
| 37 end | |
| 38 | |
| 39 local mt = multitable.new(); | |
| 40 | |
| 41 local trigger1, trigger2, trigger3 = {}, {}, {}; | |
| 42 local item1, item2, item3 = {}, {}, {}; | |
| 43 | |
| 44 assert_has_all("Has no items with trigger1", mt:get(trigger1)); | |
| 45 | |
| 46 | |
| 47 mt:add(1, 2, 3, item1); | |
| 48 | |
| 49 assert_has_all("Has item1 for 1, 2, 3", mt:get(1, 2, 3), item1); | |
| 50 end); | |
| 51 end); | |
| 52 | |
| 53 -- Doesn't support nil | |
| 54 --[[ mt:add(nil, item1); | |
| 55 mt:add(nil, item2); | |
| 56 mt:add(nil, item3); | |
| 57 | |
| 58 assert_has_all("Has all items with (nil)", mt:get(nil), item1, item2, item3); | |
| 59 ]] | |
| 60 end); |
