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.
94 lines
2.3 KiB
94 lines
2.3 KiB
require("lunit")
|
|
|
|
local network = require("network")
|
|
local serialization = require("serialization")
|
|
local BaseControl = require("bc")
|
|
|
|
module("cleanup", package.seeall, lunit.testcase)
|
|
|
|
function test_clean_simple()
|
|
local bc = BaseControl:new()
|
|
bc:close()
|
|
|
|
local bc = BaseControl:finalize()
|
|
assert_true(network.get_callback(addr) ~= nil, "callback not registered")
|
|
bc:close()
|
|
|
|
assert_error(function()
|
|
bc:nouns()
|
|
end)
|
|
|
|
assert_nil(network.get_callback(addr), "callback still in network")
|
|
end
|
|
|
|
function test_clean_network()
|
|
local bc1 = BaseControl:new()
|
|
local addr1 = network.get_scene()
|
|
bc1:register("cln1", 123)
|
|
bc1:register("cln2v", function() end)
|
|
bc1:finalize()
|
|
|
|
local bc2 = BaseControl:new()
|
|
local addr2 = network.get_scene()
|
|
|
|
assert_true(bc2:has_noun("cln1"), "init failed")
|
|
assert_true(bc2:has_verb("cln2v"), "init failed")
|
|
|
|
network.set_scene(addr1)
|
|
bc1:close()
|
|
|
|
network.set_scene(addr2)
|
|
assert_false(bc2:has_noun("cln1"), "close failed")
|
|
assert_false(bc2:has_verb("cln2v"), "close failed")
|
|
end
|
|
|
|
function test_clean_network2()
|
|
local bc1 = BaseControl:new()
|
|
local addr1 = network.get_scene()
|
|
local n = 0
|
|
bc1:register("cln3", 1231)
|
|
bc1:register("cln4v", function()
|
|
n = n + 1
|
|
end)
|
|
bc1:finalize()
|
|
|
|
local bc2 = BaseControl:new()
|
|
local addr2 = network.get_scene()
|
|
|
|
assert_equal(0, n, "verb called too much/little")
|
|
assert_true(bc2:call("cln4v"), "verb not called")
|
|
assert_equal(1, n, "verb called too much/little")
|
|
assert_equal(1231, bc2:get("cln3"), "noun not retrieved correctly")
|
|
|
|
network.set_scene(addr1)
|
|
bc1:close()
|
|
|
|
assert_false(bc2:call("cln4v"), "verb called")
|
|
assert_equal(1, n, "verb called too much/little")
|
|
assert_error_match("unknown", function()
|
|
bc2:get("cln3")
|
|
end)
|
|
end
|
|
|
|
function test_unclean_deregister()
|
|
local bc = BaseControl:new()
|
|
local addr = network.get_scene()
|
|
|
|
network.set_scene("UNCL-DEREG")
|
|
network.send(
|
|
addr,
|
|
BaseControl.Network.default_port,
|
|
serialization.serialize{ty=BaseControl.Message.Hello}
|
|
)
|
|
|
|
assert_true(network.get_callback(addr) ~= nil, "callback not registered")
|
|
bc = nil
|
|
collectgarbage()
|
|
network.send(
|
|
addr,
|
|
BaseControl.Network.default_port,
|
|
serialization.serialize{ty=BaseControl.Message.Hello}
|
|
)
|
|
assert_nil(network.get_callback(addr), "callback still in network")
|
|
end
|