+ def test_create_from_message_iterator(self):
+ class MySourceIter(bt2._UserMessageIterator):
+ def __init__(self, self_port_output):
+ nonlocal src_iter_initialized
+ src_iter_initialized = True
+
+ class MySource(bt2._UserSourceComponent, message_iterator_class=MySourceIter):
+ def __init__(self, params, obj):
+ self._add_output_port('out')
+
+ class MyFilterIter(bt2._UserMessageIterator):
+ def __init__(self, self_port_output):
+ nonlocal flt_iter_initialized
+ flt_iter_initialized = True
+ self._up_iter = self._create_input_port_message_iterator(
+ self._component._input_ports['in']
+ )
+
+ def __next__(self):
+ return next(self._up_iter)
+
+ class MyFilter(bt2._UserFilterComponent, message_iterator_class=MyFilterIter):
+ def __init__(self, params, obj):
+ self._add_input_port('in')
+ self._add_output_port('out')
+
+ src_iter_initialized = False
+ flt_iter_initialized = False
+ graph = self._create_graph(MySource, MyFilter)
+ graph.run()
+ self.assertTrue(src_iter_initialized)
+ self.assertTrue(flt_iter_initialized)
+