diff options
author | Martin Pitt <martinpitt@gnome.org> | 2014-01-14 08:53:25 +0100 |
---|---|---|
committer | Martin Pitt <martinpitt@gnome.org> | 2014-01-14 08:53:25 +0100 |
commit | a50a8386aae54dace7e46569415fdef85758fb9c (patch) | |
tree | af71760cc48852ac10a9c2a7043ef2631b80ae65 | |
parent | 3563a2d21a9e08a802d1cf30e04ba340e0bcfb49 (diff) | |
download | pygobject-a50a8386aae54dace7e46569415fdef85758fb9c.tar.gz |
Add test for callback user data arguments with following arguments
In this case we can't use the varargs userdata handling. Provides test case for
https://bugzilla.gnome.org/show_bug.cgi?id=722104.
-rw-r--r-- | tests/test_everything.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/test_everything.py b/tests/test_everything.py index 61b40e14..5e58fbcb 100644 --- a/tests/test_everything.py +++ b/tests/test_everything.py @@ -761,6 +761,54 @@ class TestCallbacks(unittest.TestCase): self.assertEqual(TestCallbacks.called, 10) self.assertSequenceEqual(collected_user_data, [1, 2] * 10) + def test_callback_user_data_middle_none(self): + cb_info = {} + + def callback(userdata): + cb_info['called'] = True + cb_info['userdata'] = userdata + return 1 + + (y, z, q) = Everything.test_torture_signature_2( + 42, callback, None, 'some string', 3) + self.assertEqual(y, 42) + self.assertEqual(z, 84) + self.assertEqual(q, 14) + self.assertTrue(cb_info['called']) + self.assertEqual(cb_info['userdata'], None) + + def test_callback_user_data_middle_single(self): + cb_info = {} + + def callback(userdata): + cb_info['called'] = True + cb_info['userdata'] = userdata + return 1 + + (y, z, q) = Everything.test_torture_signature_2( + 42, callback, 'User Data', 'some string', 3) + self.assertEqual(y, 42) + self.assertEqual(z, 84) + self.assertEqual(q, 14) + self.assertTrue(cb_info['called']) + self.assertEqual(cb_info['userdata'], 'User Data') + + def test_callback_user_data_middle_tuple(self): + cb_info = {} + + def callback(userdata): + cb_info['called'] = True + cb_info['userdata'] = userdata + return 1 + + (y, z, q) = Everything.test_torture_signature_2( + 42, callback, (-5, 'User Data'), 'some string', 3) + self.assertEqual(y, 42) + self.assertEqual(z, 84) + self.assertEqual(q, 14) + self.assertTrue(cb_info['called']) + self.assertEqual(cb_info['userdata'], (-5, 'User Data')) + def test_async_ready_callback(self): TestCallbacks.called = False TestCallbacks.main_loop = GLib.MainLoop() |