lib/plugin/plugin.c: do not use G_MODULE_BIND_LOCAL for Python plugin provider
[babeltrace.git] / tests / bindings / python / bt2 / test_comp_notif_iter.py
index 223cab02b05a5ae6d641d90e194a250f1773f4b8..70afebe9528820f692b6280882c6b164764a8f31 100644 (file)
@@ -256,6 +256,93 @@ This too:
 VoilĂ .'''
         self.assertEqual(MySink.help, expected_help)
 
+    def test_query_missing(self):
+        class MySink(bt2.UserSinkComponent):
+            def _consume(self):
+                pass
+
+        with self.assertRaises(bt2.Error):
+            MySink.query('salut')
+
+    def test_query_raises(self):
+        class MySink(bt2.UserSinkComponent):
+            def _consume(self):
+                pass
+
+            @staticmethod
+            def _query(obj, params):
+                raise ValueError
+
+        with self.assertRaises(bt2.Error):
+            MySink.query('salut')
+
+    def test_query_gets_none_params(self):
+        class MySink(bt2.UserSinkComponent):
+            def _consume(self):
+                pass
+
+            @staticmethod
+            def _query(obj, params):
+                nonlocal recv_params
+                recv_params = params
+
+        recv_params = NotImplemented
+        MySink.query('allo', None)
+        self.assertIsNone(recv_params)
+
+    def test_query_gets_same_params(self):
+        class MySink(bt2.UserSinkComponent):
+            def _consume(self):
+                pass
+
+            @staticmethod
+            def _query(obj, params):
+                nonlocal recv_params
+                recv_params = params
+
+        recv_params = NotImplemented
+        params = bt2.create_value(23)
+        MySink.query('allo', params)
+        self.assertEqual(recv_params.addr, params.addr)
+
+    def test_query_obj(self):
+        class MySink(bt2.UserSinkComponent):
+            def _consume(self):
+                pass
+
+            @staticmethod
+            def _query(obj, params):
+                nonlocal recv_obj
+                recv_obj = obj
+
+        recv_obj = None
+        MySink.query('salut')
+        self.assertEqual(recv_obj, 'salut')
+
+    def test_query_returns_none(self):
+        class MySink(bt2.UserSinkComponent):
+            def _consume(self):
+                pass
+
+            @staticmethod
+            def _query(obj, params):
+                pass
+
+        self.assertIsNone(MySink.query('allo', 177))
+
+    def test_query_returns_params(self):
+        class MySink(bt2.UserSinkComponent):
+            def _consume(self):
+                pass
+
+            @staticmethod
+            def _query(obj, params):
+                return {'obj': obj, 'params': params}
+
+        results = MySink.query('hello', (45, 'lol'))
+        self.assertEqual(results['obj'], 'hello')
+        self.assertEqual(results['params'], (45, 'lol'))
+
     def test_init(self):
         class MySink(bt2.UserSinkComponent):
             def __init__(self):
This page took 0.026002 seconds and 4 git commands to generate.