@Test public void createWithTimeAndSizeInvalidCapacity() { try { ReplaySubject.createWithTimeAndSize(1, TimeUnit.DAYS, Schedulers.computation(), -99); fail("Didn't throw IllegalArgumentException"); } catch (IllegalArgumentException ex) { assertEquals("maxSize > 0 required but it was -99", ex.getMessage()); } }
@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 reentrantDrain() { TestScheduler scheduler = new TestScheduler(); final ReplaySubject<Integer> rp = ReplaySubject.createWithTimeAndSize(1, TimeUnit.SECONDS, scheduler, 2); TestObserver<Integer> to = new TestObserver<Integer>() { @Override public void onNext(Integer t) { if (t == 1) { rp.onNext(2); } super.onNext(t); } }; rp.subscribe(to); rp.onNext(1); rp.onComplete(); to.assertResult(1, 2); }
@Test public void takeSizeAndTime() { TestScheduler scheduler = new TestScheduler(); ReplaySubject<Integer> rp = ReplaySubject.createWithTimeAndSize(1, TimeUnit.SECONDS, scheduler, 2); rp.onNext(1); rp.onNext(2); rp.onNext(3); rp .take(1) .test() .assertResult(2); }
@Test public void dispose() { TestHelper.checkDisposed(ReplaySubject.create()); TestHelper.checkDisposed(ReplaySubject.createUnbounded()); TestHelper.checkDisposed(ReplaySubject.createWithSize(10)); TestHelper.checkDisposed(ReplaySubject.createWithTimeAndSize(1, TimeUnit.SECONDS, Schedulers.single(), 10)); }
@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); }
@Test public void peekStateTimeAndSizeValue() { ReplaySubject<Integer> rp = ReplaySubject.createWithTimeAndSize(1, TimeUnit.DAYS, Schedulers.computation(), 1); assertNull(rp.getValue()); assertEquals(0, rp.getValues().length); assertNull(rp.getValues(new Integer[2])[0]); rp.onComplete(); assertNull(rp.getValue()); assertEquals(0, rp.getValues().length); assertNull(rp.getValues(new Integer[2])[0]); rp = ReplaySubject.createWithTimeAndSize(1, TimeUnit.DAYS, Schedulers.computation(), 1); rp.onError(new TestException()); assertNull(rp.getValue()); assertEquals(0, rp.getValues().length); assertNull(rp.getValues(new Integer[2])[0]); }
@Test public void peekStateTimeAndSize() { ReplaySubject<Integer> rp = ReplaySubject.createWithTimeAndSize(1, TimeUnit.DAYS, Schedulers.computation(), 1); rp.onNext(1); assertEquals((Integer)1, rp.getValue()); assertEquals(1, rp.getValues()[0]); rp.onNext(2); assertEquals((Integer)2, rp.getValue()); assertEquals(2, rp.getValues()[0]); assertEquals((Integer)2, rp.getValues(new Integer[0])[0]); assertEquals((Integer)2, rp.getValues(new Integer[1])[0]); Integer[] a = new Integer[2]; assertEquals((Integer)2, rp.getValues(a)[0]); assertNull(a[1]); }