From 5186b7c61d82c9e4ce7aa5cba9d8eead9cb6fa3c Mon Sep 17 00:00:00 2001 From: Rahix Date: Mon, 10 Apr 2017 16:53:17 +0200 Subject: [PATCH] Add unit tests --- test_bc.lua | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 test_bc.lua diff --git a/test_bc.lua b/test_bc.lua new file mode 100644 index 000000000000..72922405df1a --- /dev/null +++ b/test_bc.lua @@ -0,0 +1,158 @@ +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 +