def test_initialize(self): sink = TObserver() ScanObserver( observer=sink, func=lambda acc, v: acc + v, initial=0, )
def observe(self, observer_info: ObserverInfo): return self.source.observe(observer_info.copy( observer=ScanObserver( observer=observer_info.observer, func=self.func, initial=self.initial, ), ))
def test_single_batch(self): sink = TObserver() obs = ScanObserver( observer=sink, func=lambda acc, v: acc + v, initial=0, ) self.source.observe(init_observer_info(observer=obs)) self.source.on_next_list([1, 2, 3]) self.assertEqual([1, 3, 6], sink.received)
def test_single_value(self): sink = TObserver() obs = ScanObserver( observer=sink, func=lambda acc, v: acc + v, initial=0, ) self.source.observe(init_observer_info(observer=obs)) self.source.on_next_single(1) self.assertEqual([1], sink.received)
def test_on_completed(self): sink = TObserver() obs = ScanObserver( observer=sink, func=lambda acc, v: acc + v, initial=0, ) self.source.observe(init_observer_info(observer=obs)) self.source.on_completed() self.assertTrue(sink.is_completed)
def test_on_error(self): sink = TObserver() obs = ScanObserver( observer=sink, func=lambda acc, v: acc + v, initial=0, ) self.source.observe(init_observer_info(observer=obs)) exc = Exception() self.source.on_error(exc) self.assertEqual(exc, sink.exception)
def test_exception_during_on_next(self): sink = TObserver() obs = ScanObserver( observer=sink, func=lambda acc, v: acc + v, initial=0, ) self.source.observe(init_observer_info(observer=obs)) exc = Exception() def gen_iter(): yield 1 raise exc self.source.on_next_iter(gen_iter()) self.assertEqual(exc, sink.exception)