mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-01-12 05:10:17 +01:00
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.
162 lines
3.9 KiB
Lua
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)
|