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
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
|
|
|