Added regression test for #1509.
diff --git a/robolectric/src/test/java/org/robolectric/util/ActivityControllerTest.java b/robolectric/src/test/java/org/robolectric/util/ActivityControllerTest.java
index eca3762..dbac794 100644
--- a/robolectric/src/test/java/org/robolectric/util/ActivityControllerTest.java
+++ b/robolectric/src/test/java/org/robolectric/util/ActivityControllerTest.java
@@ -6,6 +6,7 @@
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
+import android.os.Handler;
import android.os.Looper;
import android.view.Window;
import android.widget.LinearLayout;
@@ -44,6 +45,40 @@
assertThat(activityController.setup()).isNotNull();
}
+ public static class TestDelayedPostActivity extends Activity {
+ TestRunnable r1 = new TestRunnable();
+ TestRunnable r2 = new TestRunnable();
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Handler h = new Handler();
+ h.post(r1);
+ h.postDelayed(r2, 60000);
+ }
+ }
+
+ @Test
+ public void pendingTasks_areRunEagerly_whenActivityIsStarted_andSchedulerUnPaused() {
+ final Scheduler s = Robolectric.getForegroundThreadScheduler();
+ final long startTime = s.getCurrentTime();
+ TestDelayedPostActivity activity = Robolectric.setupActivity(TestDelayedPostActivity.class);
+ assertThat(activity.r1.wasRun).as("immediate task").isTrue();
+ assertThat(s.getCurrentTime()).as("currentTime").isEqualTo(startTime);
+ }
+
+ @Test
+ public void delayedTasks_areNotRunEagerly_whenActivityIsStarted_andSchedulerUnPaused() {
+ // Regression test for issue #1509
+ final Scheduler s = Robolectric.getForegroundThreadScheduler();
+ final long startTime = s.getCurrentTime();
+ TestDelayedPostActivity activity = Robolectric.setupActivity(TestDelayedPostActivity.class);
+ assertThat(activity.r2.wasRun).as("before flush").isFalse();
+ assertThat(s.getCurrentTime()).as("currentTime before flush").isEqualTo(startTime);
+ s.advanceToLastPostedRunnable();
+ assertThat(activity.r2.wasRun).as("after flush").isTrue();
+ assertThat(s.getCurrentTime()).as("currentTime after flush").isEqualTo(startTime + 60000);
+ }
+
@Test
public void shouldSetIntent() throws Exception {
MyActivity myActivity = controller.create().get();