/** @deprecated Use {@link #idleMainLooper(long, TimeUnit)}. */ @Deprecated public static void idleMainLooper(long interval) { idleMainLooper(interval, TimeUnit.MILLISECONDS); }
private static void idleMainLooper(long amount, TimeUnit unit) { // TODO delete this when https://github.com/robolectric/robolectric/pull/2592 is released. ShadowLooper.idleMainLooper(unit.toMillis(amount)); } }
@Test public void testPostAndIdleMainLooper() throws Exception { new Handler().post(scratchRunnable); ShadowLooper.idleMainLooper(); assertThat(scratchRunnable.wasRun).isTrue(); }
@Test public void computeScrollOffsetShouldCalculateWhetherScrollIsFinished() throws Exception { assertThat(scroller.computeScrollOffset()).isFalse(); scroller.startScroll(0, 0, 12, 36, 1000); assertThat(scroller.computeScrollOffset()).isTrue(); ShadowLooper.idleMainLooper(500); assertThat(scroller.computeScrollOffset()).isTrue(); ShadowLooper.idleMainLooper(500); assertThat(scroller.computeScrollOffset()).isTrue(); assertThat(scroller.computeScrollOffset()).isFalse(); } }
@Test public void postDelayedThenIdleMainLooper_shouldNotRunRunnable() throws Exception { new Handler().postDelayed(scratchRunnable, 1); ShadowLooper.idleMainLooper(); assertThat(scratchRunnable.wasRun).isFalse(); }
private static void flush(JobService jobService) throws Exception { flushExecutorService(jobService.backgroundExecutor); ShadowLooper.idleMainLooper(); }
@Test public void idleMainLooper_executesScheduledTasks() { final boolean[] wasRun = new boolean[]{false}; new Handler().postDelayed(new Runnable() { @Override public void run() { wasRun[0] = true; } }, 2000); assertFalse(wasRun[0]); ShadowLooper.idleMainLooper(1999); assertFalse(wasRun[0]); ShadowLooper.idleMainLooper(1); assertTrue(wasRun[0]); }
@Test public void sendEmptyMessageDelayed_sendsMessageAtCorrectTime() { ShadowLooper.pauseMainLooper(); Handler handler = new Handler(); handler.sendEmptyMessageDelayed(123, 500); assertThat(handler.hasMessages(123)).isTrue(); ShadowLooper.idleMainLooper(100); assertThat(handler.hasMessages(123)).isTrue(); ShadowLooper.idleMainLooper(400); assertThat(handler.hasMessages(123)).isFalse(); }
@Test public void idleMainLooper_executesScheduledTasks() { final boolean[] wasRun = new boolean[]{false}; new Handler().postDelayed(new Runnable() { @Override public void run() { wasRun[0] = true; } }, 2000); assertThat(wasRun[0]).named("first").isFalse(); ShadowLooper.idleMainLooper(1999); assertThat(wasRun[0]).named("second").isFalse(); ShadowLooper.idleMainLooper(1); assertThat(wasRun[0]).named("last").isTrue(); }
@Test public void sendMessageAtTime_sendsMessageAtCorrectTime() { ShadowLooper.pauseMainLooper(); Handler handler = new Handler(); Message message = handler.obtainMessage(123); handler.sendMessageAtTime(message, 500); assertThat(handler.hasMessages(123)).isTrue(); ShadowLooper.idleMainLooper(100); assertThat(handler.hasMessages(123)).isTrue(); ShadowLooper.idleMainLooper(400); assertThat(handler.hasMessages(123)).isFalse(); }
@Test public void shouldIgnoreSetSelectionCallsWithInvalidPosition() { final List<String> transcript = new ArrayList<>(); adapterView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { transcript.add("onItemSelected fired"); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); ShadowLooper.idleMainLooper(); assertThat(transcript).isEmpty(); adapterView.setSelection(AdapterView.INVALID_POSITION); ShadowLooper.idleMainLooper(); assertThat(transcript).isEmpty(); }
@Test public void computeScrollOffsetShouldCalculateWhetherScrollIsFinished() { assertThat(overScroller.computeScrollOffset()).isFalse(); overScroller.startScroll(0, 0, 100, 200, 1000); assertThat(overScroller.computeScrollOffset()).isTrue(); ShadowLooper.idleMainLooper(500); assertThat(overScroller.computeScrollOffset()).isTrue(); ShadowLooper.idleMainLooper(500); assertThat(overScroller.computeScrollOffset()).isTrue(); assertThat(overScroller.computeScrollOffset()).isFalse(); }
@Test public void sendEmptyMessage_addMessageToQueue() { ShadowLooper.pauseMainLooper(); Handler handler = new Handler(); assertThat(handler.hasMessages(123)).isFalse(); handler.sendEmptyMessage(123); assertThat(handler.hasMessages(456)).isFalse(); assertThat(handler.hasMessages(123)).isTrue(); ShadowLooper.idleMainLooper(0); assertThat(handler.hasMessages(123)).isFalse(); }
@Test public void testSetEmptyView_ShouldHideEmptyViewWhenAdapterGetsNewItem() throws Exception { ShadowCountingAdapter adapter = new ShadowCountingAdapter(0); adapterView.setAdapter(adapter); View emptyView = new View(adapterView.getContext()); adapterView.setEmptyView(emptyView); assertThat(adapterView.getVisibility()).isEqualTo(View.GONE); assertThat(emptyView.getVisibility()).isEqualTo(View.VISIBLE); adapter.setCount(1); ShadowLooper.idleMainLooper(); assertThat(adapterView.getVisibility()).isEqualTo(View.VISIBLE); assertThat(emptyView.getVisibility()).isEqualTo(View.GONE); }
@Test public void testSetEmptyView_ShouldHideAdapterViewWhenAdapterBecomesEmpty() throws Exception { ShadowCountingAdapter adapter = new ShadowCountingAdapter(1); adapterView.setAdapter(adapter); View emptyView = new View(adapterView.getContext()); adapterView.setEmptyView(emptyView); assertThat(adapterView.getVisibility()).isEqualTo(View.VISIBLE); assertThat(emptyView.getVisibility()).isEqualTo(View.GONE); adapter.setCount(0); ShadowLooper.idleMainLooper(); assertThat(adapterView.getVisibility()).isEqualTo(View.GONE); assertThat(emptyView.getVisibility()).isEqualTo(View.VISIBLE); } }
@Test public void abortAnimationShouldMoveToFinalPositionImmediately() { overScroller.startScroll(0, 0, 100, 200, 1000); ShadowLooper.idleMainLooper(500); overScroller.abortAnimation(); assertThat(overScroller.getCurrX()).isEqualTo(100); assertThat(overScroller.getCurrY()).isEqualTo(200); assertThat(overScroller.timePassed()).isEqualTo(500); assertThat(overScroller.isFinished()).isTrue(); }
@Test public void shouldUpdatePerMillisecondObservable() { final long expectedDelayedTime = scheduler.getCurrentTime() + FILTER_TIME; updatable.addToObservable(perMillisecondObservable(FILTER_TIME, updateDispatcher)); updateDispatcher.update(); idleMainLooper(FILTER_TIME); assertThat(updatable, wasUpdated()); assertThat(scheduler.getCurrentTime(), greaterThanOrEqualTo(expectedDelayedTime)); }
@Test public void forceFinishedShouldFinishWithoutMovingFurther() { overScroller.startScroll(0, 0, 100, 200, 1000); ShadowLooper.idleMainLooper(500); overScroller.forceFinished(true); assertThat(overScroller.getCurrX()).isEqualTo(50); assertThat(overScroller.getCurrY()).isEqualTo(100); assertThat(overScroller.timePassed()).isEqualTo(500); assertThat(overScroller.isFinished()).isTrue(); } }
@Test public void shouldUpdateCompositeOfSinglePerMillisecondObservable() { final long expectedDelayedTime = scheduler.getCurrentTime() + FILTER_TIME; updatable.addToObservable(compositeObservable(perMillisecondObservable( FILTER_TIME, updateDispatcher))); updateDispatcher.update(); idleMainLooper(FILTER_TIME); assertThat(updatable, wasUpdated()); assertThat(scheduler.getCurrentTime(), greaterThanOrEqualTo(expectedDelayedTime)); }
@Test public void shouldUpdateCompositeOfPerMillisecondObservable() { final long expectedDelayedTime = scheduler.getCurrentTime() + FILTER_TIME; updatable.addToObservable(compositeObservable(perMillisecondObservable( FILTER_TIME, updateDispatcher), updateDispatcher())); updateDispatcher.update(); idleMainLooper(FILTER_TIME); assertThat(updatable, wasUpdated()); assertThat(scheduler.getCurrentTime(), greaterThanOrEqualTo(expectedDelayedTime)); }