mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-02-08 04:40:31 +01:00
287 lines
7 KiB
Lua
287 lines
7 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 _get_boolean ()
|
|
|
|
local value = Settings.get_boolean ("test-setting1", "test-settings")
|
|
assert (value == false)
|
|
|
|
value = Settings.get_boolean ("test-setting2", "test-settings")
|
|
assert ("boolean" == type (value))
|
|
assert (value == true)
|
|
|
|
value = Settings.get_boolean ("test-setting1")
|
|
assert (value == nil)
|
|
|
|
value = Settings.get_boolean ("test-setting-undefined",
|
|
"test-settings")
|
|
assert (value == nil)
|
|
|
|
|
|
-- test settings _get_int ()
|
|
value = Settings.get_int ("test-setting-undefined", "test-settings")
|
|
assert (value == nil)
|
|
|
|
value = Settings.get_int ("test-setting3-int", "test-settings")
|
|
assert ("number" == type (value))
|
|
assert (value == -20)
|
|
|
|
-- test settings _get_string ()
|
|
value = Settings.get_string ("test-setting-undefined", "test-settings")
|
|
assert (value == nil)
|
|
|
|
value = Settings.get_string ("test-setting4-string", "test-settings")
|
|
assert ("string" == type (value))
|
|
assert (value == "blahblah")
|
|
|
|
value = Settings.get_string ("test-setting3-int", "test-settings")
|
|
assert (value == "-20")
|
|
|
|
-- test settings _get_float ()
|
|
value = Settings.get_float ("test-setting-undefined", "test-settings")
|
|
assert (value == nil)
|
|
|
|
value = Settings.get_float ("test-setting-float1", "test-settings")
|
|
assert ("number" == type (value))
|
|
assert ((value - 3.14) < 0.00001)
|
|
|
|
value = Settings.get_float ("test-setting-float2", "test-settings")
|
|
assert ((value - 0.4) < 0.00001)
|
|
|
|
-- test settings _get ()
|
|
value = Settings.get ("test-setting-json", "test-settings")
|
|
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)
|
|
|
|
-- test settings _get_all ()
|
|
value = Settings.get_all ("*string*", "test-settings")
|
|
assert (value ~= nil)
|
|
assert (value:is_object())
|
|
assert (value:get_data() ==
|
|
"{\"test-setting4-string\":\"blahblah\", \"test-setting5-string-with-quotes\":\"a string with \\\"quotes\\\"\"}")
|
|
val = value:parse ()
|
|
assert (val["test-setting4-string"] == "blahblah")
|
|
assert (val["test-setting5-string-with-quotes"] == "a string with \"quotes\"")
|
|
|
|
-- test rules
|
|
-- test #1
|
|
local cp = {
|
|
["test-string2"]="juggler"
|
|
}
|
|
local ap = {}
|
|
|
|
local applied, ap = Settings.apply_rule( "rule_one", cp, "test-settings")
|
|
|
|
assert (applied == true)
|
|
assert (ap["prop-string1"] == "metal")
|
|
assert (ap["prop-int1"] == "123")
|
|
assert (ap["blah blah"] == nil)
|
|
|
|
-- test #2
|
|
local cp = {
|
|
["test-string2"]="jugler"
|
|
}
|
|
local ap = {}
|
|
|
|
local applied, ap = Settings.apply_rule ("rule_one", cp, "test-settings")
|
|
|
|
assert (applied == false)
|
|
|
|
-- test #3
|
|
local cp = {
|
|
["test-string4"] = "ferrous",
|
|
["test-int2"] = "100",
|
|
["test-string5"] = "blend"
|
|
}
|
|
|
|
local applied, ap = Settings.apply_rule ("rule_one", cp, "test-settings")
|
|
|
|
assert (applied == true)
|
|
assert (ap["prop-string1"] == nil)
|
|
assert (ap["prop-string2"] == "standard")
|
|
assert (ap["prop-int2"] == "26")
|
|
assert (ap["prop-bool1"] == "true")
|
|
|
|
-- test #4
|
|
local cp = {
|
|
["test-string6"] = "alum",
|
|
}
|
|
|
|
local applied, ap = Settings.apply_rule ("rule_one", cp, "test-settings")
|
|
|
|
assert (applied == false)
|
|
|
|
-- test #5
|
|
local cp = {
|
|
["test-string6"] = "alum",
|
|
["test-int3"] = "24",
|
|
}
|
|
|
|
local applied, ap = Settings.apply_rule ("rule_one", cp, "test-settings")
|
|
|
|
assert (applied == true)
|
|
assert (ap["prop-string1"] == nil)
|
|
assert (ap["prop-string2"] == "standard")
|
|
assert (ap["prop-int2"] == "26")
|
|
assert (ap["prop-bool1"] == "true")
|
|
|
|
-- test #6
|
|
-- test regular expression syntax
|
|
local cp = {
|
|
["test.string6"] = "metal.ferrous",
|
|
["test.table.entry"] = "yes",
|
|
}
|
|
|
|
local applied, ap = Settings.apply_rule ("rule_three", cp, "test-settings")
|
|
|
|
assert (applied == false)
|
|
|
|
-- test #7
|
|
local cp = {
|
|
["test.string6"] = "metal.ferrous",
|
|
["test.table.entry"] = "true",
|
|
}
|
|
|
|
local applied, ap = Settings.apply_rule ("rule_three", cp, "test-settings")
|
|
|
|
assert (applied == true)
|
|
assert (ap["prop.electrical.conductivity"] == "true")
|
|
assert (ap["prop.state"] == "solid")
|
|
assert (ap["prop.example"] == "ferrous")
|
|
|
|
-- test #8
|
|
local cp = {
|
|
["test.string6"] = "gas.xenon",
|
|
["test.table.entry"] = "maybe",
|
|
}
|
|
|
|
local applied, ap = Settings.apply_rule ("rule_three", cp, "test-settings")
|
|
|
|
assert (applied == true)
|
|
assert (ap["prop.electrical.conductivity"] == "false")
|
|
assert (ap["prop.state"] == "gas")
|
|
assert (ap["prop.example"] == "neon")
|
|
|
|
-- test #9
|
|
local cp = {
|
|
["test-string6-wildcard"] = "wild_cat",
|
|
}
|
|
|
|
local applied, ap = Settings.apply_rule ("rule_three", cp, "test-settings")
|
|
|
|
assert (applied == true)
|
|
assert (ap["prop.electrical.conductivity"] == "true")
|
|
assert (ap["prop.state"] == "solid")
|
|
assert (ap["prop.example"] == "ferrous")
|
|
|
|
-- test callbacks
|
|
|
|
metadata_om = ObjectManager {
|
|
Interest {
|
|
type = "metadata",
|
|
Constraint { "metadata.name", "=", "test-settings" },
|
|
}
|
|
}
|
|
|
|
metadata_om:activate()
|
|
|
|
local setting
|
|
local setting_value
|
|
local callback
|
|
local setting_type
|
|
local finish_activation
|
|
|
|
function callback (obj, s, rawvalue)
|
|
if (setting_type == "boolean") then
|
|
assert (s == setting)
|
|
callback = true
|
|
assert (rawvalue == tostring(setting_value))
|
|
assert ((setting_value and true or false) ==
|
|
Settings.get_boolean (s, "test-settings"))
|
|
|
|
elseif (setting_type == "integer") then
|
|
assert (s == setting)
|
|
callback = true
|
|
assert (rawvalue == tostring(setting_value))
|
|
assert (setting_value ==
|
|
Settings.get_int (s, "test-settings"))
|
|
|
|
elseif (setting_type == "string") then
|
|
assert (s == setting)
|
|
callback = true
|
|
assert (rawvalue == setting_value)
|
|
assert (setting_value ==
|
|
Settings.get_string (s, "test-settings"))
|
|
end
|
|
|
|
if (finish_activation) then
|
|
assert (Settings.unsubscribe (sub_id, "test-settings"))
|
|
assert (not Settings.unsubscribe (sub_id-1, "test-settings"))
|
|
Script:finish_activation()
|
|
end
|
|
end
|
|
|
|
sub_id = Settings.subscribe ("test*", "test-settings", 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 = true
|
|
callback = false
|
|
setting_type = "boolean"
|
|
|
|
metadata:set(0, setting, "Spa:String:JSON", tostring(setting_value))
|
|
assert (callback)
|
|
|
|
-- test #2
|
|
setting = "test-setting1"
|
|
setting_value = true
|
|
callback = false
|
|
setting_type = "boolean"
|
|
|
|
metadata:set(0, setting, "Spa:String:JSON", tostring(setting_value))
|
|
assert (not callback)
|
|
|
|
-- test #3
|
|
setting = "test-setting3-int"
|
|
setting_value = 99
|
|
callback = false
|
|
setting_type = "integer"
|
|
|
|
metadata:set(0, setting, "Spa:String:JSON", setting_value)
|
|
assert (callback)
|
|
|
|
-- test #4
|
|
setting = "test-setting4-string"
|
|
setting_value = "lets not blabber"
|
|
callback = false
|
|
setting_type = "string"
|
|
|
|
finish_activation = true
|
|
metadata:set(0, setting, "Spa:String:JSON", setting_value)
|
|
assert (callback)
|
|
|
|
end)
|