You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
4.0 KiB

require "lunit"
bc = require("bc")
module("test_bc", package.seeall, lunit.testcase)
function test_init()
bci = bc:init("master")
end
function test_set_get_noun()
bci = bc:init("master")
for i,val in ipairs({"string", true, 10}) do
assert_true(bci:set_noun("light", val), "Could not set noun")
assert_equal(val, bci:get_noun("light"), "Result does not match")
end
end
function test_set_remote_noun_failure()
bci = bc:init("master")
assert_false(bci:set_noun("power"), "Something did not go to plan")
end
function test_request_remote_noun()
bci = bc:init("master")
assert_equal(12, bci:get_noun("power"), "Wrong value returned")
end
function test_call_verb()
bci = bc:init("master")
bci:call_verb("inc_pwr", 11)
assert_equal(11, bci:get_noun("power"), "Wrong value returned")
end
function test_listen_onchange()
bci = bc:init("master")
i = false
bci:listen_noun("power", "onchange", nil, function()
i = true
end)
bci:call_verb("inc_pwr", 13)
assert_true(i, "Callback was not invoked")
end
function test_listen_cancel()
bci = bc:init("master")
i = false
local id = bci:listen_noun("power", "onchange", nil, function()
i = true
end)
bci:listen_cancel("power", id)
bci:call_verb("inc_pwr", 13)
assert_false(i, "Callback was not canelled")
end
function test_fromafar_request_noun()
bci = bc:init("master")
bci:set_noun("light", true)
assert_equal(true, bci._backend:debug_request_noun("light"), "Wrong value returned")
end
function test_fromafar_call_verb()
bci = bc:init("master")
local i = false
bci:on_verb("toggle_light", function()
i = true
end)
bci._backend:debug_call_verb("toggle_light")
assert_true(i, "Verb was not called")
end
function test_fromafar_register_cb_onchange()
bci = bc:init("master")
local i = false
bci._backend:debug_register_cb("light", "onchange", nil, function()
i = true
end)
bci:set_noun("light", true)
assert_true(i, "Callback was not invoked")
end
function test_fromafar_register_cb_onrising()
bci = bc:init("master")
local i = false
bci:set_noun("light", 10)
bci._backend:debug_register_cb("light", "onrising", nil, function()
i = true
end)
bci:set_noun("light", 9)
assert_false(i, "Callback was wrongly invoked")
bci:set_noun("light", 10)
assert_true(i, "Callback was not invoked")
end
function test_fromafar_register_cb_onfalling()
bci = bc:init("master")
local i = false
bci:set_noun("light", 10)
bci._backend:debug_register_cb("light", "onfalling", nil, function()
i = true
end)
bci:set_noun("light", 11)
assert_false(i, "Callback was wrongly invoked")
bci:set_noun("light", 10)
assert_true(i, "Callback was not invoked")
end
function test_fromafar_register_cb_onvalue()
bci = bc:init("master")
local i = false
bci:set_noun("light", 10)
bci._backend:debug_register_cb("light", "onvalue", 11, function()
i = true
end)
bci:set_noun("light", 12)
assert_false(i, "Callback was wrongly invoked")
bci:set_noun("light", 11)
assert_true(i, "Callback was not invoked")
end
function test_fromafar_register_cb_onabove()
bci = bc:init("master")
local i = false
bci:set_noun("light", 10)
bci._backend:debug_register_cb("light", "onabove", 20, function()
i = true
end)
bci:set_noun("light", 15)
assert_false(i, "Callback was wrongly invoked")
bci:set_noun("light", 26)
assert_true(i, "Callback was not invoked")
end
function test_fromafar_register_cb_onbelow()
bci = bc:init("master")
local i = false
bci:set_noun("light", 10)
bci._backend:debug_register_cb("light", "onbelow", 5, function()
i = true
end)
bci:set_noun("light", 11)
assert_false(i, "Callback was wrongly invoked")
bci:set_noun("light", 3)
assert_true(i, "Callback was not invoked")
end
function test_fromafar_cancel_cb()
bci = bc:init("master")
local i = false
bci:set_noun("light", 10)
bci._backend:debug_register_cb("light", "onchange", nil, function()
i = true
end)
bci._backend:debug_cancel_cb()
bci:set_noun("light", 3)
assert_false(i, "Callback was not cancelled")
end