def mapper(ys, i): def proj(y): return "%s %s" % (i, y) return ys.pipe( ops.map(proj), ops.concat(reactivex.return_value("%s end" % i)))
def test_concat_repeat(self): with marbles_testing() as (start, cold, hot, exp): e1 = cold("-e11-e12|") e2 = cold("-e21-e22|") ex = exp("-e11-e12-e21-e22-e11-e12-e21-e22|") obs = e1.pipe(ops.concat(e2), ops.repeat(2)) results = start(obs) assert results == ex
def test_range_double_subscribe(self): scheduler = TestScheduler() obs = reactivex.range(1, 4) results = scheduler.start(lambda: obs.pipe(ops.concat(obs))) assert results.messages == [ on_next(200, 1), on_next(200, 2), on_next(200, 3), on_next(200, 1), on_next(200, 2), on_next(200, 3), on_completed(200), ]
def test_concat_forward_none_scheduler(self): subscribe_schedulers = {"e1": "unknown", "e2": "unknown"} def subscribe_e1(observer, scheduler="not_set"): subscribe_schedulers["e1"] = scheduler observer.on_completed() def subscribe_e2(observer, scheduler="not_set"): subscribe_schedulers["e2"] = scheduler observer.on_completed() e1 = reactivex.create(subscribe_e1) e2 = reactivex.create(subscribe_e2) stream = e1.pipe(ops.concat(e2)) stream.subscribe() assert subscribe_schedulers["e1"] is None assert subscribe_schedulers["e2"] is None
def test_concat_forward_scheduler(self): scheduler = TestScheduler() subscribe_schedulers = {"e1": "unknown", "e2": "unknown"} def subscribe_e1(observer, scheduler="not_set"): subscribe_schedulers["e1"] = scheduler observer.on_completed() def subscribe_e2(observer, scheduler="not_set"): subscribe_schedulers["e2"] = scheduler observer.on_completed() e1 = reactivex.create(subscribe_e1) e2 = reactivex.create(subscribe_e2) stream = e1.pipe(ops.concat(e2)) stream.subscribe(scheduler=scheduler) scheduler.advance_to(1000) assert subscribe_schedulers["e1"] is scheduler assert subscribe_schedulers["e2"] is scheduler
def do_while(source: Observable[_T]) -> Observable[_T]: return source.pipe(ops.concat(source.pipe( ops.while_do(condition), ), ))
def create(): return e1.pipe(ops.concat(e2))
def create(): return e2.pipe(ops.concat(e1))