Author: ymartel Date: 2011-11-15 12:08:33 +0100 (Tue, 15 Nov 2011) New Revision: 2227 Url: http://nuiton.org/repositories/revision/nuiton-utils/2227 Log: Anomalie #1634 : In PeriodDates setters, check Chronological Order of dates Modified: trunk/nuiton-utils/src/main/java/org/nuiton/util/PeriodDates.java trunk/nuiton-utils/src/test/java/org/nuiton/util/PeriodDatesTest.java Modified: trunk/nuiton-utils/src/main/java/org/nuiton/util/PeriodDates.java =================================================================== --- trunk/nuiton-utils/src/main/java/org/nuiton/util/PeriodDates.java 2011-11-13 15:14:17 UTC (rev 2226) +++ trunk/nuiton-utils/src/main/java/org/nuiton/util/PeriodDates.java 2011-11-15 11:08:33 UTC (rev 2227) @@ -144,7 +144,10 @@ public void setFromDate(Date fromDate) { //this.fromDate = fromDate; if (fromDate != null) { - if (fromCalendar == null) { + if (thruCalendar != null && fromDate.after(thruCalendar.getTime())) { + throw new IllegalArgumentException("The fromDate can't be after the thruDate !"); + } + if (fromCalendar == null) { fromCalendar = Calendar.getInstance(); } fromCalendar.setTime(fromDate); @@ -164,7 +167,10 @@ public void setThruDate(Date thruDate) { //this.thruDate = thruDate; if (thruDate != null) { - if (thruCalendar == null) { + if (fromCalendar != null && thruDate.before(fromCalendar.getTime())) { + throw new IllegalArgumentException("The thruDate can't be before the fromDate !"); + } + if (thruCalendar == null) { thruCalendar = Calendar.getInstance(); } thruCalendar.setTime(thruDate); Modified: trunk/nuiton-utils/src/test/java/org/nuiton/util/PeriodDatesTest.java =================================================================== --- trunk/nuiton-utils/src/test/java/org/nuiton/util/PeriodDatesTest.java 2011-11-13 15:14:17 UTC (rev 2226) +++ trunk/nuiton-utils/src/test/java/org/nuiton/util/PeriodDatesTest.java 2011-11-15 11:08:33 UTC (rev 2227) @@ -100,8 +100,7 @@ } } - @Ignore("to be done as described in issue #1634") - @Test(timeout = 60 * 1000) + @Test(timeout = 60 * 1000, expected = IllegalArgumentException.class) public void whatIfPeriodDatesIsNotInChronologicalOrder() { Date january = DateUtil.createDate(1, 1, 2011); Date december = DateUtil.createDate(1, 12, 2011); @@ -118,8 +117,19 @@ PeriodDates periodDates = new PeriodDates(); periodDates.setFromDate(december); periodDates.setThruDate(january); - periodDates.getMonths(); // infinite loop ! } + @Test(expected = IllegalArgumentException.class) + public void testSetFromDateAfterThruDate() { + Date january = DateUtil.createDate(1, 1, 2011); + Date december = DateUtil.createDate(1, 12, 2011); + PeriodDates periodDates = new PeriodDates(); + // Set thruDate before setting fromDate + periodDates.setThruDate(january); + // FromDate is after thruDate : should throw IllegalArgumentException + periodDates.setFromDate(december); + } + + }