@Test public void directScheduleOnceWithDelayDisposedDoesNotRun() { CountingRunnable counter = new CountingRunnable(); Disposable disposable = scheduler.scheduleDirect(counter, 1, MINUTES); idleMainLooper(30, SECONDS); disposable.dispose(); idleMainLooper(30, SECONDS); runUiThreadTasks(); assertEquals(0, counter.get()); }
@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()); }
@Test @Ignore("Implementation delegated to default RxJava implementation") public void directSchedulePeriodicallyDisposedDoesNotRun() { CountingRunnable counter = new CountingRunnable(); Disposable disposable = scheduler.schedulePeriodicallyDirect(counter, 1, 1, MINUTES); runUiThreadTasks(); assertEquals(0, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(1, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(2, counter.get()); disposable.dispose(); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(2, counter.get()); }
@Test @Ignore("Implementation delegated to default RxJava implementation") public void directSchedulePeriodicallyDisposedDuringRunDoesNotReschedule() { final AtomicReference<Disposable> disposableRef = new AtomicReference<>(); CountingRunnable counter = new CountingRunnable() { @Override public void run() { super.run(); if (get() == 2) { disposableRef.get().dispose(); } } }; Disposable disposable = scheduler.schedulePeriodicallyDirect(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()); }
@Test @Ignore("Implementation delegated to default RxJava implementation") public void directSchedulePeriodicallyReschedulesItself() { CountingRunnable counter = new CountingRunnable(); scheduler.schedulePeriodicallyDirect(counter, 1, 1, MINUTES); runUiThreadTasks(); assertEquals(0, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(1, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(2, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(3, counter.get()); }
@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()); }
@Test @Ignore("Implementation delegated to default RxJava implementation") public void workerSchedulePeriodicallyDisposedDoesNotRun() { Worker worker = scheduler.createWorker(); CountingRunnable counter = new CountingRunnable(); Disposable disposable = worker.schedulePeriodically(counter, 1, 1, MINUTES); runUiThreadTasks(); assertEquals(0, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(1, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(2, counter.get()); disposable.dispose(); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(2, counter.get()); }
@Test @Ignore("Implementation delegated to default RxJava implementation") public void workerSchedulePeriodicallyReschedulesItself() { Worker worker = scheduler.createWorker(); CountingRunnable counter = new CountingRunnable(); worker.schedulePeriodically(counter, 1, 1, MINUTES); runUiThreadTasks(); assertEquals(0, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(1, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(2, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(3, counter.get()); }
@Test @Ignore("Implementation delegated to default RxJava implementation") public void directSchedulePeriodicallyUsesHookOnce() { final CountingRunnable newCounter = new CountingRunnable(); final AtomicReference<Runnable> runnableRef = new AtomicReference<>(); RxJavaPlugins.setScheduleHandler(new Function<Runnable, Runnable>() { @Override public Runnable apply(Runnable runnable) { runnableRef.set(runnable); return newCounter; } }); CountingRunnable counter = new CountingRunnable(); scheduler.schedulePeriodicallyDirect(counter, 1, 1, MINUTES); // Verify our action was passed to the schedulers hook. assertSame(counter, runnableRef.get()); runnableRef.set(null); idleMainLooper(1, MINUTES); runUiThreadTasks(); // Verify the scheduled action was the one returned from the hook. assertEquals(1, newCounter.get()); assertEquals(0, counter.get()); // Ensure the hook was not called again when the runnable re-scheduled itself. assertNull(runnableRef.get()); }
@Test @Ignore("Implementation delegated to default RxJava implementation") public void directSchedulePeriodicallyThrowingDoesNotReschedule() { CountingRunnable counter = new CountingRunnable() { @Override public void run() { super.run(); if (get() == 2) { throw new RuntimeException("Broken!"); } } }; scheduler.schedulePeriodicallyDirect(counter, 1, 1, MINUTES); runUiThreadTasks(); assertEquals(0, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(1, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(2, counter.get()); // Exception will have happened here during the last run() execution. idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(2, counter.get()); }
@Test public void directScheduleOnceWithDelayUsesHook() { final CountingRunnable newCounter = new CountingRunnable(); final AtomicReference<Runnable> runnableRef = new AtomicReference<>(); RxJavaPlugins.setScheduleHandler(new Function<Runnable, Runnable>() { @Override public Runnable apply(Runnable runnable) { runnableRef.set(runnable); return newCounter; } }); CountingRunnable counter = new CountingRunnable(); scheduler.scheduleDirect(counter, 1, MINUTES); // Verify our runnable was passed to the schedulers hook. assertSame(counter, runnableRef.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); // Verify the scheduled runnable was the one returned from the hook. assertEquals(1, newCounter.get()); assertEquals(0, counter.get()); }
@Test @Ignore("Implementation delegated to default RxJava implementation") public void workerSchedulePeriodicallyUsesHookOnce() { Worker worker = scheduler.createWorker(); final CountingRunnable newCounter = new CountingRunnable(); final AtomicReference<Runnable> runnableRef = new AtomicReference<>(); RxJavaPlugins.setScheduleHandler(new Function<Runnable, Runnable>() { @Override public Runnable apply(Runnable runnable) { runnableRef.set(runnable); return newCounter; } }); CountingRunnable counter = new CountingRunnable(); worker.schedulePeriodically(counter, 1, 1, MINUTES); // Verify our action was passed to the schedulers hook. assertSame(counter, runnableRef.get()); runnableRef.set(null); idleMainLooper(1, MINUTES); runUiThreadTasks(); // Verify the scheduled action was the one returned from the hook. assertEquals(1, newCounter.get()); assertEquals(0, counter.get()); // Ensure the hook was not called again when the runnable re-scheduled itself. assertNull(runnableRef.get()); }
@Test @Ignore("Implementation delegated to default RxJava implementation") public void workerSchedulePeriodicallyThrowingDoesNotReschedule() { Worker worker = scheduler.createWorker(); CountingRunnable counter = new CountingRunnable() { @Override public void run() { super.run(); if (get() == 2) { throw new RuntimeException("Broken!"); } } }; worker.schedulePeriodically(counter, 1, 1, MINUTES); runUiThreadTasks(); assertEquals(0, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(1, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(2, counter.get()); // Exception will have happened here during the last run() execution. idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(2, counter.get()); }
@Test public void workerScheduleOnceWithDelayUsesHook() { final CountingRunnable newCounter = new CountingRunnable(); final AtomicReference<Runnable> runnableRef = new AtomicReference<>(); RxJavaPlugins.setScheduleHandler(new Function<Runnable, Runnable>() { @Override public Runnable apply(Runnable runnable) { runnableRef.set(runnable); return newCounter; } }); Worker worker = scheduler.createWorker(); CountingRunnable counter = new CountingRunnable(); worker.schedule(counter, 1, MINUTES); // Verify our runnable was passed to the schedulers hook. assertSame(counter, runnableRef.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); // Verify the scheduled runnable was the one returned from the hook. assertEquals(1, newCounter.get()); assertEquals(0, counter.get()); }
@Test public void directScheduleOnceWithDelayPostsWithDelay() { CountingRunnable counter = new CountingRunnable(); scheduler.scheduleDirect(counter, 1, MINUTES); runUiThreadTasks(); assertEquals(0, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(1, counter.get()); }
@Test public void workerScheduleOnceWithDelayPostsWithDelay() { Worker worker = scheduler.createWorker(); CountingRunnable counter = new CountingRunnable(); worker.schedule(counter, 1, MINUTES); runUiThreadTasks(); assertEquals(0, counter.get()); idleMainLooper(1, MINUTES); runUiThreadTasks(); assertEquals(1, counter.get()); }