Software /
code /
prosody
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 |
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); |