package ucar.nc2.time; import static org.junit.Assert.assertEquals; import org.junit.Test; import ucar.nc2.time.CalendarPeriod.Field; /** * CalendarDate testing * * @author caron * @since 12/4/12 */ public class TestCalendarDate { @Test public void testDateTimeFields() { // public static CalendarDate of(Calendar cal, int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute) { CalendarDate cd; try { cd = CalendarDate.of(null, 1,1,1,1,1,1); } catch (Exception e) { assert false; } try { cd = CalendarDate.of(null, 1,0,1,1,1,1); } catch (Exception e) { System.out.printf("%s%n", e.getMessage()); // monthOfYear must be in the range [1,12] assert true; } try { cd = CalendarDate.of(null, 1,1,0,1,1,1); // dayOfMonth must be in the range [1,31] } catch (Exception e) { System.out.printf("%s%n", e.getMessage()); assert true; } cd = CalendarDate.of(null, 1,1,1,0,1,1); cd = CalendarDate.of(null, 1,1,1,1,0,1); cd = CalendarDate.of(null, 1,1,1,1,1,0); } @Test public void testAddReturnsClosestDate() { // from https://github.com/jonescc String baseDate = "1950-01-01"; double valueInMillisecs = 2025829799999.99977; String expectedResult = "2014-03-13T02:30:00Z"; assertAddReturnsExpectedDate(baseDate, valueInMillisecs, Field.Millisec, expectedResult); assertAddReturnsExpectedDate(baseDate, valueInMillisecs/CalendarDate.MILLISECS_IN_SECOND, Field.Second, expectedResult); assertAddReturnsExpectedDate(baseDate, valueInMillisecs/CalendarDate.MILLISECS_IN_MINUTE, Field.Minute, expectedResult); assertAddReturnsExpectedDate(baseDate, valueInMillisecs/CalendarDate.MILLISECS_IN_HOUR, Field.Hour, expectedResult); assertAddReturnsExpectedDate(baseDate, valueInMillisecs/CalendarDate.MILLISECS_IN_DAY, Field.Day, expectedResult); assertAddReturnsExpectedDate(baseDate, valueInMillisecs/CalendarDate.MILLISECS_IN_MONTH, Field.Month, expectedResult); assertAddReturnsExpectedDate(baseDate, valueInMillisecs/CalendarDate.MILLISECS_IN_YEAR, Field.Year, expectedResult); } private void assertAddReturnsExpectedDate(String baseDate, double value, Field units, String expectedResult) { CalendarDate base = CalendarDateFormatter.isoStringToCalendarDate(Calendar.gregorian, baseDate); CalendarDate result = base.add(value, units); assertEquals(units.toString(), expectedResult, CalendarDateFormatter.toDateTimeStringISO(result)); } }