Wed, 21 Oct 2009 13:59:54 +0100
connlisteners: Localize tostring, fixes possible traceback when LuaSec not installed
1523
841d61be198f
Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents:
894
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 |