diff options
author | Simon Feltman <sfeltman@src.gnome.org> | 2013-08-07 12:08:15 -0700 |
---|---|---|
committer | Simon Feltman <sfeltman@src.gnome.org> | 2013-10-14 14:44:20 -0700 |
commit | 9456e83233a927f1f01c6ffcb1f07c62b491a1df (patch) | |
tree | 2730c15652120fb98a2427c841d004464dd4cb73 /tests/test_everything.py | |
parent | ba4a0a65bf9ec44c3b9449f63d63035bff75d8df (diff) | |
download | pygobject-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.py | 32 |
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() |