import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * @author ekuns */ public class TestClassByte extends TestClassBase { private static final Log LOG = LogFactory.getLog(TestClassByte.class); // Restriction facets from the schema: // <xsd:pattern value=".*9.*"/> // <xsd:totalDigits value="2"/> // <xsd:whiteSpace value="collapse"/> private String[] goodValues = { "9", "99", "-99", "-9" }; private String[] badValues = { "1", // doesn't match pattern "-109", // too many digits "109", }; // too many digits // Restriction facets from the schema: // <xsd:minInclusive value="-10"/> // <xsd:maxInclusive value="80"/> // <xsd:pattern value=".*9.*"/> // <xsd:whiteSpace value="collapse"/> private String[] goodValuesMinMax = { "9", "-9" }; private String[] badValuesMinMax = { "109", // too large "-19", // too small "10", }; // doesn't match pattern public void testAddGoodValues() throws Exception { NumberTests instance = new NumberTests(); for (int i = 0; i < goodValues.length; i++) { instance.setMybyte(Byte.parseByte(goodValues[i].trim())); instance.validate(); } for (int i = 0; i < goodValuesMinMax.length; i++) { instance.setMybyteMinMax(Byte.parseByte(goodValuesMinMax[i].trim())); instance.validate(); } } public boolean testUnmarshalGoodValues() throws Exception { return testUnmarshalGoodInstances("mybyte", goodValues) && testUnmarshalGoodInstances("mybyteMinMax", goodValuesMinMax); } public boolean testAddBadValues() { NumberTests instance = new NumberTests(); for (int i = 0; i < badValues.length; i++) { try { System.out.println("instance under test: " + instance + " of class: " + instance.getClass()); System.out.println("bad value: " + badValues[i] + " as byte: " + Byte.parseByte(badValues[i].trim())); instance.setMybyte(Byte.parseByte(badValues[i].trim())); instance.validate(); } 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 value " + badValues[i] + " did not fail the test"); return false; } for (int i = 0; i < badValuesMinMax.length; i++) { try { instance.setMybyteMinMax(Byte.parseByte(badValuesMinMax[i].trim())); instance.validate(); } 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 min/max value " + badValuesMinMax[i] + " did not fail the test"); return false; } // If every test threw an expected exception, we're good. return true; } public boolean testUnmarshalBadValues() throws Exception { return testUnmarshalBadInstances("mybyte", badValues) && testUnmarshalBadInstances("mybyteMinMax", badValuesMinMax); } }