Software /
code /
prosody
File
spec/core_moduleapi_spec.lua @ 11928:16cf863b36c0
mod_csi_simple: Skip initiating flush in all but inactive state
Both in the flushing and active states the right thing to do is skip
directly to returning the data. Also in any unknown state, like if the
filter is somehow left behind on module unload.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 20 Nov 2021 23:54:43 +0100 |
parent | 8562:a6188f5d5bb5 |
child | 13400:786c7707f306 |
line wrap: on
line source
package.loaded["core.configmanager"] = {}; package.loaded["core.statsmanager"] = {}; package.loaded["net.server"] = {}; local set = require "util.set"; _G.prosody = { hosts = {}, core_post_stanza = true }; local api = require "core.moduleapi"; local module = setmetatable({}, {__index = api}); local opt = nil; function module:log() end function module:get_option(name) if name == "opt" then return opt; else return nil; end end function test_option_value(value, returns) opt = value; assert(module:get_option_number("opt") == returns.number, "number doesn't match"); assert(module:get_option_string("opt") == returns.string, "string doesn't match"); assert(module:get_option_boolean("opt") == returns.boolean, "boolean doesn't match"); if type(returns.array) == "table" then local target_array, returned_array = returns.array, module:get_option_array("opt"); assert(#target_array == #returned_array, "array length doesn't match"); for i=1,#target_array do assert(target_array[i] == returned_array[i], "array item doesn't match"); end else assert(module:get_option_array("opt") == returns.array, "array is returned (not nil)"); end if type(returns.set) == "table" then local target_items, returned_items = set.new(returns.set), module:get_option_set("opt"); assert(target_items == returned_items, "set doesn't match"); else assert(module:get_option_set("opt") == returns.set, "set is returned (not nil)"); end end describe("core.moduleapi", function() describe("#get_option_*()", function() it("should handle missing options", function() test_option_value(nil, {}); end); it("should return correctly handle boolean options", function() test_option_value(true, { boolean = true, string = "true", array = {true}, set = {true} }); test_option_value(false, { boolean = false, string = "false", array = {false}, set = {false} }); test_option_value("true", { boolean = true, string = "true", array = {"true"}, set = {"true"} }); test_option_value("false", { boolean = false, string = "false", array = {"false"}, set = {"false"} }); test_option_value(1, { boolean = true, string = "1", array = {1}, set = {1}, number = 1 }); test_option_value(0, { boolean = false, string = "0", array = {0}, set = {0}, number = 0 }); end); it("should return handle strings", function() test_option_value("hello world", { string = "hello world", array = {"hello world"}, set = {"hello world"} }); end); it("should return handle numbers", function() test_option_value(1234, { string = "1234", number = 1234, array = {1234}, set = {1234} }); end); it("should return handle arrays", function() test_option_value({1, 2, 3}, { boolean = true, string = "1", number = 1, array = {1, 2, 3}, set = {1, 2, 3} }); test_option_value({1, 2, 3, 3, 4}, {boolean = true, string = "1", number = 1, array = {1, 2, 3, 3, 4}, set = {1, 2, 3, 4} }); test_option_value({0, 1, 2, 3}, { boolean = false, string = "0", number = 0, array = {0, 1, 2, 3}, set = {0, 1, 2, 3} }); end); end) end)