Index: components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerTest.java |
diff --git a/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerTest.java b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerTest.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d39f91ef4dc2e5df02496740e6a64149d01657d9 |
--- /dev/null |
+++ b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerTest.java |
@@ -0,0 +1,98 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.components.background_task_scheduler; |
+ |
+import static org.junit.Assert.assertEquals; |
+import static org.junit.Assert.assertFalse; |
+import static org.junit.Assert.assertTrue; |
+import static org.mockito.Mockito.doNothing; |
+import static org.mockito.Mockito.doReturn; |
+import static org.mockito.Mockito.eq; |
+import static org.mockito.Mockito.times; |
+import static org.mockito.Mockito.verify; |
+ |
+import org.junit.Before; |
+import org.junit.Test; |
+import org.junit.runner.RunWith; |
+import org.mockito.Mock; |
+import org.mockito.MockitoAnnotations; |
+import org.robolectric.RuntimeEnvironment; |
+import org.robolectric.annotation.Config; |
+ |
+import org.chromium.base.ContextUtils; |
+import org.chromium.base.test.util.Feature; |
+import org.chromium.testing.local.LocalRobolectricTestRunner; |
+ |
+import java.util.concurrent.TimeUnit; |
+ |
+/** Unit tests for {@link BackgroundTaskScheduler}. */ |
+@RunWith(LocalRobolectricTestRunner.class) |
+@Config(manifest = Config.NONE) |
+public class BackgroundTaskSchedulerTest { |
+ private static final TaskInfo TASK = |
+ TaskInfo.createOneOffTask( |
+ TaskIds.TEST, TestBackgroundTask.class, TimeUnit.DAYS.toMillis(1)) |
+ .build(); |
+ |
+ @Mock |
+ private BackgroundTaskSchedulerDelegate mDelegate; |
+ |
+ @Before |
+ public void setUp() { |
+ MockitoAnnotations.initMocks(this); |
+ ContextUtils.initApplicationContextForTests(RuntimeEnvironment.application); |
+ BackgroundTaskSchedulerFactory.setSchedulerForTesting( |
+ new BackgroundTaskScheduler(mDelegate)); |
+ TestBackgroundTask.reset(); |
+ } |
+ |
+ @Test |
+ @Feature({"BackgroundTaskScheduler"}) |
+ public void testScheduleTaskSuccessful() { |
+ doReturn(true).when(mDelegate).schedule(eq(RuntimeEnvironment.application), eq(TASK)); |
+ BackgroundTaskSchedulerFactory.getScheduler().schedule( |
+ RuntimeEnvironment.application, TASK); |
+ assertTrue(BackgroundTaskSchedulerPrefs.getScheduledTasks().contains( |
+ TASK.getBackgroundTaskClass().getName())); |
+ verify(mDelegate, times(1)).schedule(eq(RuntimeEnvironment.application), eq(TASK)); |
+ } |
+ |
+ @Test |
+ @Feature({"BackgroundTaskScheduler"}) |
+ public void testScheduleTaskFailed() { |
+ doReturn(false).when(mDelegate).schedule(eq(RuntimeEnvironment.application), eq(TASK)); |
+ BackgroundTaskSchedulerFactory.getScheduler().schedule( |
+ RuntimeEnvironment.application, TASK); |
+ assertFalse(BackgroundTaskSchedulerPrefs.getScheduledTasks().contains( |
+ TASK.getBackgroundTaskClass().getName())); |
+ verify(mDelegate, times(1)).schedule(eq(RuntimeEnvironment.application), eq(TASK)); |
+ } |
+ |
+ @Test |
+ @Feature({"BackgroundTaskScheduler"}) |
+ public void testCancel() { |
+ BackgroundTaskSchedulerPrefs.addScheduledTask(TASK); |
+ |
+ doNothing().when(mDelegate).cancel(eq(RuntimeEnvironment.application), eq(TaskIds.TEST)); |
+ BackgroundTaskSchedulerFactory.getScheduler().cancel( |
+ RuntimeEnvironment.application, TaskIds.TEST); |
+ assertFalse(BackgroundTaskSchedulerPrefs.getScheduledTasks().contains( |
+ TASK.getBackgroundTaskClass().getName())); |
+ verify(mDelegate, times(1)).cancel(eq(RuntimeEnvironment.application), eq(TaskIds.TEST)); |
+ } |
+ |
+ @Test |
+ @Feature({"BackgroundTaskScheduler"}) |
+ public void testRescheduleTasks() { |
+ BackgroundTaskSchedulerPrefs.addScheduledTask(TASK); |
+ |
+ assertEquals(0, TestBackgroundTask.getRescheduleCalls()); |
+ assertFalse(BackgroundTaskSchedulerPrefs.getScheduledTasks().isEmpty()); |
+ BackgroundTaskSchedulerFactory.getScheduler().reschedule(RuntimeEnvironment.application); |
+ |
+ assertEquals(1, TestBackgroundTask.getRescheduleCalls()); |
+ assertTrue(BackgroundTaskSchedulerPrefs.getScheduledTasks().isEmpty()); |
+ } |
+} |