@Implementation(minSdk = N) protected void setWindow( int type, long windowStartMillis, long windowLengthMillis, String tag, OnAlarmListener listener, Handler targetHandler) { internalSet(type, windowStartMillis, listener, targetHandler); }
@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); }
private void internalSet(int type, long triggerAtTime, long interval, PendingIntent operation, PendingIntent showIntent) { cancel(operation); scheduledAlarms.add(new ScheduledAlarm(type, triggerAtTime, interval, operation, showIntent)); Collections.sort(scheduledAlarms); }
@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); }
@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); }
@Test @Config(minSdk = N) public void cancel_removesMatchingListeners() { Intent intent = new Intent("ACTION!"); PendingIntent pI = PendingIntent.getService(context, 1, intent, 0); OnAlarmListener listener1 = () -> {}; OnAlarmListener listener2 = () -> {}; Handler handler = new Handler(); alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 20, "tag", listener1, handler); alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 30, "tag", listener2, handler); alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 40, pI); assertThat(shadowAlarmManager.getScheduledAlarms()).hasSize(3); alarmManager.cancel(listener1); assertThat(shadowAlarmManager.getScheduledAlarms()).hasSize(2); assertThat(shadowAlarmManager.peekNextScheduledAlarm().onAlarmListener).isEqualTo(listener2); assertThat(shadowAlarmManager.peekNextScheduledAlarm().handler).isEqualTo(handler); }
private void verifyAlarmCount(AlarmManager alarmManager, int count) throws NoSuchFieldException, IllegalAccessException { Field declaredField = alarmManager.getClass().getDeclaredField("__robo_data__"); declaredField.setAccessible(true); ShadowAlarmManager shadowAlarmManager = (ShadowAlarmManager) declaredField.get(alarmManager); assertThat(shadowAlarmManager.getScheduledAlarms()).hasSize(count); }
ShadowAccessibilityNodeInfo.resetObtainedInstances(); ShadowActivityManager.reset(); ShadowAlarmManager.reset(); if (org.robolectric.RuntimeEnvironment.getApiLevel() <= 27) ShadowArscAssetManager.reset(); if (org.robolectric.RuntimeEnvironment.getApiLevel() >= 28) ShadowArscAssetManager9.reset();
public void getNextAlarmClockInfo() { assertThat(alarmManager.getNextAlarmClock()).isNull(); assertThat(shadowAlarmManager.peekNextScheduledAlarm()).isNull(); assertThat(next.getTriggerTime()).isEqualTo(1000); assertThat(next.getShowIntent()).isSameAs(show); assertThat(shadowAlarmManager.peekNextScheduledAlarm().operation).isSameAs(operation); assertThat(next.getTriggerTime()).isEqualTo(500); assertThat(next.getShowIntent()).isSameAs(show2); assertThat(shadowAlarmManager.peekNextScheduledAlarm().operation).isSameAs(operation2); assertThat(next.getTriggerTime()).isEqualTo(1000); assertThat(next.getShowIntent()).isSameAs(show); assertThat(shadowAlarmManager.peekNextScheduledAlarm().operation).isSameAs(operation); assertThat(shadowAlarmManager.peekNextScheduledAlarm()).isNull();
@Test public void cancel_removesMatchingPendingIntentsWithActions() { Intent newIntent = new Intent("someAction"); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, newIntent, 0); alarmManager.set(AlarmManager.RTC, 1337, pendingIntent); assertThat(shadowAlarmManager.getScheduledAlarms()).hasSize(1); alarmManager.cancel(PendingIntent.getBroadcast(context, 0, new Intent("anotherAction"), 0)); assertThat(shadowAlarmManager.getScheduledAlarms()).hasSize(1); alarmManager.cancel(PendingIntent.getBroadcast(context, 0, new Intent("someAction"), 0)); assertThat(shadowAlarmManager.getScheduledAlarms()).hasSize(0); }
ShadowAccessibilityNodeInfo.resetObtainedInstances(); ShadowActivityManager.reset(); ShadowAlarmManager.reset(); if (org.robolectric.RuntimeEnvironment.getApiLevel() <= 27) ShadowArscAssetManager.reset(); if (org.robolectric.RuntimeEnvironment.getApiLevel() >= 28) ShadowArscAssetManager9.reset();
@Implementation protected void setInexactRepeating( int type, long triggerAtMillis, long intervalMillis, PendingIntent operation) { internalSet(type, triggerAtMillis, intervalMillis, operation, null); }
@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 public void set_shouldReplaceAlarmsWithSameIntentReceiver() { alarmManager.set(AlarmManager.ELAPSED_REALTIME, 500, PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), 0)); alarmManager.set(AlarmManager.ELAPSED_REALTIME, 1000, PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), 0)); assertThat(shadowAlarmManager.getScheduledAlarms()).hasSize(1); }
private void internalSet( int type, long triggerAtTime, OnAlarmListener listener, Handler handler) { cancel(listener); scheduledAlarms.add(new ScheduledAlarm(type, triggerAtTime, 0L, listener, handler)); Collections.sort(scheduledAlarms); }
@Implementation(minSdk = N) protected void setExact( int type, long triggerAtTime, String tag, OnAlarmListener listener, Handler targetHandler) { internalSet(type, triggerAtTime, listener, targetHandler); }
@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 set_shouldReplaceDuplicates() { alarmManager.set(AlarmManager.ELAPSED_REALTIME, 0, PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), 0)); alarmManager.set(AlarmManager.ELAPSED_REALTIME, 0, PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), 0)); assertThat(shadowAlarmManager.getScheduledAlarms()).hasSize(1); }
private void internalSet(int type, long triggerAtTime, long interval, PendingIntent operation, PendingIntent showIntent) { cancel(operation); scheduledAlarms.add(new ScheduledAlarm(type, triggerAtTime, interval, operation, showIntent)); Collections.sort(scheduledAlarms); }
@Implementation protected void setRepeating( int type, long triggerAtTime, long interval, PendingIntent operation) { internalSet(type, triggerAtTime, interval, operation, null); }