X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=tests%2Fbindings%2Fpython%2Fbt2%2Ftest_port.py;fp=tests%2Fbindings%2Fpython%2Fbt2%2Ftest_port.py;h=4566c3a60d0a52e4dbd1b2110f5c25a21c00480c;hb=2e00bc76cf37af167c45253cfc8f8d197222d6b8;hp=2d203784624418925db5d55ff6d2f79ee0409304;hpb=c5f330cd909f5dfbdb519546e875b4427434ba4f;p=babeltrace.git diff --git a/tests/bindings/python/bt2/test_port.py b/tests/bindings/python/bt2/test_port.py index 2d203784..4566c3a6 100644 --- a/tests/bindings/python/bt2/test_port.py +++ b/tests/bindings/python/bt2/test_port.py @@ -774,3 +774,69 @@ class PortTestCase(unittest.TestCase): pass self._create_comp(MySink) + + def test_source_self_port_user_data(self): + class MyIter(bt2._UserMessageIterator): + def __next__(self): + raise bt2.Stop + + class MySource(bt2._UserFilterComponent, + message_iterator_class=MyIter): + def __init__(comp_self, params): + nonlocal user_datas + + p = comp_self._add_output_port('port1') + user_datas.append(p.user_data) + p = comp_self._add_output_port('port2', 2) + user_datas.append(p.user_data) + + user_datas = [] + + comp = self._create_comp(MySource) + self.assertEqual(user_datas, [None, 2]) + + def test_filter_self_port_user_data(self): + class MyIter(bt2._UserMessageIterator): + def __next__(self): + raise bt2.Stop + + class MyFilter(bt2._UserFilterComponent, + message_iterator_class=MyIter): + def __init__(comp_self, params): + nonlocal user_datas + + p = comp_self._add_output_port('port1') + user_datas.append(p.user_data) + p = comp_self._add_output_port('port2', 'user data string') + user_datas.append(p.user_data) + + p = comp_self._add_input_port('port3') + user_datas.append(p.user_data) + p = comp_self._add_input_port('port4', user_data={'user data': 'dict'}) + user_datas.append(p.user_data) + + user_datas = [] + + comp = self._create_comp(MyFilter) + self.assertEqual(user_datas, + [None, 'user data string', None, {'user data': 'dict'}]) + + def test_sink_self_port_user_data(self): + class MyIter(bt2._UserMessageIterator): + def __next__(self): + raise bt2.Stop + + class MySink(bt2._UserFilterComponent, + message_iterator_class=MyIter): + def __init__(comp_self, params): + nonlocal user_datas + + p = comp_self._add_input_port('port1') + user_datas.append(p.user_data) + p = comp_self._add_input_port('port2', set()) + user_datas.append(p.user_data) + + user_datas = [] + + comp = self._create_comp(MySink) + self.assertEqual(user_datas, [None, set()])