### Question:
MSMeetingRequestDecoder extends ActiveSyncDecoder { @VisibleForTesting Date date(String dateAsString) throws ParseException, ConversionException { if (!Strings.isNullOrEmpty(dateAsString)) { return utcDateFormat.parse(dateAsString); } throw new ConversionException("A required date is missing"); } @Inject protected  MSMeetingRequestDecoder(Base64ASTimeZoneDecoder base64asTimeZoneDecoder, ASTimeZoneConverter asTimeZoneConverter); MSMeetingRequest decode(Element data);  }### Answer:
@Test(expected=ParseException.class) public void parseRecurrenceDateNeedsTime() throws Exception { decoder.date("20021126"); }
@Test(expected=ParseException.class) public void parseDateNeedsPunctuation() throws Exception { decoder.date("20021126T160000Z"); }
@Test(expected=ParseException.class) public void parseDateNeedsTime() throws Exception { decoder.date("2002-11-26"); }
@Test public void parseDate() throws Exception { Date parsed = decoder.date("2000-12-25T08:35:00.000Z"); assertThat(parsed).isEqualTo(date("2000-12-25T08:35:00+00")); }