use of io.reactivex.rxjava3.core.Observable in project RxJava by ReactiveX.
the class ObservableWindowWithTimeTest method overlappingOnError.
@Test
@SuppressUndeliverable
public void overlappingOnError() {
TestScheduler scheduler = new TestScheduler();
PublishSubject<Integer> ps = PublishSubject.create();
TestObserver<Integer> to = ps.window(2, 1, TimeUnit.SECONDS, scheduler).flatMap(Functions.<Observable<Integer>>identity()).test();
ps.onError(new TestException());
to.assertFailure(TestException.class);
}
use of io.reactivex.rxjava3.core.Observable in project RxJava by ReactiveX.
the class ObservableWindowWithTimeTest method skipTimeAndSizeBoundNoInterruptWindowOutputOnError.
@Test
@SuppressUndeliverable
public void skipTimeAndSizeBoundNoInterruptWindowOutputOnError() throws Exception {
final AtomicBoolean isInterrupted = new AtomicBoolean();
final PublishSubject<Integer> ps = PublishSubject.create();
final CountDownLatch doOnNextDone = new CountDownLatch(1);
final CountDownLatch secondWindowProcessing = new CountDownLatch(1);
ps.window(90, 100, TimeUnit.MILLISECONDS).doOnNext(new Consumer<Observable<Integer>>() {
int count;
@Override
public void accept(Observable<Integer> v) throws Exception {
System.out.println(Thread.currentThread());
if (count++ == 1) {
secondWindowProcessing.countDown();
try {
Thread.sleep(200);
isInterrupted.set(Thread.interrupted());
} catch (InterruptedException ex) {
isInterrupted.set(true);
}
doOnNextDone.countDown();
}
}
}).test();
ps.onNext(1);
assertTrue(secondWindowProcessing.await(5, TimeUnit.SECONDS));
ps.onError(new TestException());
assertTrue(doOnNextDone.await(5, TimeUnit.SECONDS));
assertFalse("The doOnNext got interrupted!", isInterrupted.get());
}
use of io.reactivex.rxjava3.core.Observable in project RxJava by ReactiveX.
the class ObservableWindowWithTimeTest method skipOnError.
@Test
@SuppressUndeliverable
public void skipOnError() {
TestScheduler scheduler = new TestScheduler();
PublishSubject<Integer> ps = PublishSubject.create();
TestObserver<Integer> to = ps.window(1, 2, TimeUnit.SECONDS, scheduler).flatMap(Functions.<Observable<Integer>>identity()).test();
ps.onError(new TestException());
to.assertFailure(TestException.class);
}
use of io.reactivex.rxjava3.core.Observable in project RxJava by ReactiveX.
the class ObservableToFutureTest method cancellationDuringFutureGet.
@Test
public void cancellationDuringFutureGet() throws Exception {
Future<Object> future = new Future<Object>() {
private AtomicBoolean isCancelled = new AtomicBoolean(false);
private AtomicBoolean isDone = new AtomicBoolean(false);
@Override
public boolean cancel(boolean mayInterruptIfRunning) {
isCancelled.compareAndSet(false, true);
return true;
}
@Override
public boolean isCancelled() {
return isCancelled.get();
}
@Override
public boolean isDone() {
return isCancelled() || isDone.get();
}
@Override
public Object get() throws InterruptedException, ExecutionException {
Thread.sleep(500);
isDone.compareAndSet(false, true);
return "foo";
}
@Override
public Object get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
return get();
}
};
Observer<Object> o = TestHelper.mockObserver();
TestObserver<Object> to = new TestObserver<>(o);
Observable<Object> futureObservable = Observable.fromFuture(future);
futureObservable.subscribeOn(Schedulers.computation()).subscribe(to);
Thread.sleep(100);
to.dispose();
to.assertNoErrors();
to.assertNoValues();
to.assertNotComplete();
}
use of io.reactivex.rxjava3.core.Observable in project RxJava by ReactiveX.
the class ObservableWindowWithStartEndObservableTest method endError.
@Test
@SuppressUndeliverable
public void endError() {
PublishSubject<Integer> source = PublishSubject.create();
PublishSubject<Integer> start = PublishSubject.create();
final PublishSubject<Integer> end = PublishSubject.create();
TestObserver<Integer> to = source.window(start, new Function<Integer, ObservableSource<Integer>>() {
@Override
public ObservableSource<Integer> apply(Integer v) throws Exception {
return end;
}
}).flatMap(Functions.<Observable<Integer>>identity()).test();
start.onNext(1);
end.onError(new TestException());
to.assertFailure(TestException.class);
assertFalse("Source has observers!", source.hasObservers());
assertFalse("Start has observers!", start.hasObservers());
assertFalse("End has observers!", end.hasObservers());
}
Aggregations