Software /
code /
prosody
Annotate
tests/test_util_multitable.lua @ 2697:780f767a5034
Merge with 0.7
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sun, 21 Feb 2010 20:53:23 +0000 |
parent | 1523:841d61be198f |
child | 2923:b7049746bd29 |
rev | line source |
---|---|
1523
841d61be198f
Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents:
896
diff
changeset
|
1 -- Prosody IM |
797 | 2 -- Copyright (C) 2008-2009 Matthew Wild |
3 -- Copyright (C) 2008-2009 Waqas Hussain | |
4 -- | |
5 -- This project is MIT/X11 licensed. Please see the | |
6 -- COPYING file in the source package for more information. | |
7 -- | |
8 | |
9 | |
10 function new(new, multitable) | |
11 mt = new(); | |
12 assert_table(mt, "Multitable is a table"); | |
13 assert_function(mt.add, "Multitable has method add"); | |
14 assert_function(mt.get, "Multitable has method get"); | |
15 assert_function(mt.remove, "Multitable has method remove"); | |
16 | |
17 get(mt.get, multitable); | |
18 end | |
19 | |
20 function get(get, multitable) | |
21 local function has_items(list, ...) | |
22 local should_have = {}; | |
23 if select('#', ...) > 0 then | |
24 assert_table(list, "has_items: list is table", 3); | |
25 else | |
26 assert_is_not(list and #list > 0, "No items, and no list"); | |
27 return true, "has-all"; | |
28 end | |
29 for n=1,select('#', ...) do should_have[select(n, ...)] = true; end | |
30 for n, item in ipairs(list) do | |
31 if not should_have[item] then return false, "too-many"; end | |
32 should_have[item] = nil; | |
33 end | |
34 if next(should_have) then | |
35 return false, "not-enough"; | |
36 end | |
37 return true, "has-all"; | |
38 end | |
39 local function assert_has_all(message, list, ...) | |
40 return assert_equal(select(2, has_items(list, ...)), "has-all", message or "List has all expected items, and no more", 2); | |
41 end | |
42 | |
43 mt = multitable.new(); | |
44 | |
45 local trigger1, trigger2, trigger3 = {}, {}, {}; | |
46 local item1, item2, item3 = {}, {}, {}; | |
47 | |
48 assert_has_all("Has no items with trigger1", mt:get(trigger1)); | |
49 | |
50 | |
51 mt:add(1, 2, 3, item1); | |
52 | |
53 assert_has_all("Has item1 for 1, 2, 3", mt:get(1, 2, 3), item1); | |
54 | |
55 -- Doesn't support nil | |
56 --[[ mt:add(nil, item1); | |
57 mt:add(nil, item2); | |
58 mt:add(nil, item3); | |
59 | |
60 assert_has_all("Has all items with (nil)", mt:get(nil), item1, item2, item3); | |
61 ]] | |
62 end |