def test_repeat_observable_repeat_count_throws(): scheduler1 = TestScheduler() xs = Observable.return_value(1, scheduler1).repeat(3) xs.subscribe(lambda x: _raise('ex')) try: return scheduler1.start() except RxException: pass scheduler2 = TestScheduler() ys = Observable.throwException('ex1', scheduler2).repeat(3) ys.subscribe(lambda ex: _raise('ex2')) try: return scheduler2.start() except RxException: pass scheduler3 = TestScheduler() zs = Observable.return_value(1, scheduler3).repeat(100) d = zs.subscribe(on_complete=lambda: _raise('ex3')) scheduler3.schedule_absolute(10, lambda: d.dispose()) scheduler3.start() xss = Observable.create(lambda o: _raise('ex4')).repeat(3) try: return xss.subscribe() except RxException: pass
def test_Retry_Observable_Throws(): scheduler1 = TestScheduler() xs = Observable.return_value(1, scheduler1).retry() xs.subscribe(lambda x: _raise('ex')) try: return scheduler1.start() except RxException: pass scheduler2 = TestScheduler() ys = Observable.throw_exception('ex', scheduler2).retry() d = ys.subscribe(on_error=lambda ex: _raise('ex')) scheduler2.schedule_absolute(210, lambda: d.dispose()) scheduler2.start() scheduler3 = TestScheduler() zs = Observable.return_value(1, scheduler3).retry() zs.subscribe(on_completed=lambda: _raise('ex')) try: return scheduler3.start() except RxException: pass xss = Observable.create(lambda o: _raise('ex')).retry() try: return xss.subscribe() except RxException: pass
def test_for_each_index_return(self): lstX = [] lstI = [] def action(x, i): lstX.append(x) lstI.append(i) Observable.return_value(42).to_blocking().for_each(action) assert(lstX == [42]) assert(lstI == [0])
def test_subject_create(): _x = [None] _ex = [None] done = False def on_next(x): _x[0] = x def on_error(ex): _ex[0] = ex def on_completed(): done = True v = Observer(on_next, on_error, on_completed) o = Observable.return_value(42) s = Subject.create(v, o) def on_next2(x): _x[0] = x s.subscribe(on_next2) assert(42 == _x[0]) s.on_next(21) e = 'ex' s.on_error(e) assert(e == _ex[0]) s.on_completed() assert(not done)
def test_return_observer_throws(): scheduler1 = TestScheduler() xs = Observable.return_value(1, scheduler1) xs.subscribe(lambda x: _raise('ex')) try: scheduler1.start() except RxException: pass scheduler2 = TestScheduler() ys = Observable.return_value(1, scheduler2) ys.subscribe(lambda x: x, lambda ex: ex, lambda: _raise('ex')) try: scheduler2.start() except RxException: pass
def test_connectable_observable_creation(self): y = [0] s2 = Subject() co2 = ConnectableObservable(Observable.return_value(1), s2) def on_next(x): y[0] = x co2.subscribe(on_next=on_next) self.assertNotEqual(1, y[0]) co2.connect() self.assertEqual(1, y[0])
def test_return_disposed_after_next(): scheduler = TestScheduler() d = SerialDisposable() xs = Observable.return_value(42, scheduler) results = scheduler.create_observer() def action(scheduler, state): def on_next(x): d.dispose() results.on_next(x) def on_error(e): results.on_error(e) def on_completed(): results.on_completed() d.disposable = xs.subscribe(on_next, on_error, on_completed) return d.disposable scheduler.schedule_absolute(100, action) scheduler.start() results.messages.assert_equal(on_next(101, 42))
def selector(ys, i): def proj(y): return "%s %s" % (i, y) return ys.select(proj).concat(Observable.return_value('%s end' % i))
def factory(): return Observable.return_value(42, scheduler)
def test_for_each_return(self): lst = [] Observable.return_value(42).to_blocking().for_each(lambda x: lst.append(x)) assert(lst == [42])
def mapper(ys, i): def proj(y): return "%s %s" % (i, y) return ys.map(proj).concat( Observable.return_value('%s end' % i))
def selector(ys, i): def proj(y): return "%s %s" % (i, y) return ys.select(proj).concat( Observable.return_value('%s end' % i))