import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * * @author ekuns */ public class TestClassDateTime extends TestClassBase { private static final Log LOG = LogFactory.getLog(TestClassDateTime.class); // Restriction facets from the schema: // <xsd:minInclusive value="2006-03-01T00:00:00"/> // <xsd:maxInclusive value="2006-06-30T23:59:59"/> // <xsd:pattern value=".*23.*"/> // <xsd:whiteSpace value="collapse"/> private String[] goodDateTimes = { //"2006-03-01T00:00:23", FIXME: Enable this after we use Calendar not Date "2006-03-23T00:00:00", "2006-03-01T23:00:00", "2006-04-23T00:00:00", "2006-05-23T00:00:00", "2006-05-20T00:00:23", "2006-06-30T23:59:59", }; private String[] badDateTimes = { "2004-03-01T00:00:23", // too early "2006-06-30T23:59:60", // invalid date "2006-06-30T23:60:59", // invalid date "2006-06-30T24:59:59", // invalid date "2006-06-30T12:5:59", // invalid date "2006-06-30T12:05:0", // invalid date "0000-06-30T23:59:59", // invalid date "2006-06-30T23:59:59-24:00", // invalid time zone "2006-06-30T23:59:59-24-00", // invalid time zone "2006-06-30T23:59:59-24", // invalid time zone "2008-06-30T23:59:59", }; // too late public void testAddGoodDateTimes() throws Exception { DateTimeTests instance = new DateTimeTests(); for (int i = 0; i < goodDateTimes.length; i++) { instance.addDateTimeRanged(new org.exolab.castor.types.DateTime(goodDateTimes[i].trim()).toDate()); } instance.validate(); } public boolean testUnmarshalGoodDateTimes() throws Exception { return testUnmarshalGoodInstances("dateTimeRanged", goodDateTimes); } public Object testAddBadDateTimes() { DateTimeTests instance = new DateTimeTests(); for (int i = 0; i < badDateTimes.length; i++) { try { instance.addDateTimeRanged(new org.exolab.castor.types.DateTime(badDateTimes[i].trim()).toDate()); instance.validate(); } catch (java.text.ParseException e) { // Good, we caught the exception continue; } catch (org.exolab.castor.xml.ValidationException e) { // Good, we caught the exception continue; } catch (java.lang.IllegalArgumentException e) { // Good, we caught the exception continue; } catch (java.lang.Exception e) { LOG.error("Bad dateTime " + badDateTimes[i] + " threw an unexpected Exception"); return e; } LOG.error("Bad dateTime " + badDateTimes[i] + " did not fail the test"); return Boolean.FALSE; } // If every test threw one of the expected Exceptions, we're good. return Boolean.TRUE; } public boolean testUnmarshalBadDateTimes() throws Exception { return testUnmarshalBadInstances("dateTimeRanged", badDateTimes); } }