From 5f386128c1264dbb3ced9be50b3107cb6edc856a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 30 Aug 2010 17:15:46 +0200 Subject: [PATCH] Add method for substracting EffortDurations FEA: ItEr60S19TimeUnitDataType --- .../business/workingday/EffortDuration.java | 16 ++++++++++++++++ .../test/workingday/EffortDurationTest.java | 12 ++++++++++++ 2 files changed, 28 insertions(+) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workingday/EffortDuration.java b/navalplanner-business/src/main/java/org/navalplanner/business/workingday/EffortDuration.java index 359b929b6..ad9d252e6 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/workingday/EffortDuration.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/workingday/EffortDuration.java @@ -168,4 +168,20 @@ public class EffortDuration implements Comparable { return seconds == 0; } + /** + * Substracts two {@link EffortDuration}. Because {@link EffortDuration + * durations} cannot be negative this must be bigger than the + * parameter or the same + * + * @param duration + * @return the result of substracting the two durations + * @throws IllegalArgumentException + * if the parameter is bigger than this + */ + public EffortDuration minus(EffortDuration duration) { + Validate.isTrue(this.compareTo(duration) >= 0, + "minued must not be smaller than subtrahend"); + return new EffortDuration(seconds - duration.seconds); + } + } diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/EffortDurationTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/EffortDurationTest.java index 6585961bf..1bc0aaff3 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/EffortDurationTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/EffortDurationTest.java @@ -149,4 +149,16 @@ public class EffortDurationTest { assertThat(hours(3).divideBy(4), equalTo(minutes(45))); } + @Test(expected = IllegalArgumentException.class) + public void effortDurationCannotBeSubstractedIfMinuedIsSmallerThanSubtrahend() { + EffortDuration threeHours = hours(3); + threeHours.minus(threeHours.and(1, Granularity.SECONDS)); + } + + @Test + public void effortDurationCanBeSubstracted() { + assertThat(hours(2).minus(minutes(120)), equalTo(EffortDuration.zero())); + assertThat(hours(2).minus(minutes(60)), equalTo(hours(1))); + } + }