@Test public void testDefaultDateIterationOverCenturyYearChange() { // Collection object to retain the iterated dates from the DateIterator List<Calendar> calsFromIter = new ArrayList<Calendar>(); List<Calendar> calsExpected = new ArrayList<Calendar>(); // Generate expected output Calendar iCal = (Calendar) startCal.clone(); // normalize, if needed if (normalize) { while (iCal.get(calendarFieldNormalize) != calendarValueNormalize) { iCal.add(Calendar.DATE, -1); } } while (iCal.before(endCal)) { Calendar tempCal = (Calendar) iCal.clone(); calsExpected.add(tempCal); iCal.add(calendarFieldIter, iterRate); } calsExpected.add((Calendar) iCal.clone()); // Perform the iteration DateIterator dateIter = new DateIterator( startCal, endCal, calendarFieldIter, iterRate, normalize, calendarFieldNormalize, calendarValueNormalize); while (dateIter.hasNext()) { Calendar cal = dateIter.next(); calsFromIter.add(cal); } // *** DEBUGGING OUTPUT *** // String start = DateUtil.get(startCal.getTime()); // String end = DateUtil.get(endCal.getTime()); // System.out.println("start:" + start + " end:" + end); // for (Calendar cal : calsExpected) { // String calStr = DateUtil.get(cal.getTime(), "MM/dd/yyyy hh:mm:ss:SS a"); // // System.out.println("Expected: " + calStr); // } // for (Calendar cal : calsFromIter) { // String calStr = DateUtil.get(cal.getTime(), "MM/dd/yyyy hh:mm:ss:SS a"); // // System.out.println("Actual: " + calStr); // } // Asserts for (Calendar cal : calsExpected) { assertTrue( "calsFromIter missing date: " + DateUtil.getMMDDYYHHMM(cal.getTime()), calsFromIter.contains(cal)); } for (Calendar cal : calsFromIter) { assertTrue( "calsFromIter has extra date: " + DateUtil.getMMDDYYHHMM(cal.getTime()), calsExpected.contains(cal)); } }