summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2022-01-20 12:20:33 +0100
committerBastien Nocera <hadess@hadess.net>2022-01-20 12:20:33 +0100
commita43e1689e3e32253e2203d28df8ffcd917d1ce00 (patch)
tree1f76568ac43303cb26ffbd44933297bcdb0fb26f /tests
parentf5fae22865a781204d56d6c6adfcbac3867bae9b (diff)
downloadgnome-bluetooth-a43e1689e3e32253e2203d28df8ffcd917d1ce00.tar.gz
lib: Add API to check whether input devices are connected
This will figure out whether there are any connected input devices, so that gnome-shell (or gnome-control-center) can show a confirmation dialogue before really turning things off. Closes: #101
Diffstat (limited to 'tests')
-rwxr-xr-xtests/integration-test48
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/integration-test b/tests/integration-test
index 2ad777cc..a79066ef 100755
--- a/tests/integration-test
+++ b/tests/integration-test
@@ -374,6 +374,50 @@ class OopTests(dbusmock.DBusTestCase):
agent.unregister()
self.wait_for_mainloop()
+ def test_connected_input_devices(self):
+ bus = dbus.SystemBus()
+ dbusmock_bluez = dbus.Interface(bus.get_object('org.bluez', '/'), 'org.bluez.Mock')
+
+ path = dbusmock_bluez.AddDevice('hci0', '11:22:33:44:55:66', 'My LE Mouse')
+ dev1 = dbus.Interface(bus.get_object('org.bluez', path), 'org.freedesktop.DBus.Mock')
+ dev1.UpdateProperties('org.bluez.Device1',
+ {'UUIDs': dbus.Array(['00001812-0000-1000-8000-00805f9b34fb'], variant_level=1)})
+
+ path = dbusmock_bluez.AddDevice('hci0', '11:22:33:44:55:67', 'My Classic Mouse')
+ dev2 = dbus.Interface(bus.get_object('org.bluez', path), 'org.freedesktop.DBus.Mock')
+ dev2.UpdateProperties('org.bluez.Device1',
+ {'UUIDs': dbus.Array(['00001124-0000-1000-8000-00805f9b34fb'], variant_level=1)})
+
+ self.wait_for_mainloop()
+ list_store = self.client.get_devices()
+ self.assertEqual(list_store.get_n_items(), 2)
+ self.assertEqual(self.client.has_connected_input_devices(), False)
+
+ dev1.UpdateProperties('org.bluez.Device1',
+ {'Connected': dbus.Boolean(True, variant_level=1)})
+
+ self.wait_for_mainloop()
+ self.assertEqual(self.client.has_connected_input_devices(), True)
+
+ dev1.UpdateProperties('org.bluez.Device1',
+ {'Connected': dbus.Boolean(False, variant_level=1)})
+
+ self.wait_for_mainloop()
+ self.assertEqual(self.client.has_connected_input_devices(), False)
+
+ dev2.UpdateProperties('org.bluez.Device1',
+ {'Connected': dbus.Boolean(True, variant_level=1)})
+
+ self.wait_for_mainloop()
+ self.assertEqual(self.client.has_connected_input_devices(), True)
+
+ dev2.UpdateProperties('org.bluez.Device1',
+ {'Connected': dbus.Boolean(False, variant_level=1)})
+
+ self.wait_for_mainloop()
+ self.assertEqual(self.client.has_connected_input_devices(), False)
+
+
class Tests(dbusmock.DBusTestCase):
@classmethod
@@ -471,5 +515,9 @@ class Tests(dbusmock.DBusTestCase):
def test_agent(self):
self.run_test_process()
+ def test_connected_input_devices(self):
+ self.dbusmock_bluez.AddAdapter('hci0', 'my-computer')
+ self.run_test_process()
+
if __name__ == '__main__':
unittest.main()