wireplumber/tests/wplua/scripts/settings.lua
Julian Bouzas 360e0b3eaf scripts: use WpConf API to get configuration values
This patch also moves nested configuration objects that are not considered
settings from the wireplumber.settings section to its own configuration
section (eg the rules array, the spa plugin properties, etc...). This allows
those objects to be merged with other same sections defined in other files.
2023-04-17 07:48:18 -04:00

162 lines
3.9 KiB
Lua

-- tests the lua API of WpSettings, this file tests the settings present in
-- .conf file that is loaded.
Script.async_activation = true
-- test settings undefined
value = Settings.get ("test-setting-undefined")
assert (value == nil)
-- test settings _get_boolean ()
local value = Settings.get ("test-setting1"):parse()
assert (value == false)
value = Settings.get ("test-setting2"):parse()
assert ("boolean" == type (value))
assert (value == true)
-- test settings _get_int ()
value = Settings.get ("test-setting3-int"):parse()
assert ("number" == type (value))
assert (value == -20)
-- test settings _get_string ()
value = Settings.get ("test-setting4-string"):parse()
assert ("string" == type (value))
assert (value == "blahblah")
value = Settings.get ("test-setting5-string-with-quotes"):parse()
assert ("string" == type (value))
assert (value == "a string with \"quotes\"")
-- test settings _get_float ()
value = Settings.get ("test-setting-float1"):parse()
assert ("number" == type (value))
assert ((value - 3.14) < 0.00001)
value = Settings.get ("test-setting-float2"):parse()
assert ((value - 0.4) < 0.00001)
-- test settings _get ()
value = Settings.get ("test-setting-json")
assert (value ~= nil)
assert (value:is_array())
assert (value:get_data() == "[1, 2, 3]")
value = Settings.get ("test-setting-json2", "test-settings")
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)
value = Settings.get ("test-setting-json3")
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)
-- test callbacks
metadata_om = ObjectManager {
Interest {
type = "metadata",
Constraint { "metadata.name", "=", "sm-settings" },
}
}
metadata_om:activate()
local setting
local setting_value
local callback
local finish_activation
function callback (obj, s, json)
assert (json ~= nil)
if (json:is_boolean()) then
assert (s == setting)
callback = true
assert (json:parse() == setting_value:parse())
assert (setting_value:parse() == Settings.get (s):parse())
elseif (json:is_int()) then
assert (s == setting)
callback = true
assert (json:parse() == setting_value:parse())
assert (setting_value:parse() == Settings.get (s):parse())
elseif (json:is_string()) then
assert (s == setting)
callback = true
assert (json:parse() == setting_value:parse())
assert (setting_value:parse() == Settings.get (s):parse())
end
if (finish_activation) then
assert (Settings.unsubscribe (sub_id))
assert (not Settings.unsubscribe (sub_id-1))
Script:finish_activation()
end
end
sub_id = Settings.subscribe ("test*", callback)
metadata_om:connect("objects-changed", function (om)
local metadata = om:lookup()
if (not metadata) then
return
end
-- test #1
setting = "test-setting1"
setting_value = Json.Boolean (true)
callback = false
metadata:set(0, setting, "Spa:String:JSON", setting_value:get_data())
assert (callback)
-- test #2
setting = "test-setting1"
setting_value = Json.Boolean (true)
callback = false
metadata:set(0, setting, "Spa:String:JSON", setting_value:get_data())
assert (not callback)
-- test #3
setting = "test-setting3-int"
setting_value = Json.Int (99)
callback = false
metadata:set(0, setting, "Spa:String:JSON", setting_value:get_data())
assert (callback)
-- test #4
setting = "test-setting4-string"
setting_value = Json.String ("lets not blabber")
callback = false
finish_activation = true
metadata:set(0, setting, "Spa:String:JSON", setting_value:get_data())
assert (callback)
end)