@Override protected Subject<Integer> create() { return ReplaySubject.create(); }
@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)); }
public void createInvalidCapacity() { try { ReplaySubject.create(-99); fail("Didn't throw IllegalArgumentException"); } catch (IllegalArgumentException ex) { assertEquals("capacityHint > 0 required but it was -99", ex.getMessage()); } }
@Test public void subscribeRace() { for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { final ReplaySubject<Integer> rp = ReplaySubject.create(); Runnable r1 = new Runnable() { @Override public void run() { rp.test(); } }; TestHelper.race(r1, r1); } }
@Test public void testCompletedAfterError() { ReplaySubject<String> subject = ReplaySubject.create(); Observer<String> observer = TestHelper.mockObserver(); subject.onNext("one"); subject.onError(testException); subject.onNext("two"); subject.onComplete(); subject.onError(new RuntimeException()); subject.subscribe(observer); verify(observer).onSubscribe((Disposable)notNull()); verify(observer, times(1)).onNext("one"); verify(observer, times(1)).onError(testException); verifyNoMoreInteractions(observer); }
@Test public void testErrorThrownIssue1685() { Subject<Object> subject = ReplaySubject.create(); Observable.error(new RuntimeException("oops")) .materialize() .delay(1, TimeUnit.SECONDS) .dematerialize(Functions.<Notification<Object>>identity()) .subscribe(subject); subject.subscribe(); subject.materialize().blockingFirst(); System.out.println("Done"); }
@Test public void testSubscriptionLeak() { ReplaySubject<Object> subject = ReplaySubject.create(); Disposable d = subject.subscribe(); assertEquals(1, subject.observerCount()); d.dispose(); assertEquals(0, subject.observerCount()); }
@Test public void testGetValues() { ReplaySubject<Object> rs = ReplaySubject.create(); Object[] expected = new Object[10]; for (int i = 0; i < expected.length; i++) { expected[i] = i; rs.onNext(i); assertArrayEquals(Arrays.copyOf(expected, i + 1), rs.getValues()); } rs.onComplete(); assertArrayEquals(expected, rs.getValues()); }
@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 subscribeAfterDone() { ReplaySubject<Integer> rp = ReplaySubject.create(); rp.onComplete(); Disposable bs = Disposables.empty(); rp.onSubscribe(bs); assertTrue(bs.isDisposed()); }
@Test public void peekStateUnbounded() { ReplaySubject<Integer> rp = ReplaySubject.create(); rp.onNext(1); assertEquals((Integer)1, rp.getValue()); assertEquals(1, rp.getValues()[0]); }
@Test public void testSizeAndHasAnyValueUnboundedEmptyCompleted() { ReplaySubject<Object> rs = ReplaySubject.create(); rs.onComplete(); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); }
@Test public void testSizeAndHasAnyValueUnboundedEmptyError() { ReplaySubject<Object> rs = ReplaySubject.create(); rs.onError(new TestException()); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); }
@Test public void cancelUpfront() { ReplaySubject<Integer> rp = ReplaySubject.create(); rp.test(); rp.test(); TestObserver<Integer> to = rp.test(true); assertEquals(2, rp.observerCount()); to.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 testCurrentStateMethodsEmpty() { ReplaySubject<Object> as = ReplaySubject.create(); assertFalse(as.hasThrowable()); assertFalse(as.hasComplete()); assertNull(as.getThrowable()); as.onComplete(); assertFalse(as.hasThrowable()); assertTrue(as.hasComplete()); assertNull(as.getThrowable()); }
@Test public void testCurrentStateMethodsError() { ReplaySubject<Object> as = ReplaySubject.create(); assertFalse(as.hasThrowable()); assertFalse(as.hasComplete()); assertNull(as.getThrowable()); as.onError(new TestException()); assertTrue(as.hasThrowable()); assertFalse(as.hasComplete()); assertTrue(as.getThrowable() instanceof TestException); }
@Test public void testSizeAndHasAnyValueUnbounded() { ReplaySubject<Object> rs = ReplaySubject.create(); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); rs.onNext(1); assertEquals(1, rs.size()); assertTrue(rs.hasValue()); rs.onNext(1); assertEquals(2, rs.size()); assertTrue(rs.hasValue()); rs.onComplete(); assertEquals(2, rs.size()); assertTrue(rs.hasValue()); }
@Test public void testSizeAndHasAnyValueUnboundedError() { ReplaySubject<Object> rs = ReplaySubject.create(); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); rs.onNext(1); assertEquals(1, rs.size()); assertTrue(rs.hasValue()); rs.onNext(1); assertEquals(2, rs.size()); assertTrue(rs.hasValue()); rs.onError(new TestException()); assertEquals(2, rs.size()); assertTrue(rs.hasValue()); }
@Test public void testCurrentStateMethodsNormal() { ReplaySubject<Object> as = ReplaySubject.create(); assertFalse(as.hasThrowable()); assertFalse(as.hasComplete()); assertNull(as.getThrowable()); as.onNext(1); assertFalse(as.hasThrowable()); assertFalse(as.hasComplete()); assertNull(as.getThrowable()); as.onComplete(); assertFalse(as.hasThrowable()); assertTrue(as.hasComplete()); assertNull(as.getThrowable()); }