diff options
author | Matthew Wild <mwild1@gmail.com> | 2009-02-13 16:43:44 +0000 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2009-02-13 16:43:44 +0000 |
commit | 66155f71aa3d5ebf312b7b699984d0be08f2fdd1 (patch) | |
tree | c6f4fc0143aa4d60d8d7e0ac87611a57d9ce866f /tests/test_util_multitable.lua | |
parent | 5f37a23f3547cd99fb0a9fba50833da4a14a9e2f (diff) | |
download | prosody-66155f71aa3d5ebf312b7b699984d0be08f2fdd1.tar.gz prosody-66155f71aa3d5ebf312b7b699984d0be08f2fdd1.zip |
Add tests for util.multitable
Diffstat (limited to 'tests/test_util_multitable.lua')
-rw-r--r-- | tests/test_util_multitable.lua | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/test_util_multitable.lua b/tests/test_util_multitable.lua new file mode 100644 index 00000000..aa93fc8d --- /dev/null +++ b/tests/test_util_multitable.lua @@ -0,0 +1,62 @@ +-- Prosody IM v0.3 +-- Copyright (C) 2008-2009 Matthew Wild +-- Copyright (C) 2008-2009 Waqas Hussain +-- +-- This project is MIT/X11 licensed. Please see the +-- COPYING file in the source package for more information. +-- + + +function new(new, multitable) + mt = new(); + assert_table(mt, "Multitable is a table"); + assert_function(mt.add, "Multitable has method add"); + assert_function(mt.get, "Multitable has method get"); + assert_function(mt.remove, "Multitable has method remove"); + + get(mt.get, multitable); +end + +function get(get, multitable) + local function has_items(list, ...) + local should_have = {}; + if select('#', ...) > 0 then + assert_table(list, "has_items: list is table", 3); + else + assert_is_not(list and #list > 0, "No items, and no list"); + return true, "has-all"; + end + for n=1,select('#', ...) do should_have[select(n, ...)] = true; end + for n, item in ipairs(list) do + if not should_have[item] then return false, "too-many"; end + should_have[item] = nil; + end + if next(should_have) then + return false, "not-enough"; + end + return true, "has-all"; + end + local function assert_has_all(message, list, ...) + return assert_equal(select(2, has_items(list, ...)), "has-all", message or "List has all expected items, and no more", 2); + end + + mt = multitable.new(); + + local trigger1, trigger2, trigger3 = {}, {}, {}; + local item1, item2, item3 = {}, {}, {}; + + assert_has_all("Has no items with trigger1", mt:get(trigger1)); + + + mt:add(1, 2, 3, item1); + + assert_has_all("Has item1 for 1, 2, 3", mt:get(1, 2, 3), item1); + +-- Doesn't support nil +--[[ mt:add(nil, item1); + mt:add(nil, item2); + mt:add(nil, item3); + + assert_has_all("Has all items with (nil)", mt:get(nil), item1, item2, item3); +]] +end |