private Disposable getDebouncedLoader() { return debouncedSignal.mergeWith(nearEndIntervalSignal) .debounce(loadDebounceMillis, TimeUnit.MILLISECONDS) .subscribeOn(Schedulers.single()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(timestamp -> loadImmediate()); }
@Test public void completeRace() { for (int i = 0; i < 1000; i++) { final PublishSubject<Integer> ps = PublishSubject.create(); final CompletableSubject cs = CompletableSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).test(); Runnable r1 = new Runnable() { @Override public void run() { ps.onNext(1); ps.onComplete(); } }; Runnable r2 = new Runnable() { @Override public void run() { cs.onComplete(); } }; TestHelper.race(r1, r2); to.assertResult(1); } }
@Test public void completeRace() { for (int i = 0; i < 10000; i++) { final PublishSubject<Integer> ps = PublishSubject.create(); final SingleSubject<Integer> cs = SingleSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).test(); Runnable r1 = new Runnable() { @Override public void run() { ps.onNext(1); ps.onComplete(); } }; Runnable r2 = new Runnable() { @Override public void run() { cs.onSuccess(1); } }; TestHelper.race(r1, r2); to.assertResult(1, 1); } }
@Test public void completeRace() { for (int i = 0; i < 10000; i++) { final PublishSubject<Integer> ps = PublishSubject.create(); final MaybeSubject<Integer> cs = MaybeSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).test(); Runnable r1 = new Runnable() { @Override public void run() { ps.onNext(1); ps.onComplete(); } }; Runnable r2 = new Runnable() { @Override public void run() { cs.onSuccess(1); } }; TestHelper.race(r1, r2); to.assertResult(1, 1); } }
@Test public void onSuccessSlowPath() { final PublishSubject<Integer> ps = PublishSubject.create(); final MaybeSubject<Integer> cs = MaybeSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).subscribeWith(new TestObserver<Integer>() { @Override public void onNext(Integer t) { super.onNext(t); if (t == 1) { cs.onSuccess(2); } } }); ps.onNext(1); ps.onNext(3); ps.onComplete(); to.assertResult(1, 2, 3); }
@Test public void onSuccessSlowPath() { final PublishSubject<Integer> ps = PublishSubject.create(); final SingleSubject<Integer> cs = SingleSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).subscribeWith(new TestObserver<Integer>() { @Override public void onNext(Integer t) { super.onNext(t); if (t == 1) { cs.onSuccess(2); } } }); ps.onNext(1); ps.onNext(3); ps.onComplete(); to.assertResult(1, 2, 3); }
@Test public void onNextSlowPath() { final PublishSubject<Integer> ps = PublishSubject.create(); final MaybeSubject<Integer> cs = MaybeSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).subscribeWith(new TestObserver<Integer>() { @Override public void onNext(Integer t) { super.onNext(t); if (t == 1) { ps.onNext(2); } } }); ps.onNext(1); cs.onSuccess(3); ps.onNext(4); ps.onComplete(); to.assertResult(1, 2, 3, 4); }
@Test public void onNextSlowPathCreateQueue() { final PublishSubject<Integer> ps = PublishSubject.create(); final MaybeSubject<Integer> cs = MaybeSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).subscribeWith(new TestObserver<Integer>() { @Override public void onNext(Integer t) { super.onNext(t); if (t == 1) { ps.onNext(2); ps.onNext(3); } } }); cs.onSuccess(0); ps.onNext(1); ps.onNext(4); ps.onComplete(); to.assertResult(0, 1, 2, 3, 4); }
@Test public void onNextSlowPathCreateQueue() { final PublishSubject<Integer> ps = PublishSubject.create(); final SingleSubject<Integer> cs = SingleSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).subscribeWith(new TestObserver<Integer>() { @Override public void onNext(Integer t) { super.onNext(t); if (t == 1) { ps.onNext(2); ps.onNext(3); } } }); cs.onSuccess(0); ps.onNext(1); ps.onNext(4); ps.onComplete(); to.assertResult(0, 1, 2, 3, 4); } }
@Test public void onNextSlowPath() { final PublishSubject<Integer> ps = PublishSubject.create(); final SingleSubject<Integer> cs = SingleSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).subscribeWith(new TestObserver<Integer>() { @Override public void onNext(Integer t) { super.onNext(t); if (t == 1) { ps.onNext(2); } } }); ps.onNext(1); cs.onSuccess(3); ps.onNext(4); ps.onComplete(); to.assertResult(1, 2, 3, 4); }
@Test public void cancel() { final PublishSubject<Integer> ps = PublishSubject.create(); final SingleSubject<Integer> cs = SingleSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).test(); assertTrue(ps.hasObservers()); assertTrue(cs.hasObservers()); to.cancel(); assertFalse(ps.hasObservers()); assertFalse(cs.hasObservers()); }
@Test public void cancel() { final PublishSubject<Integer> ps = PublishSubject.create(); final MaybeSubject<Integer> cs = MaybeSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).test(); assertTrue(ps.hasObservers()); assertTrue(cs.hasObservers()); to.cancel(); assertFalse(ps.hasObservers()); assertFalse(cs.hasObservers()); }
@Test public void cancel() { final PublishSubject<Integer> ps = PublishSubject.create(); final CompletableSubject cs = CompletableSubject.create(); TestObserver<Integer> to = ps.mergeWith(cs).test(); assertTrue(ps.hasObservers()); assertTrue(cs.hasObservers()); to.cancel(); assertFalse(ps.hasObservers()); assertFalse(cs.hasObservers()); }