ReplayProcessor extends FlowableProcessor<T> { @CheckReturnValue @NonNull public static <T> ReplayProcessor<T> createWithTimeAndSize(long maxAge, TimeUnit unit, Scheduler scheduler, int maxSize) { return new ReplayProcessor<T>(new SizeAndTimeBoundReplayBuffer<T>(maxSize, maxAge, unit, scheduler)); } @SuppressWarnings("unchecked")  ReplayProcessor(ReplayBuffer<T> buffer); @CheckReturnValue @NonNull static ReplayProcessor<T> create(); @CheckReturnValue @NonNull static ReplayProcessor<T> create(int capacityHint); @CheckReturnValue @NonNull static ReplayProcessor<T> createWithSize(int maxSize); @CheckReturnValue @NonNull static ReplayProcessor<T> createWithTime(long maxAge, TimeUnit unit, Scheduler scheduler); @CheckReturnValue @NonNull static ReplayProcessor<T> createWithTimeAndSize(long maxAge, TimeUnit unit, Scheduler scheduler, int maxSize); @Override void onSubscribe(Subscription s); @Override void onNext(T t); @SuppressWarnings("unchecked") @Override void onError(Throwable t); @SuppressWarnings("unchecked") @Override void onComplete(); @Override boolean hasSubscribers(); @Override @Nullable Throwable getThrowable(); @Experimental void cleanupBuffer(); T getValue(); Object[] getValues(); T[] getValues(T[] array); @Override boolean hasComplete(); @Override boolean hasThrowable(); boolean hasValue();  }
@Test public void createWithTimeAndSizeInvalidCapacity() { try { ReplayProcessor.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()); } }