import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author ekuns
*/
public class TestClassDate extends TestClassBase {
private static final Log LOG = LogFactory.getLog(TestClassDate.class);
// Restriction facets from the schema:
// <xsd:minInclusive value="2006-03-01"/>
// <xsd:maxInclusive value="2006-06-30"/>
// <xsd:whiteSpace value="collapse"/>
// <xsd:pattern value=".*04.*"/>
private String[] goodDates = { "2006-03-04",
// "2006-03-01-14:04",
// "2006-03-01+13:04",
"2006-03-02-04:00",
"2006-04-01",
"2006-04-04",
"2006-04-30",
"2006-05-04",
"2006-06-01-04:00",
"2006-06-04",
"2006-06-30-14:04", };
private String[] badDates = { "2004-03-04", // too early
"2006-03-01", // Doesn't match pattern
// "2006-03-01-04:00", // because of time zone, ambiguous
"2006-03-04-25:00", // Invalid time zone
"2006-04-31", // Invalid date
// "2006-06-30+14:04", // FIXME: because of time zone, ambiguous
"2006-09-04", // Too late
"0000-09-04", // Illegal format
"2006-04-01-24:00", // invalid time zone
"2006-04-01-01:60", // invalid time zone
"2006-04-01-24-00", // invalid time zone
"2006-04-01-24", }; // invalid time zone
public void testAddGoodDates() throws Exception {
DateTimeTests instance = new DateTimeTests();
for (int i = 0; i < goodDates.length; i++) {
instance.addDateRanged(new org.exolab.castor.types.Date(goodDates[i].trim()));
}
instance.validate();
}
public boolean testUnmarshalGoodDates() throws Exception {
return testUnmarshalGoodInstances("dateRanged", goodDates);
}
public boolean testAddBadDates() {
DateTimeTests instance = new DateTimeTests();
for (int i = 0; i < badDates.length; i++) {
try {
instance.addDateRanged(new org.exolab.castor.types.Date(badDates[i].trim()));
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;
}
LOG.error("Bad date " + badDates[i] + " did not fail the test");
return false;
}
// If every test threw an expected exception, we're good.
return true;
}
public boolean testUnmarshalBadDates() throws Exception {
return testUnmarshalBadInstances("dateRanged", badDates);
}
}