diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workingday/IntraDayDate.java b/navalplanner-business/src/main/java/org/navalplanner/business/workingday/IntraDayDate.java index 2d4834263..5277bcaf3 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/workingday/IntraDayDate.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/workingday/IntraDayDate.java @@ -371,4 +371,20 @@ public class IntraDayDate implements Comparable { return IntraDayDate.startOfDay(getDate().minusDays(1)); } + /** + * @return the next day or the same day if this {@link IntraDayDate} has no + * duration. + */ + public LocalDate roundUp() { + return asExclusiveEnd(); + } + + /** + * @return A date resulting of striping this {@link IntraDayDate} of its + * duration + */ + public LocalDate roundDown() { + return date; + } + } diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/IntraDayDateTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/IntraDayDateTest.java index 9697825d9..7d2368b82 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/IntraDayDateTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/IntraDayDateTest.java @@ -278,4 +278,20 @@ public class IntraDayDateTest { } }; } + + @Test + public void roundsUpGoesToTheNextLocalDateOrKeepsTheSame() { + assertThat(IntraDayDate.create(today, halfHour).roundUp(), + equalTo(today.plusDays(1))); + + assertThat(IntraDayDate.startOfDay(today).roundUp(), equalTo(today)); + } + + @Test + public void roundDownGoesToPreviousLocalDateOrKeepsTheSame() { + assertThat(IntraDayDate.create(today, halfHour).roundDown(), + equalTo(today)); + + assertThat(IntraDayDate.startOfDay(today).roundDown(), equalTo(today)); + } }