@Test
  public void testDateTimeMethods() throws ParseException, Exception {
    Appointment app = new Appointment(null);
    assertNull(app.getStart());
    assertNull(app.getEnd());
    app.setStartDate(FormatText.USER_DATE.parse("02/18/2013"));
    assertEquals(2, app.getStart().getMonthOfYear());
    assertEquals(18, app.getStart().getDayOfMonth());
    assertEquals(2013, app.getStart().getYear());
    assertEquals(0, app.getStart().getMillisOfDay());
    app.setStartTime(new Time(FormatText.TIME.parse("08:48:48").getTime()));
    assertEquals(2, app.getStart().getMonthOfYear());
    assertEquals(18, app.getStart().getDayOfMonth());
    assertEquals(2013, app.getStart().getYear());
    assertEquals(8, app.getStart().getHourOfDay());
    assertEquals(48, app.getStart().getMinuteOfHour());
    assertEquals(48, app.getStart().getSecondOfMinute());

    app.setPropertyValue("END_TIME", "10:48:48");
    assertEquals(2, app.getEnd().getMonthOfYear());
    assertEquals(18, app.getEnd().getDayOfMonth());
    assertEquals(2013, app.getEnd().getYear());
    assertEquals(10, app.getEnd().getHourOfDay());
    assertEquals(48, app.getEnd().getMinuteOfHour());
    assertEquals(0, app.getEnd().getSecondOfMinute());

    // End time set before start time. End date +1.
    app.setPropertyValue("END_TIME", "07:12");
    assertEquals(2, app.getEnd().getMonthOfYear());
    assertEquals(19, app.getEnd().getDayOfMonth());
    assertEquals(2013, app.getEnd().getYear());
    assertEquals(7, app.getEnd().getHourOfDay());
    assertEquals(12, app.getEnd().getMinuteOfHour());
    assertEquals(0, app.getEnd().getSecondOfMinute());

    // End time adjusted to after start time. End date -1.
    app.setPropertyValue("END_TIME", "12:12");
    assertEquals(2, app.getEnd().getMonthOfYear());
    assertEquals(18, app.getEnd().getDayOfMonth());
    assertEquals(2013, app.getEnd().getYear());
    assertEquals(12, app.getEnd().getHourOfDay());
    assertEquals(12, app.getEnd().getMinuteOfHour());
    assertEquals(0, app.getEnd().getSecondOfMinute());

    // Start time jumps past end time. End date +1.
    app.setPropertyValue("START_TIME", "13:13");
    assertEquals(2, app.getEnd().getMonthOfYear());
    assertEquals(19, app.getEnd().getDayOfMonth());
    assertEquals(2013, app.getEnd().getYear());
    assertEquals(12, app.getEnd().getHourOfDay());
    assertEquals(12, app.getEnd().getMinuteOfHour());
    assertEquals(0, app.getEnd().getSecondOfMinute());

    // End time set while start still null.
    app = new Appointment(null);
    assertNull(app.getStart());
    assertNull(app.getEnd());
    app.setPropertyValue("END_TIME", "12:12");
    assertEquals(1, app.getEnd().getMonthOfYear());
    assertEquals(1, app.getEnd().getDayOfMonth());
    assertEquals(1970, app.getEnd().getYear());
    assertEquals(12, app.getEnd().getHourOfDay());
    assertEquals(12, app.getEnd().getMinuteOfHour());
    assertEquals(0, app.getEnd().getSecondOfMinute());

    // Start Date set. End should follow.
    app.setStartDate(FormatText.USER_DATE.parse("02/18/2013"));
    assertEquals(2, app.getEnd().getMonthOfYear());
    assertEquals(18, app.getEnd().getDayOfMonth());
    assertEquals(2013, app.getEnd().getYear());
    assertEquals(12, app.getEnd().getHourOfDay());
    assertEquals(12, app.getEnd().getMinuteOfHour());
    assertEquals(0, app.getEnd().getSecondOfMinute());

    app.setPropertyValue("TIME_IN", "10:52");
    assertEquals(10, app.getTimeIn().getHourOfDay());
    assertEquals(52, app.getTimeIn().getMinuteOfHour());
  }