2022-03-31 12:27:22 +05:30
|
|
|
|
|
|
|
|
-- tests the lua API of WpSettings, this file tests the settings present in
|
2022-04-25 10:45:34 +05:30
|
|
|
-- .conf file that is loaded.
|
2022-03-31 12:27:22 +05:30
|
|
|
|
2022-05-26 13:15:22 +05:30
|
|
|
Script.async_activation = true
|
|
|
|
|
|
2022-08-18 13:11:34 -04:00
|
|
|
-- test settings undefined
|
2022-12-08 04:56:08 +05:30
|
|
|
value = Settings.get ("test-setting-undefined")
|
2022-08-18 13:11:34 -04:00
|
|
|
assert (value == nil)
|
|
|
|
|
|
2022-04-29 11:23:45 +05:30
|
|
|
-- test settings _get_boolean ()
|
2022-05-26 13:15:22 +05:30
|
|
|
|
2022-12-08 04:56:08 +05:30
|
|
|
local value = Settings.get ("test-setting1"):parse()
|
2022-04-29 11:23:45 +05:30
|
|
|
assert (value == false)
|
2022-04-25 10:45:34 +05:30
|
|
|
|
2022-12-08 04:56:08 +05:30
|
|
|
value = Settings.get ("test-setting2"):parse()
|
2022-05-09 12:43:36 +05:30
|
|
|
assert ("boolean" == type (value))
|
2022-04-29 11:23:45 +05:30
|
|
|
assert (value == true)
|
|
|
|
|
|
|
|
|
|
-- test settings _get_int ()
|
|
|
|
|
|
2022-12-08 04:56:08 +05:30
|
|
|
value = Settings.get ("test-setting3-int"):parse()
|
2022-05-09 12:43:36 +05:30
|
|
|
assert ("number" == type (value))
|
2022-04-29 11:23:45 +05:30
|
|
|
assert (value == -20)
|
|
|
|
|
|
|
|
|
|
-- test settings _get_string ()
|
|
|
|
|
|
2022-12-08 04:56:08 +05:30
|
|
|
value = Settings.get ("test-setting4-string"):parse()
|
2022-05-09 12:43:36 +05:30
|
|
|
assert ("string" == type (value))
|
2022-04-29 11:23:45 +05:30
|
|
|
assert (value == "blahblah")
|
|
|
|
|
|
2022-12-08 04:56:08 +05:30
|
|
|
value = Settings.get ("test-setting5-string-with-quotes"):parse()
|
2022-08-18 13:11:34 -04:00
|
|
|
assert ("string" == type (value))
|
|
|
|
|
assert (value == "a string with \"quotes\"")
|
2022-04-25 10:45:34 +05:30
|
|
|
|
2022-05-09 12:43:36 +05:30
|
|
|
-- test settings _get_float ()
|
|
|
|
|
|
2022-12-08 04:56:08 +05:30
|
|
|
value = Settings.get ("test-setting-float1"):parse()
|
2022-05-09 12:43:36 +05:30
|
|
|
assert ("number" == type (value))
|
|
|
|
|
assert ((value - 3.14) < 0.00001)
|
|
|
|
|
|
2022-12-08 04:56:08 +05:30
|
|
|
value = Settings.get ("test-setting-float2"):parse()
|
2022-05-09 12:43:36 +05:30
|
|
|
assert ((value - 0.4) < 0.00001)
|
|
|
|
|
|
2022-08-11 11:30:10 -04:00
|
|
|
-- test settings _get ()
|
2022-12-08 04:56:08 +05:30
|
|
|
value = Settings.get ("test-setting-json")
|
2022-08-11 11:30:10 -04:00
|
|
|
assert (value ~= nil)
|
|
|
|
|
assert (value:is_array())
|
|
|
|
|
assert (value:get_data() == "[1, 2, 3]")
|
|
|
|
|
|
2023-01-10 09:11:15 -05:00
|
|
|
value = Settings.get ("test-setting-json2", "test-settings")
|
2022-08-11 11:30:10 -04:00
|
|
|
assert (value ~= nil)
|
|
|
|
|
assert (value:is_array())
|
|
|
|
|
assert (value:get_data() ==
|
|
|
|
|
"[\"test1\", \"test 2\", \"test three\", \"test-four\"]")
|
|
|
|
|
val = value:parse ()
|
|
|
|
|
assert (val[1] == "test1")
|
|
|
|
|
assert (val[2] == "test 2")
|
|
|
|
|
assert (val[3] == "test three")
|
|
|
|
|
assert (val[4] == "test-four")
|
|
|
|
|
assert (val[5] == nil)
|
|
|
|
|
assert (#val == 4)
|
2022-05-09 12:43:36 +05:30
|
|
|
|
2022-12-08 04:56:08 +05:30
|
|
|
value = Settings.get ("test-setting-json3")
|
2022-08-27 09:44:17 -04:00
|
|
|
assert (value ~= nil)
|
|
|
|
|
assert (value:is_object())
|
|
|
|
|
print (value:get_data())
|
|
|
|
|
assert (value:get_data() ==
|
|
|
|
|
"{ key1: \"value\", key2: 2, key3: true }")
|
|
|
|
|
val = value:parse ()
|
|
|
|
|
assert (val.key1 == "value")
|
|
|
|
|
assert (val.key2 == 2)
|
|
|
|
|
assert (val.key3 == true)
|
|
|
|
|
|
2022-05-26 13:15:22 +05:30
|
|
|
-- test callbacks
|
|
|
|
|
|
|
|
|
|
metadata_om = ObjectManager {
|
|
|
|
|
Interest {
|
|
|
|
|
type = "metadata",
|
2022-12-08 04:56:08 +05:30
|
|
|
Constraint { "metadata.name", "=", "sm-settings" },
|
2022-05-26 13:15:22 +05:30
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
metadata_om:activate()
|
|
|
|
|
|
|
|
|
|
local setting
|
|
|
|
|
local setting_value
|
|
|
|
|
local callback
|
|
|
|
|
local finish_activation
|
|
|
|
|
|
2022-09-01 08:22:56 -04:00
|
|
|
function callback (obj, s, json)
|
2022-08-18 13:11:34 -04:00
|
|
|
assert (json ~= nil)
|
|
|
|
|
|
|
|
|
|
if (json:is_boolean()) then
|
2022-05-26 13:15:22 +05:30
|
|
|
assert (s == setting)
|
|
|
|
|
callback = true
|
2022-09-01 08:22:56 -04:00
|
|
|
assert (json:parse() == setting_value:parse())
|
2022-12-08 04:56:08 +05:30
|
|
|
assert (setting_value:parse() == Settings.get (s):parse())
|
2022-05-26 13:15:22 +05:30
|
|
|
|
2022-08-18 13:11:34 -04:00
|
|
|
elseif (json:is_int()) then
|
2022-05-26 13:15:22 +05:30
|
|
|
assert (s == setting)
|
|
|
|
|
callback = true
|
2022-09-01 08:22:56 -04:00
|
|
|
assert (json:parse() == setting_value:parse())
|
2022-12-08 04:56:08 +05:30
|
|
|
assert (setting_value:parse() == Settings.get (s):parse())
|
2022-05-26 13:15:22 +05:30
|
|
|
|
2022-08-18 13:11:34 -04:00
|
|
|
elseif (json:is_string()) then
|
2022-05-26 13:15:22 +05:30
|
|
|
assert (s == setting)
|
|
|
|
|
callback = true
|
2022-09-01 08:22:56 -04:00
|
|
|
assert (json:parse() == setting_value:parse())
|
2022-12-08 04:56:08 +05:30
|
|
|
assert (setting_value:parse() == Settings.get (s):parse())
|
2022-05-26 13:15:22 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if (finish_activation) then
|
2022-12-08 04:56:08 +05:30
|
|
|
assert (Settings.unsubscribe (sub_id))
|
|
|
|
|
assert (not Settings.unsubscribe (sub_id-1))
|
2022-05-26 13:15:22 +05:30
|
|
|
Script:finish_activation()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2022-12-08 04:56:08 +05:30
|
|
|
sub_id = Settings.subscribe ("test*", callback)
|
2022-05-26 13:15:22 +05:30
|
|
|
|
|
|
|
|
metadata_om:connect("objects-changed", function (om)
|
|
|
|
|
local metadata = om:lookup()
|
|
|
|
|
|
|
|
|
|
if (not metadata) then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- test #1
|
|
|
|
|
setting = "test-setting1"
|
2022-09-01 08:22:56 -04:00
|
|
|
setting_value = Json.Boolean (true)
|
2022-05-26 13:15:22 +05:30
|
|
|
callback = false
|
|
|
|
|
|
2022-09-01 08:22:56 -04:00
|
|
|
metadata:set(0, setting, "Spa:String:JSON", setting_value:get_data())
|
2022-05-26 13:15:22 +05:30
|
|
|
assert (callback)
|
|
|
|
|
|
|
|
|
|
-- test #2
|
|
|
|
|
setting = "test-setting1"
|
2022-09-01 08:22:56 -04:00
|
|
|
setting_value = Json.Boolean (true)
|
2022-05-26 13:15:22 +05:30
|
|
|
callback = false
|
|
|
|
|
|
2022-09-01 08:22:56 -04:00
|
|
|
metadata:set(0, setting, "Spa:String:JSON", setting_value:get_data())
|
2022-05-26 13:15:22 +05:30
|
|
|
assert (not callback)
|
|
|
|
|
|
|
|
|
|
-- test #3
|
|
|
|
|
setting = "test-setting3-int"
|
2022-09-01 08:22:56 -04:00
|
|
|
setting_value = Json.Int (99)
|
2022-05-26 13:15:22 +05:30
|
|
|
callback = false
|
|
|
|
|
|
2022-09-01 08:22:56 -04:00
|
|
|
metadata:set(0, setting, "Spa:String:JSON", setting_value:get_data())
|
2022-05-26 13:15:22 +05:30
|
|
|
assert (callback)
|
|
|
|
|
|
|
|
|
|
-- test #4
|
|
|
|
|
setting = "test-setting4-string"
|
2022-09-01 08:22:56 -04:00
|
|
|
setting_value = Json.String ("lets not blabber")
|
2022-05-26 13:15:22 +05:30
|
|
|
callback = false
|
|
|
|
|
|
|
|
|
|
finish_activation = true
|
2022-09-01 08:22:56 -04:00
|
|
|
metadata:set(0, setting, "Spa:String:JSON", setting_value:get_data())
|
2022-05-26 13:15:22 +05:30
|
|
|
assert (callback)
|
|
|
|
|
|
|
|
|
|
end)
|