tests: Test `gears.connection`.
This commit is contained in:
parent
8f9d23b11b
commit
2376535e78
|
@ -0,0 +1,39 @@
|
|||
--DOC_GEN_IMAGE
|
||||
|
||||
local gears = {object = require("gears.object"), connection = require("gears.connection")} --DOC_HIDE
|
||||
|
||||
-- When `source` changes, `target` is updated.
|
||||
local my_source_object1 = gears.object { --DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
local my_source_object2 = gears.object {--DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
local my_target_object1 = gears.object {--DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
local conn = gears.connection {
|
||||
source = my_source_object1,
|
||||
target = my_target_object1,
|
||||
}
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
conn:append_source_object(my_source_object1)
|
||||
--DOC_NEWLINE
|
||||
assert(conn:has_source_object(my_source_object1))
|
||||
--DOC_NEWLINE
|
||||
assert(not conn:has_source_object(my_source_object2)) --DOC_HIDE
|
||||
conn:append_source_object(my_source_object2)
|
||||
assert(conn:has_source_object(my_source_object2)) --DOC_HIDE
|
||||
local ret = --DOC_HIDE
|
||||
conn:remove_source_object(my_source_object1)
|
||||
assert(ret) --DOC_HIDE
|
||||
assert(not conn:has_source_object(my_source_object1)) --DOC_HIDE
|
||||
assert(not conn:remove_source_object({})) --DOC_HIDE
|
|
@ -0,0 +1,42 @@
|
|||
--DOC_GEN_IMAGE
|
||||
|
||||
local gears = {object = require("gears.object"), connection = require("gears.connection")} --DOC_HIDE
|
||||
|
||||
client.gen_fake {name = "foo"} --DOC_HIDE
|
||||
client.gen_fake {name = "baz"} --DOC_HIDE
|
||||
|
||||
local called = 0 --DOC_HIDE
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
local conn = gears.connection {
|
||||
source_class = client,
|
||||
signals = {"focused", "property::name"},
|
||||
initiate = false,
|
||||
callback = function()
|
||||
called = called + 1 --DOC_HIDE
|
||||
-- do something
|
||||
end
|
||||
}
|
||||
|
||||
assert(conn) --DOC_HIDE
|
||||
assert(conn.signals[1] == "focused") --DOC_HIDE
|
||||
assert(conn.signals[2] == "property::name") --DOC_HIDE
|
||||
assert(conn.source_class == client) --DOC_HIDE
|
||||
assert(conn.callback) --DOC_HIDE
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
-- This emit the `focused` signal.
|
||||
screen[1].clients[1]:activate{}
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
assert(called == 1) --DOC_HIDE
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
-- Changing the name emits `property::name`.
|
||||
screen[1].clients[1].name = "bar"
|
||||
client.emit_signal("property::name", screen[1].clients[1]) --DOC_HIDE
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
assert(called == 2) --DOC_HIDE
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
--DOC_GEN_IMAGE
|
||||
|
||||
local gears = {object = require("gears.object"), connection = require("gears.connection")} --DOC_HIDE
|
||||
|
||||
-- When `source` changes, `target` is updated.
|
||||
local my_source_object = gears.object { --DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
local my_target_object1 = gears.object {--DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
local my_target_object2 = gears.object {--DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
|
||||
my_source_object.foo = 42
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
local conn1 = gears.connection {
|
||||
source = my_source_object,
|
||||
source_property = "foo",
|
||||
target = my_target_object1,
|
||||
target_property = "bar"
|
||||
}
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
local conn2 = gears.connection {
|
||||
source = my_source_object,
|
||||
source_property = "foo",
|
||||
target = my_target_object2,
|
||||
target_property = "bar"
|
||||
}
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
conn1.enabled = true
|
||||
conn2.enabled = false
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
-- conn1 should be enabled, but not conn2.
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
assert(my_target_object1.bar == 42)
|
||||
assert(my_target_object2.bar == nil)
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
--DOC_GEN_IMAGE
|
||||
|
||||
local gears = {object = require("gears.object"), connection = require("gears.connection")} --DOC_HIDE
|
||||
|
||||
-- When `source` changes, `target` is updated.
|
||||
local my_source_object = gears.object { --DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
local my_target_object1 = gears.object {--DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
local my_target_object2 = gears.object {--DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
|
||||
my_source_object.foo = 42
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
local conn = --DOC_HIDE
|
||||
gears.connection {
|
||||
source = my_source_object,
|
||||
source_property = "foo",
|
||||
target = my_target_object1,
|
||||
target_property = "bar"
|
||||
}
|
||||
|
||||
assert(conn.source_property == "foo") --DOC_HIDE
|
||||
assert(conn.source == my_source_object) --DOC_HIDE
|
||||
assert(conn.target == my_target_object1) --DOC_HIDE
|
||||
assert(conn.target_property == "bar") --DOC_HIDE
|
||||
assert(conn.initiate) --DOC_HIDE
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
conn = --DOC_HIDE
|
||||
gears.connection {
|
||||
source = my_source_object,
|
||||
source_property = "foo",
|
||||
initiate = false,
|
||||
target = my_target_object2,
|
||||
target_property = "bar"
|
||||
}
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
assert(not conn.initiate) --DOC_HIDE
|
||||
|
||||
-- my_target_object1 should be initialized, but not my_target_object2.
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
assert(my_target_object1.bar == 42)
|
||||
assert(my_target_object2.bar == nil)
|
||||
|
||||
conn.sources = {my_source_object, my_target_object1} --DOC_HIDE
|
|
@ -0,0 +1,42 @@
|
|||
--DOC_GEN_IMAGE
|
||||
|
||||
local gears = {object = require("gears.object"), connection = require("gears.connection")} --DOC_HIDE
|
||||
|
||||
local called = false --DOC_HIDE
|
||||
|
||||
-- When `source` changes, `target` is updated.
|
||||
local my_source_object = gears.object { --DOC_HIDE
|
||||
enable_properties = true, --DOC_HIDE
|
||||
enable_auto_signals = true --DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
local my_target_object = gears.object {--DOC_HIDE
|
||||
enable_properties = true, --DOC_HIDE
|
||||
enable_auto_signals = true --DOC_HIDE
|
||||
} --DOC_HIDE
|
||||
|
||||
-- Declare a method.
|
||||
function my_target_object:my_method()
|
||||
called = true --DOC_HIDE
|
||||
-- do something
|
||||
end
|
||||
|
||||
my_source_object.foo = 42 --DOC_HIDE
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
local conn = gears.connection {
|
||||
source = my_source_object,
|
||||
source_property = "foo",
|
||||
target = my_target_object,
|
||||
target_method = "my_method"
|
||||
}
|
||||
|
||||
assert(conn) --DOC_HIDE
|
||||
assert(conn.target == my_target_object) --DOC_HIDE
|
||||
assert(conn.enabled) --DOC_HIDE
|
||||
assert(conn.target_method == "my_method") --DOC_HIDE
|
||||
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
assert(called) --DOC_HIDE
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
--DOC_GEN_IMAGE
|
||||
|
||||
local gears = {object = require("gears.object"), connection = require("gears.connection")} --DOC_HIDE
|
||||
|
||||
-- When `source` changes, `target` is updated.
|
||||
local my_source_object = gears.object { --DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
local my_target_object = gears.object {--DOC_HIDE
|
||||
enable_properties = true,--DOC_HIDE
|
||||
enable_auto_signals = true--DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
my_source_object.foo = 42
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
local conn = gears.connection {
|
||||
source = my_source_object,
|
||||
source_property = "foo",
|
||||
target = my_target_object,
|
||||
target_property = "bar"
|
||||
}
|
||||
|
||||
assert(conn) --DOC_HIDE
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
-- This works because `initiate` is `true` by default.
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
assert(my_target_object.bar == 42)
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
-- This works because the `source` object `foo` is connected to
|
||||
-- the `target` object `bar` property.
|
||||
my_source_object.foo = 1337
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
assert(my_target_object.bar == 1337)
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
--DOC_GEN_IMAGE --DOC_HIDE --DOC_NO_USAGE --DOC_NO_DASH
|
||||
local parent = ... --DOC_HIDE
|
||||
local gears = require("gears") --DOC_HIDE
|
||||
local wibox = require("wibox") --DOC_HIDE
|
||||
|
||||
local w = wibox.widget {
|
||||
|
||||
-- Get the current cliently focused name.
|
||||
gears.connection {
|
||||
source_class = client,
|
||||
signal = "focused",
|
||||
source_property = "name",
|
||||
destination_property = "text",
|
||||
},
|
||||
|
||||
widget = wibox.widget.textbox
|
||||
}
|
||||
|
||||
parent:add(w) --DOC_HIDE
|
|
@ -0,0 +1,49 @@
|
|||
--DOC_HIDE --DOC_NO_USAGE
|
||||
local gears = require("gears") --DOC_HIDE
|
||||
local wibox = require("wibox") --DOC_HIDE
|
||||
|
||||
-- luacheck: globals my_textbox get_children_by_id --DOC_HIDE
|
||||
|
||||
local w = wibox.widget {
|
||||
-- Get the current cliently focused name.
|
||||
text = gears.connection {
|
||||
source_class = client,
|
||||
signals = {"focused", "property::name"},
|
||||
initiate = false,
|
||||
callback = function(source, target, sig_arg1, ...) --luacheck: no unused args
|
||||
-- Since the class signal first arg is the source, this works!
|
||||
assert(source == sig_arg1)
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
-- All widgets with IDs are visible from this callback!
|
||||
assert(target and my_textbox) --DOC_HIDE
|
||||
assert(target == my_textbox)
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
-- get_children_by_id can also be used!
|
||||
assert(get_children_by_id("my_textbox")[1] == target)
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
if not source then return "Nothing!" end
|
||||
|
||||
--DOC_NEWLINE
|
||||
|
||||
return "Name: " .. source.name .. "!"
|
||||
end
|
||||
},
|
||||
forced_width = 100, --DOC_HIDE
|
||||
forced_height = 20, --DOC_HIDE
|
||||
id = "my_textbox",
|
||||
widget = wibox.widget.textbox
|
||||
}
|
||||
|
||||
|
||||
--DOC_HIDE 1: delayed connection, 2: delayed layout, 3: delayed draw
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
assert(w.text == "Nothing!") --DOC_HIDE
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
--DOC_GEN_IMAGE --DOC_HIDE --DOC_NO_USAGE --DOC_NO_DASH
|
||||
local parent= ... --DOC_HIDE
|
||||
local gears = require("gears") --DOC_HIDE
|
||||
local wibox = require("wibox") --DOC_HIDE
|
||||
|
||||
local obj = nil --DOC_HIDE
|
||||
|
||||
gears.timer = function()--DOC_HIDE
|
||||
obj = gears.object { --DOC_HIDE
|
||||
enable_properties = true, --DOC_HIDE
|
||||
enable_auto_signals = true --DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
return obj --DOC_HIDE
|
||||
end--DOC_HIDE
|
||||
|
||||
local w = wibox.widget {
|
||||
|
||||
gears.connection {
|
||||
source = gears.timer {
|
||||
timeout = 5,
|
||||
autostart = true,
|
||||
},
|
||||
signal = "timeout",
|
||||
callback = function(_, parent_widget)
|
||||
parent_widget.text = "this will get called every 5 seconds"
|
||||
end
|
||||
},
|
||||
|
||||
widget = wibox.widget.textbox
|
||||
}
|
||||
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
assert(obj) --DOC_HIDE
|
||||
obj:emit_signal("timeout") --DOC_HIDE
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
assert(w.text == "this will get called every 5 seconds") --DOC_HIDE
|
||||
parent:add(w) --DOC_HIDE
|
|
@ -0,0 +1,68 @@
|
|||
--DOC_NO_USAGE --DOC_GEN_IMAGE --DOC_HIDE
|
||||
local parent = ... --DOC_HIDE
|
||||
local wibox = require("wibox") --DOC_HIDE
|
||||
local gears = require("gears") --DOC_HIDE
|
||||
|
||||
local data = { --DOC_HIDE
|
||||
3, 5, 6,4, 11,15,19,29,17,17,14,0,0,3,1,0,0, 22, 17,7, 1,0,0,5, --DOC_HIDE
|
||||
3, 5, 6,4, 11,15,19,29,17,17,14,0,0,3,1,0,0, 22, 17,7, 1,0,0,5, --DOC_HIDE
|
||||
3, 5, 6,4, 11,15,19,29,17,17,14,0,0,3,1,0,0, 22, 17,7, 1,0,0,5, --DOC_HIDE
|
||||
3, 5, 6,4, 11,15,19,29,17,17,14,0,0,3,1,0,0, 22, 17,7, 1,0,0,5, --DOC_HIDE
|
||||
3, 5, 6,4, 11,15,19,29,17,17,14,0,0,3,1,0,0, 22, 17,7, 1,0,0,5, --DOC_HIDE
|
||||
} --DOC_HIDE
|
||||
|
||||
local my_source_object = gears.object { --DOC_HIDE
|
||||
enable_properties = true, --DOC_HIDE
|
||||
enable_auto_signals = true --DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
my_source_object.value = 0 --DOC_HIDE
|
||||
|
||||
-- luacheck: globals my_graph my_label my_progress --DOC_HIDE
|
||||
|
||||
local w = --DOC_HIDE
|
||||
wibox.widget {
|
||||
{
|
||||
{
|
||||
id = "my_graph",
|
||||
max_value = 30,
|
||||
widget = wibox.widget.graph
|
||||
},
|
||||
{
|
||||
id = "my_label",
|
||||
align = "center",
|
||||
valign = "center",
|
||||
widget = wibox.widget.textbox,
|
||||
},
|
||||
layout = wibox.layout.stack
|
||||
},
|
||||
id = "my_progress",
|
||||
max_value = 30,
|
||||
min_value = 0,
|
||||
forced_height = 30, --DOC_HIDE
|
||||
forced_width = 200, --DOC_HIDE
|
||||
widget = wibox.container.radialprogressbar,
|
||||
|
||||
--DOC_NEWLINE
|
||||
-- Set the value of all 3 widgets.
|
||||
gears.connection {
|
||||
source = my_source_object,
|
||||
source_property = "value",
|
||||
callback = function(_, _, value)
|
||||
my_graph:add_value(value)
|
||||
my_label.text = value .. "mB/s"
|
||||
my_progress.value = value
|
||||
end
|
||||
},
|
||||
}
|
||||
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
|
||||
for _, v in ipairs(data) do --DOC_HIDE
|
||||
assert(v ~= nil) --DOC_HIDE
|
||||
my_source_object.value = v --DOC_HIDE
|
||||
end --DOC_HIDE
|
||||
|
||||
parent:add(w) --DOC_HIDE
|
||||
|
||||
--DOC_HIDE vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
|
@ -0,0 +1,68 @@
|
|||
--DOC_NO_USAGE --DOC_GEN_IMAGE --DOC_HIDE --DOC_NO_DASH
|
||||
local parent = ... --DOC_HIDE
|
||||
local wibox = require("wibox") --DOC_HIDE
|
||||
local gears = require("gears") --DOC_HIDE
|
||||
|
||||
local data = { --DOC_HIDE
|
||||
3, 5, 6,4, 11,15,19,29,17,17,14,0,0,3,1,0,0, 22, 17,7, 1,0,0,5, --DOC_HIDE
|
||||
3, 5, 6,4, 11,15,19,29,17,17,14,0,0,3,1,0,0, 22, 17,7, 1,0,0,5, --DOC_HIDE
|
||||
3, 5, 6,4, 11,15,19,29,17,17,14,0,0,3,1,0,0, 22, 17,7, 1,0,0,5, --DOC_HIDE
|
||||
3, 5, 6,4, 11,15,19,29,17,17,14,0,0,3,1,0,0, 22, 17,7, 1,0,0,5, --DOC_HIDE
|
||||
3, 5, 6,4, 11,15,19,29,17,17,14,0,0,3,1,0,0, 22, 17,7, 1,0,0,5, --DOC_HIDE
|
||||
} --DOC_HIDE
|
||||
|
||||
local my_source_object = gears.object { --DOC_HIDE
|
||||
enable_properties = true, --DOC_HIDE
|
||||
enable_auto_signals = true --DOC_HIDE
|
||||
}--DOC_HIDE
|
||||
|
||||
my_source_object.value = 0 --DOC_HIDE
|
||||
|
||||
-- luacheck: globals my_graph my_label my_progress --DOC_HIDE
|
||||
|
||||
local w = --DOC_HIDE
|
||||
wibox.widget {
|
||||
{
|
||||
{
|
||||
id = "my_graph",
|
||||
max_value = 30,
|
||||
widget = wibox.widget.graph
|
||||
},
|
||||
{
|
||||
id = "my_label",
|
||||
align = "center",
|
||||
valign = "center",
|
||||
widget = wibox.widget.textbox,
|
||||
},
|
||||
layout = wibox.layout.stack
|
||||
},
|
||||
id = "my_progress",
|
||||
max_value = 30,
|
||||
min_value = 0,
|
||||
forced_height = 30, --DOC_HIDE
|
||||
forced_width = 200, --DOC_HIDE
|
||||
widget = wibox.container.radialprogressbar,
|
||||
|
||||
--DOC_NEWLINE
|
||||
-- Set the value of all 3 widgets.
|
||||
gears.connection {
|
||||
source = my_source_object,
|
||||
source_property = "value",
|
||||
callback = function(_, _, value)
|
||||
my_graph:add_value(value)
|
||||
my_label.text = value .. "mB/s"
|
||||
my_progress.value = value
|
||||
end
|
||||
},
|
||||
}
|
||||
|
||||
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
|
||||
|
||||
for _, v in ipairs(data) do --DOC_HIDE
|
||||
assert(v ~= nil) --DOC_HIDE
|
||||
my_source_object.value = v --DOC_HIDE
|
||||
end --DOC_HIDE
|
||||
|
||||
parent:add(w) --DOC_HIDE
|
||||
|
||||
--DOC_HIDE vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
Loading…
Reference in New Issue