summaryrefslogtreecommitdiff
path: root/tests/test_everything.py
diff options
context:
space:
mode:
authorSimon Feltman <sfeltman@src.gnome.org>2013-08-07 12:08:15 -0700
committerSimon Feltman <sfeltman@src.gnome.org>2013-10-14 14:44:20 -0700
commit9456e83233a927f1f01c6ffcb1f07c62b491a1df (patch)
tree2730c15652120fb98a2427c841d004464dd4cb73 /tests/test_everything.py
parentba4a0a65bf9ec44c3b9449f63d63035bff75d8df (diff)
downloadpygobject-9456e83233a927f1f01c6ffcb1f07c62b491a1df.tar.gz
Add support for variable user data arguments
Support a variable number of user data arguments for all callback connection function where the user data is the last explicit argument. This adds convience as well as consistency with the rest of PyGObject. Cleanup overrides for GLib.idle_add, timeout_add, timeout_add_seconds, io_add_watch, and child_watch_add which manually implemented this feature. https://bugzilla.gnome.org/show_bug.cgi?id=640812
Diffstat (limited to 'tests/test_everything.py')
-rw-r--r--tests/test_everything.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/test_everything.py b/tests/test_everything.py
index ab1fc487..5c4ba6bc 100644
--- a/tests/test_everything.py
+++ b/tests/test_everything.py
@@ -730,6 +730,38 @@ class TestCallbacks(unittest.TestCase):
self.assertEqual(TestCallbacks.called, 100)
+ def test_callback_userdata_varargs(self):
+ TestCallbacks.called = 0
+ collected_user_data = []
+
+ def callback(a, b):
+ collected_user_data.extend([a, b])
+ TestCallbacks.called += 1
+ return TestCallbacks.called
+
+ for i in range(10):
+ val = Everything.test_callback_user_data(callback, 1, 2)
+ self.assertEqual(val, i + 1)
+
+ self.assertEqual(TestCallbacks.called, 10)
+ self.assertSequenceEqual(collected_user_data, [1, 2] * 10)
+
+ def test_callback_userdata_as_kwarg_tuple(self):
+ TestCallbacks.called = 0
+ collected_user_data = []
+
+ def callback(user_data):
+ collected_user_data.extend(user_data)
+ TestCallbacks.called += 1
+ return TestCallbacks.called
+
+ for i in range(10):
+ val = Everything.test_callback_user_data(callback, user_data=(1, 2))
+ self.assertEqual(val, i + 1)
+
+ self.assertEqual(TestCallbacks.called, 10)
+ self.assertSequenceEqual(collected_user_data, [1, 2] * 10)
+
def test_async_ready_callback(self):
TestCallbacks.called = False
TestCallbacks.main_loop = GLib.MainLoop()