@Override public void run() { try { start.await(); } catch (Exception e1) { e1.printStackTrace(); } rs.onNext(1); } });
@Override public void run() { try { start.await(); } catch (Exception e1) { e1.printStackTrace(); } // System.out.println("> " + j); rs.onNext(1); } });
@Override public void onNext(Integer t) { if (t == 1) { rp.onNext(2); } super.onNext(t); } };
@Override public void run() { subject.onNext("value"); subject.onComplete(); } });
@Override public void run() { subject.onNext("value"); subject.onComplete(); } });
@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 noHeadRetentionCompleteSize() { ReplaySubject<Integer> source = ReplaySubject.createWithSize(1); source.onNext(1); source.onNext(2); source.onComplete(); SizeBoundReplayBuffer<Integer> buf = (SizeBoundReplayBuffer<Integer>)source.buffer; assertNull(buf.head.value); Object o = buf.head; source.cleanupBuffer(); assertSame(o, buf.head); }
@Test public void noHeadRetentionCompleteTime() { ReplaySubject<Integer> source = ReplaySubject.createWithTime(1, TimeUnit.MINUTES, Schedulers.computation()); source.onNext(1); source.onNext(2); source.onComplete(); SizeAndTimeBoundReplayBuffer<Integer> buf = (SizeAndTimeBoundReplayBuffer<Integer>)source.buffer; assertNull(buf.head.value); Object o = buf.head; source.cleanupBuffer(); assertSame(o, buf.head); }
@Test public void noHeadRetentionSize() { ReplaySubject<Integer> source = ReplaySubject.createWithSize(1); source.onNext(1); source.onNext(2); SizeBoundReplayBuffer<Integer> buf = (SizeBoundReplayBuffer<Integer>)source.buffer; assertNotNull(buf.head.value); source.cleanupBuffer(); assertNull(buf.head.value); Object o = buf.head; source.cleanupBuffer(); assertSame(o, buf.head); }
@Test public void testGetValuesUnbounded() { ReplaySubject<Object> rs = ReplaySubject.createUnbounded(); 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 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 peekStateUnbounded() { ReplaySubject<Integer> rp = ReplaySubject.create(); rp.onNext(1); assertEquals((Integer)1, rp.getValue()); assertEquals(1, rp.getValues()[0]); }
@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 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 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 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]); }