diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/common/ProportionalDistributor.java b/navalplanner-business/src/main/java/org/navalplanner/business/common/ProportionalDistributor.java index fdb22e598..1fed4ddbe 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/common/ProportionalDistributor.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/common/ProportionalDistributor.java @@ -47,8 +47,9 @@ public class ProportionalDistributor { BigDecimal total = new BigDecimal(initialTotal); BigDecimal[] result = new BigDecimal[shares.length]; for (int i = 0; i < result.length; i++) { - result[i] = new BigDecimal(shares[i]).divide(total, 4, - RoundingMode.DOWN); + result[i] = (total.equals(BigDecimal.ZERO)) ? BigDecimal.ZERO + : new BigDecimal(shares[i]).divide(total, 4, + RoundingMode.DOWN); } return result; } diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/common/ProportionalDistributorTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/common/ProportionalDistributorTest.java index f15254190..8230ee1ac 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/common/ProportionalDistributorTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/common/ProportionalDistributorTest.java @@ -125,5 +125,16 @@ public class ProportionalDistributorTest { }; } + @Test + public void notThrowDivisionByZeroException() { + ProportionalDistributor.create(0); + } + + @Test + public void notThrowDivisionByZeroExceptionAtDistributeMehtod() { + ProportionalDistributor distributor = ProportionalDistributor + .create(100); + distributor.distribute(0); + } }