Software / code / prosody
Annotate
tests/test_util_multitable.lua @ 6649:99fa40d498cc
util.statistics: Collect duration sample even if run fewer times than the sample interval
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 05 May 2015 00:48:55 +0200 |
| parent | 5776:bd0ff8ae98a8 |
| child | 7472:8965ad0aed2c |
| rev | line source |
|---|---|
|
1523
841d61be198f
Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents:
896
diff
changeset
|
1 -- Prosody IM |
|
2923
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
1523
diff
changeset
|
2 -- Copyright (C) 2008-2010 Matthew Wild |
|
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
1523
diff
changeset
|
3 -- Copyright (C) 2008-2010 Waqas Hussain |
|
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
3540
diff
changeset
|
4 -- |
| 797 | 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 | |
|
3540
bc139431830b
Monster whitespace commit (beware the whitespace monster).
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
35 return false, "not-enough"; |
| 797 | 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(); | |
|
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
3540
diff
changeset
|
44 |
| 797 | 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); | |
|
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
3540
diff
changeset
|
54 |
| 797 | 55 -- Doesn't support nil |
| 56 --[[ mt:add(nil, item1); | |
| 57 mt:add(nil, item2); | |
| 58 mt:add(nil, item3); | |
|
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
3540
diff
changeset
|
59 |
| 797 | 60 assert_has_all("Has all items with (nil)", mt:get(nil), item1, item2, item3); |
| 61 ]] | |
| 62 end |