From d432f2ed7ab3b805c914638894d33b3245dd4d8b Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 24 Sep 2009 19:23:20 +0200 Subject: [PATCH] ItEr27S06CUAsignacionGrupoRecursosAPlanificacionItEr26S07: Fixed bug and added new test. --- .../orders/entities/OrderLineGroup.java | 2 +- .../orders/entities/OrderElementTest.java | 53 ++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java index b692c6f6c..c6cc4972c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java @@ -467,7 +467,7 @@ public class OrderLineGroup extends OrderElement implements IOrderLineGroup { RoundingMode.DOWN); } - if (iterator2.hasNext()) { + if (iterator1.hasNext()) { next1 = iterator1.next(); } else { next1 = null; diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/OrderElementTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/OrderElementTest.java index 8710b985c..1b2a0af67 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/OrderElementTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/OrderElementTest.java @@ -844,7 +844,7 @@ public class OrderElementTest { } @Test - public void checkCalculateFakeOrderLineGroup() + public void checkCalculateFakeOrderLineGroup1() throws DuplicateValueTrueReportGlobalAdvanceException, DuplicateAdvanceAssignmentForOrderElementException { OrderElement orderElement = givenOrderLineGroupWithTwoOrderLines(5000, @@ -880,6 +880,57 @@ public class OrderElementTest { } assertThat(advanceAssignment.getMaxValue(), equalTo(new BigDecimal( 11000))); + assertThat(advanceAssignment.getAdvanceMeasurements().size(), + equalTo(3)); + assertThat(advanceAssignment.getLastAdvanceMeasurement().getValue(), + equalTo(new BigDecimal(5000))); + assertThat(advanceAssignment.getLastPercentage(), + equalTo(new BigDecimal(45).divide(new BigDecimal(100)) + .setScale(2))); + } + + @Test + public void checkCalculateFakeOrderLineGroup2() + throws DuplicateValueTrueReportGlobalAdvanceException, + DuplicateAdvanceAssignmentForOrderElementException { + OrderElement orderElement = givenOrderLineGroupWithTwoOrderLines(1000, + 5000); + + List children = orderElement.getChildren(); + AdvanceType advanceType = PredefinedAdvancedTypes.UNITS.getType(); + + LocalDate one = new LocalDate(2009, 9, 1); + LocalDate two = new LocalDate(2009, 9, 2); + LocalDate three = new LocalDate(2009, 9, 3); + + addAvanceAssignmentWithMeasurements(children.get(0), advanceType, true, + new BigDecimal(10000), one, new BigDecimal(100), two, + new BigDecimal(1000), three, new BigDecimal(5000)); + + addAvanceAssignmentWithoutMeasurement(children.get(1), advanceType, + new BigDecimal(1000), true); + + assertThat(orderElement.getAdvancePercentage(), equalTo(new BigDecimal( + 8).divide(new BigDecimal(100)).setScale(2))); + + Set indirectAdvanceAssignments = ((OrderLineGroup) orderElement) + .getIndirectAdvanceAssignments(); + assertThat(indirectAdvanceAssignments.size(), equalTo(2)); + + DirectAdvanceAssignment advanceAssignment = null; + for (IndirectAdvanceAssignment indirectAdvanceAssignment : indirectAdvanceAssignments) { + if (indirectAdvanceAssignment.getAdvanceType().equals(advanceType)) { + advanceAssignment = ((OrderLineGroup) orderElement) + .calculateFakeDirectAdvanceAssignment(indirectAdvanceAssignment); + break; + } + } + assertThat(advanceAssignment.getMaxValue(), equalTo(new BigDecimal( + 11000))); + assertThat(advanceAssignment.getAdvanceMeasurements().size(), + equalTo(3)); + assertThat(advanceAssignment.getLastAdvanceMeasurement().getValue(), + equalTo(new BigDecimal(5000))); assertThat(advanceAssignment.getLastPercentage(), equalTo(new BigDecimal(45).divide(new BigDecimal(100)) .setScale(2)));