String hoursText = matcher.group(2);
if (hoursText != null) {
hours = Integer.parseInt(hoursText);
- if (hours > 24) {
- throw new IllegalArgumentException(String.format("The number of hours should not be greater than 24, got %s", hours));
- }
sanitizedText = sanitizedText.replace(hoursText + HOUR, "");
}
String minutesText = matcher.group(3);
if (minutesText != null) {
minutes = Integer.parseInt(minutesText);
- if (minutes > 60) {
- throw new IllegalArgumentException(String.format("The number of minutes should not be greater than 60, got %s", minutes));
- }
sanitizedText = sanitizedText.replace(minutesText + MINUTE, "");
}
if (sanitizedText.isEmpty()) {
assertThat(Duration.decode("23h", HOURS_IN_DAY)).isEqualTo(Duration.create(23 * ONE_HOUR_IN_MINUTES));
assertThat(Duration.decode("15d", HOURS_IN_DAY)).isEqualTo(Duration.create(15 * ONE_DAY_IN_MINUTES));
assertThat(Duration.decode("42min", HOURS_IN_DAY)).isEqualTo(Duration.create(42 * ONE_MINUTE));
- }
- @Test
- public void fail_to_decode_if_more_than_24_hours() throws Exception {
- try {
- Duration.decode("25h", HOURS_IN_DAY);
- fail();
- } catch (Exception e) {
- assertThat(e).isInstanceOf(IllegalArgumentException.class).hasMessage("The number of hours should not be greater than 24, got 25");
- }
- }
-
- @Test
- public void fail_to_decode_if_more_than_60_minutes() throws Exception {
- try {
- Duration.decode("61min", HOURS_IN_DAY);
- fail();
- } catch (Exception e) {
- assertThat(e).isInstanceOf(IllegalArgumentException.class).hasMessage("The number of minutes should not be greater than 60, got 61");
- }
+ assertThat(Duration.decode("25h61min", HOURS_IN_DAY)).isEqualTo(Duration.create(25 * ONE_HOUR_IN_MINUTES + 61));
}
@Test