@Test public void onUnsubscribeRunsSyncOnMainThread() { ShadowLooper.pauseMainLooper(); final AtomicBoolean called = new AtomicBoolean(); new MainThreadDisposable() { @Override protected void onDispose() { called.set(true); } }.dispose(); assertTrue(called.get()); }
@Before public void setUp() { RxJavaPlugins.reset(); pauseMainLooper(); // Take manual control of looper task queue. }
@Test public void removeMessages_takesMessageOutOfQueue() { ShadowLooper.pauseMainLooper(); Handler handler = new Handler(); handler.sendEmptyMessageDelayed(123, 500); handler.removeMessages(123); assertThat(handler.hasMessages(123)).isFalse(); }
@Test public void testSendToTarget() throws Exception { ShadowLooper.pauseMainLooper(); Handler h = new Handler(); Message.obtain(h, 123).sendToTarget(); assertThat(h.hasMessages(123)).isTrue(); }
@Test public void testSendToTarget() { ShadowLooper.pauseMainLooper(); Object testObject = new Object(); Handler handler = new Handler(); Message message = handler.obtainMessage(123, testObject); assertThat(handler).isEqualTo(message.getTarget()); message.sendToTarget(); assertTrue(handler.hasMessages(123, testObject)); }
@Test @Config(minSdk = LOLLIPOP) public void testIsInUse() { ShadowLooper.pauseMainLooper(); Handler h = new Handler(); Message msg = Message.obtain(h, 123); ShadowMessage sMsg = shadowOf(msg); assertThat(sMsg.isInUse()).isFalse(); msg.sendToTarget(); assertThat(sMsg.isInUse()).isTrue(); }
@Test public void testHasMessagesWithWhatAndObject() { ShadowLooper.pauseMainLooper(); Object testObject = new Object(); Handler handler = new Handler(); Message message = handler.obtainMessage(123, testObject); assertFalse(handler.hasMessages(123, testObject)); handler.sendMessage(message); assertTrue(handler.hasMessages(123, testObject)); }
@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 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 shouldPostActionsToTheMessageQueue() throws Exception { ShadowLooper.pauseMainLooper(); TestRunnable runnable = new TestRunnable(); view.post(runnable); assertFalse(runnable.wasRun); ShadowLooper.unPauseMainLooper(); assertTrue(runnable.wasRun); }
private void recycle_shouldRemoveMessageFromScheduler() { ShadowLooper.pauseMainLooper(); Handler h = new Handler(); Message msg = Message.obtain(h, 234); msg.sendToTarget(); Scheduler scheduler = Robolectric.getForegroundThreadScheduler(); assertThat(scheduler.size()).named("before recycle").isEqualTo(1); shadowOf(msg).recycleUnchecked(); assertThat(scheduler.size()).named("after recycle").isEqualTo(0); }
@Test public void testMessengerSend() throws Exception { Handler handler = new Handler(); Messenger messenger = new Messenger(handler); ShadowLooper.pauseMainLooper(); Message msg = Message.obtain(null, 123); messenger.send(msg); assertThat(handler.hasMessages(123)).isTrue(); Looper looper = Looper.myLooper(); shadowOf(looper).runOneTask(); assertThat(handler.hasMessages(123)).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 whenLooperIsAlreadyPaused_shouldCreateWithMainLooperPaused() throws Exception { ShadowLooper.pauseMainLooper(); controller.create(); assertThat(shadowOf(Looper.getMainLooper()).isPaused()).isTrue(); assertThat(transcript).contains("finishedOnCreate"); ShadowLooper.unPauseMainLooper(); assertThat(transcript).contains("onCreate"); }
@Test public void whenLooperIsAlreadyPaused_shouldCreateWithMainLooperPaused() throws Exception { ShadowLooper.pauseMainLooper(); controller.create(); assertThat(shadowOf(Looper.getMainLooper()).isPaused()).isTrue(); assertThat(transcript).contains("finishedOnCreate"); ShadowLooper.unPauseMainLooper(); assertThat(transcript).contains("onCreate"); }
@Test public void whenLooperIsAlreadyPaused_shouldCreateWithMainLooperPaused() throws Exception { ShadowLooper.pauseMainLooper(); controller.create(); assertThat(shadowOf(Looper.getMainLooper()).isPaused()).isTrue(); assertThat(transcript).contains("finishedOnCreate"); ShadowLooper.unPauseMainLooper(); assertThat(transcript).contains("onCreate"); }
@Test public void shouldQueueUiTasksWhenUiThreadIsPaused() throws Exception { ShadowLooper.pauseMainLooper(); activity = Robolectric.setupActivity(DialogLifeCycleActivity.class); TestRunnable runnable = new TestRunnable(); activity.runOnUiThread(runnable); assertFalse(runnable.wasRun); ShadowLooper.unPauseMainLooper(); assertTrue(runnable.wasRun); }
@Test public void shouldPostActionsToTheMessageQueueWithDelay() throws Exception { ShadowLooper.pauseMainLooper(); TestRunnable runnable = new TestRunnable(); view.postDelayed(runnable, 1); assertFalse(runnable.wasRun); Robolectric.getForegroundThreadScheduler().advanceBy(1); assertTrue(runnable.wasRun); }
@Before public void setUp() { MockitoAnnotations.initMocks(this); ShadowLooper.pauseMainLooper(); shadowOf((Application) ApplicationProvider.getApplicationContext()) .grantPermissions(android.Manifest.permission.BACKUP); backupManager = new BackupManager(ApplicationProvider.getApplicationContext()); shadowOf(backupManager).addAvailableRestoreSets(123L, Arrays.asList("foo.bar", "bar.baz")); shadowOf(backupManager).addAvailableRestoreSets(456L, Arrays.asList("hello.world")); }
@Test public void shouldPostInvalidateDelayed() throws Exception { ShadowLooper.pauseMainLooper(); view.postInvalidateDelayed(100); ShadowView shadowView = shadowOf(view); assertFalse(shadowView.wasInvalidated()); ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); assertTrue(shadowView.wasInvalidated()); }