@Test public void peekStateTimeAndSizeValueExpired() { TestScheduler scheduler = new TestScheduler(); ReplaySubject<Integer> rp = ReplaySubject.createWithTime(1, TimeUnit.DAYS, scheduler); assertNull(rp.getValue()); assertNull(rp.getValues(new Integer[2])[0]); rp.onNext(2); assertEquals((Integer)2, rp.getValue()); assertEquals(2, rp.getValues()[0]); scheduler.advanceTimeBy(2, TimeUnit.DAYS); assertEquals(null, 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]); }
@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 peekStateUnbounded() { ReplaySubject<Integer> rp = ReplaySubject.create(); rp.onNext(1); assertEquals((Integer)1, rp.getValue()); assertEquals(1, rp.getValues()[0]); }
@Test public void testReplaySubjectValueRelayBoundedEmptyIncomplete() { ReplaySubject<Integer> async = ReplaySubject.createWithSize(1); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertFalse(serial.hasComplete()); assertFalse(serial.hasThrowable()); assertNull(serial.getThrowable()); assertNull(async.getValue()); assertFalse(async.hasValue()); assertArrayEquals(new Object[] { }, async.getValues()); assertArrayEquals(new Integer[] { }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { null }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { null, 0 }, async.getValues(new Integer[] { 0, 0 })); }
@Test public void testReplaySubjectValueRelayEmptyIncomplete() { ReplaySubject<Integer> async = ReplaySubject.create(); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertFalse(serial.hasComplete()); assertFalse(serial.hasThrowable()); assertNull(serial.getThrowable()); assertNull(async.getValue()); assertFalse(async.hasValue()); assertArrayEquals(new Object[] { }, async.getValues()); assertArrayEquals(new Integer[] { }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { null }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { null, 0 }, async.getValues(new Integer[] { 0, 0 })); }
@Test public void testReplaySubjectBoundedEmpty() { ReplaySubject<Integer> async = ReplaySubject.createWithSize(1); async.onComplete(); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertTrue(serial.hasComplete()); assertFalse(serial.hasThrowable()); assertNull(serial.getThrowable()); assertNull(async.getValue()); assertFalse(async.hasValue()); assertArrayEquals(new Object[] { }, async.getValues()); assertArrayEquals(new Integer[] { }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { null }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { null, 0 }, async.getValues(new Integer[] { 0, 0 })); }
@Test public void testReplaySubjectEmpty() { ReplaySubject<Integer> async = ReplaySubject.create(); async.onComplete(); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertTrue(serial.hasComplete()); assertFalse(serial.hasThrowable()); assertNull(serial.getThrowable()); assertNull(async.getValue()); assertFalse(async.hasValue()); assertArrayEquals(new Object[] { }, async.getValues()); assertArrayEquals(new Integer[] { }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { null }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { null, 0 }, async.getValues(new Integer[] { 0, 0 })); }
@Test public void testReplaySubjectValueRelayIncomplete() { ReplaySubject<Integer> async = ReplaySubject.create(); async.onNext(1); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertFalse(serial.hasComplete()); assertFalse(serial.hasThrowable()); assertNull(serial.getThrowable()); assertEquals((Integer)1, async.getValue()); assertTrue(async.hasValue()); assertArrayEquals(new Object[] { 1 }, async.getValues()); assertArrayEquals(new Integer[] { 1 }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { 1 }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { 1, null }, async.getValues(new Integer[] { 0, 0 })); }
@Test public void testReplaySubjectValueRelayBoundedIncomplete() { ReplaySubject<Integer> async = ReplaySubject.createWithSize(1); async.onNext(0); async.onNext(1); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertFalse(serial.hasComplete()); assertFalse(serial.hasThrowable()); assertNull(serial.getThrowable()); assertEquals((Integer)1, async.getValue()); assertTrue(async.hasValue()); assertArrayEquals(new Object[] { 1 }, async.getValues()); assertArrayEquals(new Integer[] { 1 }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { 1 }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { 1, null }, async.getValues(new Integer[] { 0, 0 })); }
@Test public void testReplaySubjectError() { ReplaySubject<Integer> async = ReplaySubject.create(); TestException te = new TestException(); async.onError(te); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertFalse(serial.hasComplete()); assertTrue(serial.hasThrowable()); assertSame(te, serial.getThrowable()); assertNull(async.getValue()); assertFalse(async.hasValue()); assertArrayEquals(new Object[] { }, async.getValues()); assertArrayEquals(new Integer[] { }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { null }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { null, 0 }, async.getValues(new Integer[] { 0, 0 })); }
@Test public void testReplaySubjectValueRelay() { ReplaySubject<Integer> async = ReplaySubject.create(); async.onNext(1); async.onComplete(); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertTrue(serial.hasComplete()); assertFalse(serial.hasThrowable()); assertNull(serial.getThrowable()); assertEquals((Integer)1, async.getValue()); assertTrue(async.hasValue()); assertArrayEquals(new Object[] { 1 }, async.getValues()); assertArrayEquals(new Integer[] { 1 }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { 1 }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { 1, null }, async.getValues(new Integer[] { 0, 0 })); }
@Test public void testReplaySubjectBoundedError() { ReplaySubject<Integer> async = ReplaySubject.createWithSize(1); TestException te = new TestException(); async.onError(te); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertFalse(serial.hasComplete()); assertTrue(serial.hasThrowable()); assertSame(te, serial.getThrowable()); assertNull(async.getValue()); assertFalse(async.hasValue()); assertArrayEquals(new Object[] { }, async.getValues()); assertArrayEquals(new Integer[] { }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { null }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { null, 0 }, async.getValues(new Integer[] { 0, 0 })); }
@Test public void testReplaySubjectValueRelayBounded() { ReplaySubject<Integer> async = ReplaySubject.createWithSize(1); async.onNext(0); async.onNext(1); async.onComplete(); Subject<Integer> serial = async.toSerialized(); assertFalse(serial.hasObservers()); assertTrue(serial.hasComplete()); assertFalse(serial.hasThrowable()); assertNull(serial.getThrowable()); assertEquals((Integer)1, async.getValue()); assertTrue(async.hasValue()); assertArrayEquals(new Object[] { 1 }, async.getValues()); assertArrayEquals(new Integer[] { 1 }, async.getValues(new Integer[0])); assertArrayEquals(new Integer[] { 1 }, async.getValues(new Integer[] { 0 })); assertArrayEquals(new Integer[] { 1, null }, async.getValues(new Integer[] { 0, 0 })); }