use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxAndroid by ReactiveX.
the class HandlerSchedulerTest method disposedWorkerReturnsDisposedDisposables.
@Test
public void disposedWorkerReturnsDisposedDisposables() {
Worker worker = scheduler.createWorker();
worker.dispose();
Disposable disposable = worker.schedule(new CountingRunnable());
assertTrue(disposable.isDisposed());
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxAndroid by ReactiveX.
the class HandlerSchedulerTest method throwingActionRoutedToRxJavaPlugins.
@Test
public void throwingActionRoutedToRxJavaPlugins() {
Consumer<? super Throwable> originalErrorHandler = RxJavaPlugins.getErrorHandler();
try {
final AtomicReference<Throwable> throwableRef = new AtomicReference<>();
RxJavaPlugins.setErrorHandler(new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwableRef.set(throwable);
}
});
Worker worker = scheduler.createWorker();
final NullPointerException npe = new NullPointerException();
Runnable action = new Runnable() {
@Override
public void run() {
throw npe;
}
};
worker.schedule(action);
runUiThreadTasks();
assertSame(npe, throwableRef.get());
} finally {
RxJavaPlugins.setErrorHandler(originalErrorHandler);
}
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxAndroid by ReactiveX.
the class HandlerSchedulerTest method workerScheduleOnceWithDelayDisposedDoesNotRun.
@Test
public void workerScheduleOnceWithDelayDisposedDoesNotRun() {
Worker worker = scheduler.createWorker();
CountingRunnable counter = new CountingRunnable();
Disposable disposable = worker.schedule(counter, 1, MINUTES);
idleMainLooper(30, SECONDS);
disposable.dispose();
idleMainLooper(30, SECONDS);
runUiThreadTasks();
assertEquals(0, counter.get());
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxAndroid by ReactiveX.
the class HandlerSchedulerTest method workerSchedulePeriodicallyDisposedDuringRunDoesNotReschedule.
@Test
@Ignore("Implementation delegated to default RxJava implementation")
public void workerSchedulePeriodicallyDisposedDuringRunDoesNotReschedule() {
Worker worker = scheduler.createWorker();
final AtomicReference<Disposable> disposableRef = new AtomicReference<>();
CountingRunnable counter = new CountingRunnable() {
@Override
public void run() {
super.run();
if (get() == 2) {
disposableRef.get().dispose();
}
}
};
Disposable disposable = worker.schedulePeriodically(counter, 1, 1, MINUTES);
disposableRef.set(disposable);
runUiThreadTasks();
assertEquals(0, counter.get());
idleMainLooper(1, MINUTES);
runUiThreadTasks();
assertEquals(1, counter.get());
idleMainLooper(1, MINUTES);
runUiThreadTasks();
assertEquals(2, counter.get());
// Dispose will have happened here during the last run() execution.
idleMainLooper(1, MINUTES);
runUiThreadTasks();
assertEquals(2, counter.get());
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxAndroid by ReactiveX.
the class HandlerSchedulerTest method workerTracksDisposedState.
@Test
public void workerTracksDisposedState() {
Worker worker = scheduler.createWorker();
assertFalse(worker.isDisposed());
worker.dispose();
assertTrue(worker.isDisposed());
}
Aggregations