@Override public void run() { rp.test(); } };
@Test public void timedNoOutdatedData() { TestScheduler scheduler = new TestScheduler(); ReplaySubject<Integer> source = ReplaySubject.createWithTime(2, TimeUnit.SECONDS, scheduler); source.onNext(1); source.onComplete(); source.test().assertResult(1); source.test().assertResult(1); scheduler.advanceTimeBy(3, TimeUnit.SECONDS); source.test().assertResult(); }
@Test public void cancelRace() { for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { final ReplaySubject<Integer> rp = ReplaySubject.create(); final TestObserver<Integer> to1 = rp.test(); final TestObserver<Integer> to2 = rp.test(); Runnable r1 = new Runnable() { @Override public void run() { to1.cancel(); } }; Runnable r2 = new Runnable() { @Override public void run() { to2.cancel(); } }; TestHelper.race(r1, r2); assertFalse(rp.hasObservers()); } }
@Test public void capacityHint() { ReplaySubject<Integer> rp = ReplaySubject.create(8); for (int i = 0; i < 15; i++) { rp.onNext(i); } rp.onComplete(); rp.test().assertResult(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14); }
@Test public void timedSkipOld() { TestScheduler scheduler = new TestScheduler(); ReplaySubject<Integer> rp = ReplaySubject.createWithTimeAndSize(1, TimeUnit.SECONDS, scheduler, 2); rp.onNext(1); scheduler.advanceTimeBy(1, TimeUnit.SECONDS); rp.test() .assertEmpty(); }
@Test public void hasSubscribers() { ReplaySubject<Integer> rp = ReplaySubject.create(); assertFalse(rp.hasObservers()); TestObserver<Integer> to = rp.test(); assertTrue(rp.hasObservers()); to.cancel(); assertFalse(rp.hasObservers()); }
@Test public void sizeboundReplayError() { ReplaySubject<Integer> rp = ReplaySubject.createWithSize(2); rp.onNext(1); rp.onNext(2); rp.onNext(3); rp.onNext(4); rp.onError(new TestException()); rp.test() .assertFailure(TestException.class, 3, 4); }
@Test public void sizeAndTimeBoundReplayError() { ReplaySubject<Integer> rp = ReplaySubject.createWithTimeAndSize(1, TimeUnit.DAYS, Schedulers.single(), 2); rp.onNext(1); rp.onNext(2); rp.onNext(3); rp.onNext(4); rp.onError(new TestException()); rp.test() .assertFailure(TestException.class, 3, 4); }