### Question:
SchedulerConfig { public long getScheduleDelay(Priority priority, long minTimestamp, int attemptNumber) { long timeDiff = minTimestamp - getClock().getTime(); ConfigValue config = getValues().get(priority); long delay = Math.max(adjustedExponentialBackoff(attemptNumber, config.getDelta()), timeDiff); return Math.min(delay, config.getMaxAllowedDelay()); }  static SchedulerConfig getDefault(Clock clock); static SchedulerConfig.Builder builder(); long getScheduleDelay(Priority priority, long minTimestamp, int attemptNumber); @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) JobInfo.Builder configureJob(
      JobInfo.Builder builder, Priority priority, long minimumTimestamp, int attemptNumber); Set<Flag> getFlags(Priority priority);  }### Answer:
@Test public void getScheduleDelay_whenNoMinTimestampAndFirstAttempt_shouldReturnExpectedValue() { long delay = createConfig(Collections.emptySet(), DELTA).getScheduleDelay(Priority.DEFAULT, 0, 1); assertThat(delay).isEqualTo(10); }
@Test public void getScheduleDelay_whenNoMinTimestampAndSecondAttempt_shouldReturnExpectedValue() { long delay = createConfig(Collections.emptySet(), DELTA).getScheduleDelay(Priority.DEFAULT, 0, 2); assertThat(delay).isEqualTo(120); }
@Test public void getScheduleDelay_withMinTimestampAndFirstAttempt_shouldReturnExpectedValue() { long delay = createConfig(Collections.emptySet(), DELTA).getScheduleDelay(Priority.DEFAULT, 50, 1); assertThat(delay).isEqualTo(50); }
@Test public void getScheduleDelay_withMinTimestampAndFourthAttempt_shouldReturnExpectedValue() { long delay = createConfig(Collections.emptySet(), DELTA).getScheduleDelay(Priority.DEFAULT, 50, 4); assertThat(delay).isEqualTo(731); }
@Test public void getScheduleDelay_withMinTimestampAndFifthAttempt_shouldReturnMaxDelay() { long delay = createConfig(Collections.emptySet(), DELTA).getScheduleDelay(Priority.DEFAULT, 50, 5); assertThat(delay).isEqualTo(2022); }