@Test @Config(minSdk = KITKAT) public void setWindow_shouldRegisterAlarm_forApi19() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); alarmManager.setWindow(AlarmManager.ELAPSED_REALTIME, 0, 1, PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), 0)); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNotNull(); }
@Test public void shouldSupportGetNextScheduledAlarm() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); long now = new Date().getTime(); Intent intent = new Intent(activity, activity.getClass()); PendingIntent pendingIntent = PendingIntent.getActivity(activity, 0, intent, 0); alarmManager.set(AlarmManager.ELAPSED_REALTIME, now, pendingIntent); ShadowAlarmManager.ScheduledAlarm scheduledAlarm = shadowAlarmManager.getNextScheduledAlarm(); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); assertScheduledAlarm(now, pendingIntent, scheduledAlarm); }
@Test @Config(minSdk = M) public void setExactAndAllowWhileIdle_shouldRegisterAlarm() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME, 0, PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), 0)); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNotNull(); }
@Test @Config(minSdk = KITKAT) public void setExact_shouldRegisterAlarm_forApi19() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); alarmManager.setExact(AlarmManager.ELAPSED_REALTIME, 0, PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), 0)); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNotNull(); }
@Test public void getNextScheduledAlarm_shouldReturnRepeatingAlarms() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); long now = new Date().getTime(); Intent intent = new Intent(activity, activity.getClass()); PendingIntent pendingIntent = PendingIntent.getActivity(activity, 0, intent, 0); alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, now, INTERVAL_HOUR, pendingIntent); ShadowAlarmManager.ScheduledAlarm scheduledAlarm = shadowAlarmManager.getNextScheduledAlarm(); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); assertRepeatingScheduledAlarm(now, INTERVAL_HOUR, pendingIntent, scheduledAlarm); }
@Test @Config(minSdk = M) public void setAndAllowWhileIdle_shouldRegisterAlarm() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); alarmManager.setAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME, 0, PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), 0)); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNotNull(); }
@Test public void setRepeating_shouldRegisterAlarm() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, 0, INTERVAL_HOUR, PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), 0)); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNotNull(); }
@Test public void set_shouldRegisterAlarm() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); alarmManager.set(AlarmManager.ELAPSED_REALTIME, 0, PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), 0)); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNotNull(); }
@Test @Config(minSdk = N) public void set_shouldRegisterAlarm_forApi24() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); OnAlarmListener listener = () -> {}; alarmManager.set(AlarmManager.ELAPSED_REALTIME, 0, "tag", listener, null); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNotNull(); }
@Test @Config(minSdk = N) public void setExact_shouldRegisterAlarm_forApi124() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); OnAlarmListener listener = () -> {}; alarmManager.setExact(AlarmManager.ELAPSED_REALTIME, 0, "tag", listener, null); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNotNull(); }
@Test @Config(minSdk = N) public void setWindow_shouldRegisterAlarm_forApi24() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); OnAlarmListener listener = () -> {}; alarmManager.setWindow(AlarmManager.ELAPSED_REALTIME, 0, 1, "tag", listener, null); assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNotNull(); }
@Test public void peekNextScheduledAlarm_shouldReturnNextAlarm() { assertThat(shadowAlarmManager.getNextScheduledAlarm()).isNull(); long now = new Date().getTime(); Intent intent = new Intent(activity, activity.getClass()); PendingIntent pendingIntent = PendingIntent.getActivity(activity, 0, intent, 0); alarmManager.set(AlarmManager.ELAPSED_REALTIME, now, pendingIntent); ShadowAlarmManager.ScheduledAlarm scheduledAlarm = shadowAlarmManager.peekNextScheduledAlarm(); assertThat(shadowAlarmManager.peekNextScheduledAlarm()).isNotNull(); assertScheduledAlarm(now, pendingIntent, scheduledAlarm); }
@Config(sdk = 18) @Test public void testAlarmAfterReboot() { // rebooting should update widget again via update broadcast widgetProvider.onReceive(RuntimeEnvironment.application, new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE) .putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[]{appWidgetId})); assertThat(shadowOf(alarmManager).getNextScheduledAlarm()).isNotNull(); widgetProvider.onDeleted(RuntimeEnvironment.application, new int[]{appWidgetId}); assertThat(shadowOf(alarmManager).getNextScheduledAlarm()).isNull(); }
@Test public void cancel_useRequestCodeToMatchExistingPendingIntents() throws Exception { Intent intent = new Intent("ACTION!"); PendingIntent pI = PendingIntent.getService(context, 1, intent, 0); alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 10, pI); PendingIntent pI2 = PendingIntent.getService(context, 2, intent, 0); alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 10, pI2); assertThat(shadowAlarmManager.getScheduledAlarms()).hasSize(2); alarmManager.cancel(pI); assertThat(shadowAlarmManager.getScheduledAlarms()).hasSize(1); assertThat(shadowAlarmManager.getNextScheduledAlarm().operation).isEqualTo(pI2); }
@Config(sdk = 18) @Test public void testDeleteCancelAlarm() { new WidgetHelper(RuntimeEnvironment.application).configure(appWidgetId); assertThat(shadowOf(alarmManager).getNextScheduledAlarm()).isNotNull(); widgetProvider.onDeleted(RuntimeEnvironment.application, new int[]{appWidgetId}); assertThat(shadowOf(alarmManager).getNextScheduledAlarm()).isNull(); }
private Intent assertAlarmScheduled(String ofExpectedType) { AlarmManager alarmManager = (AlarmManager) RuntimeEnvironment.application.getSystemService(Context.ALARM_SERVICE); ShadowAlarmManager shadow = shadowOf(alarmManager); ShadowAlarmManager.ScheduledAlarm nextScheduledAlarm = shadow.getNextScheduledAlarm(); assertThat(nextScheduledAlarm.type).isEqualTo(AlarmManager.RTC_WAKEUP); assertThat(nextScheduledAlarm.triggerAtTime).isGreaterThan(0L); PendingIntent pendingIntent = nextScheduledAlarm.operation; ShadowPendingIntent shadowPendingIntent = shadowOf(pendingIntent); ComponentName component = shadowPendingIntent.getSavedIntent().getComponent(); assertThat(component.getPackageName()).isEqualTo("com.zegoggles.smssync"); assertThat(component.getClassName()).isEqualTo("com.zegoggles.smssync.service.SmsBackupService"); assertThat(shadowPendingIntent.getFlags()).isEqualTo(FLAG_UPDATE_CURRENT); assertThat(shadowPendingIntent.getSavedIntent().getAction()).isNotEmpty(); assertThat(shadowPendingIntent.getSavedIntent().getAction()) .isEqualTo(ofExpectedType); return shadowPendingIntent.getSavedIntent(); }