From 2a0050439b96d91b87fd33c315ceffc91cd94897 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Tue, 16 Mar 2010 15:29:54 +0100 Subject: [PATCH] ItEr51S04ValidacionEProbasFuncionaisItEr50S04: Fixed division by zero problem with task of 0 hours. --- .../business/common/ProportionalDistributor.java | 5 +++-- .../business/common/ProportionalDistributorTest.java | 11 +++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) 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); + } }