@Test public void testSizeAndHasAnyValueSizeBounded() { ReplaySubject<Object> rs = ReplaySubject.createWithSize(1); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); for (int i = 0; i < 1000; i++) { rs.onNext(i); assertEquals(1, rs.size()); assertTrue(rs.hasValue()); } rs.onComplete(); assertEquals(1, rs.size()); assertTrue(rs.hasValue()); }
@Test public void testSizeAndHasAnyValueEffectivelyUnbounded() { ReplaySubject<Object> rs = ReplaySubject.createUnbounded(); 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 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()); }
rs.size(); // can't use value so just call to detect hangs
@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 testSizeAndHasAnyValueEffectivelyUnboundedError() { ReplaySubject<Object> rs = ReplaySubject.createUnbounded(); 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 testSizeAndHasAnyValueTimeBounded() { TestScheduler to = new TestScheduler(); ReplaySubject<Object> rs = ReplaySubject.createWithTime(1, TimeUnit.SECONDS, to); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); for (int i = 0; i < 1000; i++) { rs.onNext(i); assertEquals(1, rs.size()); assertTrue(rs.hasValue()); to.advanceTimeBy(2, TimeUnit.SECONDS); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); } rs.onComplete(); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); }
rs.size(); // can't use value so just call to detect hangs
@Test public void testSizeAndHasAnyValueEffectivelyUnboundedEmptyCompleted() { ReplaySubject<Object> rs = ReplaySubject.createUnbounded(); rs.onComplete(); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); }
@Test public void testSizeAndHasAnyValueUnboundedEmptyCompleted() { ReplaySubject<Object> rs = ReplaySubject.create(); rs.onComplete(); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); }
int size = rs.size(); boolean hasAny = rs.hasValue(); Object[] values = rs.getValues();
int size = rs.size(); boolean hasAny = rs.hasValue(); Object[] values = rs.getValues();
@Test public void testSizeAndHasAnyValueUnboundedEmptyError() { ReplaySubject<Object> rs = ReplaySubject.create(); rs.onError(new TestException()); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); }
@Test public void testSizeAndHasAnyValueEffectivelyUnboundedEmptyError() { ReplaySubject<Object> rs = ReplaySubject.createUnbounded(); rs.onError(new TestException()); assertEquals(0, rs.size()); assertFalse(rs.hasValue()); }