import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* @author ekuns
*/
public class TestClassDuration extends TestClassBase {
private static final Log LOG = LogFactory.getLog(TestClassDuration.class);
// Restriction facets from the schema:
// <xsd:minInclusive value="P5DT20S"/>
// <xsd:maxInclusive value="P200DT20S"/>
// <xsd:pattern value=".*20S.*"/>
// <xsd:whiteSpace value="collapse"/>
private String[] goodDurations = { "P5DT20S",
"P50DT20S",
"P1M4DT3H20S", };
private String[] badDurations = { "PT20S", // too short
"P2DT20S", // too short
"T20S", // invalid duration
"P500DT20S", }; // too long
public void testAddGoodDurations() throws Exception {
DateTimeTests instance = new DateTimeTests();
for (int i = 0; i < goodDurations.length; i++) {
instance.addDurationRanged(new org.exolab.castor.types.Duration(goodDurations[i].trim()));
}
instance.validate();
}
public boolean testUnmarshalGoodDurations() throws Exception {
return testUnmarshalGoodInstances("durationRanged", goodDurations);
}
public Object testAddBadDurations() {
DateTimeTests instance = new DateTimeTests();
for (int i = 0; i < badDurations.length; i++) {
try {
instance.addDurationRanged(new org.exolab.castor.types.Duration(badDurations[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;
} catch (java.lang.Exception e) {
LOG.error("Bad duration " + badDurations[i] + " threw an unexpected Exception");
return e;
}
LOG.error("Bad duration " + badDurations[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 testUnmarshalBadDurations() throws Exception {
return testUnmarshalBadInstances("durationRanged", badDurations);
}
}