diff options
Diffstat (limited to 'test/python')
-rwxr-xr-x | test/python/test-client.py | 16 | ||||
-rwxr-xr-x | test/python/test-service.py | 16 |
2 files changed, 32 insertions, 0 deletions
diff --git a/test/python/test-client.py b/test/python/test-client.py index 433caac9..8c09b67e 100755 --- a/test/python/test-client.py +++ b/test/python/test-client.py @@ -29,6 +29,7 @@ test_types_vals = [1, 12323231, 3.14159265, 99999999.99, (1,2,3), (1,), (1,"2",3), ("2", "what"), ("you", 1.2), {1:"a", 2:"b"}, {"a":1, "b":2}, #{"a":(1,"B")}, {1:1.1, 2:2.2}, [[1,2,3],[2,3,4]], [["a","b"],["c","d"]], + True, False, #([1,2,3],"c", 1.2, ["a","b","c"], {"a": (1,"v"), "b": (2,"d")}) ] @@ -153,6 +154,21 @@ class TestDBusBindings(unittest.TestCase): print "CheckInheritance returned %s" % ret self.assert_(ret, "overriding CheckInheritance from TestInterface failed") + def testAsyncMethods(self): + print "\n********* Testing asynchronous method implementation *******" + for (async, fail) in ((False, False), (False, True), (True, False), (True, True)): + try: + val = ('a', 1, False, [1,2], {1:2}) + print "calling AsynchronousMethod with %s %s %s" % (async, fail, val) + ret = self.iface.AsynchronousMethod(async, fail, val) + except Exception, e: + print "%s:\n%s" % (e.__class__, e) + self.assert_(fail) + else: + self.assert_(not fail) + print val, ret + self.assert_(val == ret) + class TestDBusPythonToGLibBindings(unittest.TestCase): def setUp(self): self.bus = dbus.SessionBus() diff --git a/test/python/test-service.py b/test/python/test-service.py index ecb9fd60..820514ae 100755 --- a/test/python/test-service.py +++ b/test/python/test-service.py @@ -80,6 +80,22 @@ class TestObject(dbus.service.Object, TestInterface): def CheckInheritance(self): return True + @dbus.service.method('org.freedesktop.DBus.TestSuiteInterface', in_signature='bbv', out_signature='v', async_callbacks=('return_cb', 'error_cb')) + def AsynchronousMethod(self, async, fail, variant, return_cb, error_cb): + try: + if async: + gobject.timeout_add(500, self.AsynchronousMethod, False, fail, variant, return_cb, error_cb) + return + else: + if fail: + raise RuntimeError + else: + return_cb(variant) + + return False # do not run again + except Exception, e: + error_cb(e) + session_bus = dbus.SessionBus() name = dbus.service.BusName("org.freedesktop.DBus.TestSuitePythonService", bus=session_bus) object = TestObject(name) |