/*
* Test a pattern containing a single non-required attribute whose only
* allowed value is a fixed string.
*/
SchemaPattern test_element1 = test.child("element1");
checkValidation_ANA(test_element1.validateAttributes(new AttributesImpl(
"bad", "value1")),
"bad");
checkValidation_IAV(test_element1.validateAttributes(new AttributesImpl(
"attribute1", "bad")),
"attribute1", "bad");
checkValidation_V(test_element1.validateAttributes(new AttributesImpl(
"attribute1", "value1")));
checkValidation_V(test_element1.validateAttributes(AttributesImpl.EMPTY_MAP));
checkValidation_ANA(test_element1.validateAttributes(new AttributesImpl(
"attribute1", "value1",
"bad", "bad")),
"bad");
checkValidation_ANA(test_element1.validateAttributesUpdate(new AttributesUpdateImpl(
"bad", "value1", "value1")),
"bad");
checkValidation_IAV(test_element1.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute1", "bad", "bad")),
"attribute1", "bad");
checkValidation_V(test_element1.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute1", "value1", "value1")));
checkValidation_V(test_element1.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute1", null, "value1")));
checkValidation_V(test_element1.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute1", "value1", null)));
checkValidation_V(test_element1.validateAttributesUpdate(AttributesUpdateImpl.EMPTY_MAP));
checkValidation_ANA(test_element1.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute1", "value1", "value1",
"bad", "bad", "bad")),
"bad");
/*
* Test a pattern containing a single non-required attribute with an
* infinite number of possible values matching a regular expression.
*/
SchemaPattern test_element2 = test.child("element2");
checkValidation_ANA(test_element2.validateAttributes(new AttributesImpl(
"bad", "abbbc")),
"bad");
checkValidation_IAV(test_element2.validateAttributes(new AttributesImpl(
"attribute2", "bad")),
"attribute2", "bad");
checkValidation_V(test_element2.validateAttributes(new AttributesImpl(
"attribute2", "abbbc")));
checkValidation_ANA(test_element2.validateAttributesUpdate(new AttributesUpdateImpl(
"bad", "abbbc", "abbbc")),
"bad");
checkValidation_IAV(test_element2.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute2", "bad", "bad")),
"attribute2", "bad");
checkValidation_V(test_element2.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute2", "abbbc", "abbbc")));
checkValidation_V(test_element2.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute2", null, "abbbc")));
checkValidation_V(test_element2.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute2", "abbbc", null)));
/*
* Test a pattern containing a mixture of required and non-required attributes.
*/
SchemaPattern test_element3 = test.child("element3");
checkValidation_MRA(test_element3.validateAttributes(new AttributesImpl(
"bad", "value1")),
"attribute3");
checkValidation_ANA(test_element3.validateAttributes(new AttributesImpl(
"attribute3", "value3",
"bad", "bad")),
"bad");
checkValidation_V(test_element3.validateAttributes(new AttributesImpl(
"attribute3", "value3")));
checkValidation_V(test_element3.validateAttributes(new AttributesImpl(
"attribute3", "value3",
"attribute4", "value4",
"attribute5", "value5")));
checkValidation_IAV(test_element3.validateAttributes(new AttributesImpl(
"attribute3", "bad",
"attribute4", "value4",
"attribute5", "value5")),
"attribute3", "bad");
checkValidation_IAV(test_element3.validateAttributes(new AttributesImpl(
"attribute3", "value3",
"attribute4", "bad",
"attribute5", "value5")),
"attribute4", "bad");
checkValidation_MRA(test_element3.validateAttributes(new AttributesImpl(
"attribute4", "value4",
"attribute5", "value5")),
"attribute3");
checkValidation_MRA(test_element3.validateAttributes(AttributesImpl.EMPTY_MAP),
"attribute3");
checkValidation_ANA(test_element3.validateAttributesUpdate(new AttributesUpdateImpl(
"bad", "value1", "value1")),
"bad");
checkValidation_ANA(test_element3.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute3", "value3", "value3",
"bad", "bad", "bad")),
"bad");
checkValidation_V(test_element3.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute3", "value3", "value3")));
checkValidation_RRA(test_element3.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute3", "value3", null)),
"attribute3");
checkValidation_V(test_element3.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute3", "value3", "value3",
"attribute4", "value4", "value4",
"attribute5", "value5", "value5")));
checkValidation_IAV(test_element3.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute3", "bad", "bad",
"attribute4", "value4", "value4",
"attribute5", "value5", "value5")),
"attribute3", "bad");
checkValidation_IAV(test_element3.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute3", "value3", "value3",
"attribute4", "bad", "bad",
"attribute5", "value5", "value5")),
"attribute4", "bad");
checkValidation_V(test_element3.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute4", "value4", "value4",
"attribute5", "value5", "value5")));
checkValidation_V(test_element3.validateAttributesUpdate(AttributesUpdateImpl.EMPTY_MAP));
/*
* Test a pattern containing a single required attribute attribute.
*/
SchemaPattern test_element4 = test.child("element4");
checkValidation_IAV(test_element4.validateAttributes(new AttributesImpl(
"attribute6", "xyz")),
"attribute6", "xyz");
checkValidation_IAV(test_element4.validateAttributes(new AttributesImpl(
"attribute6", "axyz")),
"attribute6", "axyz");
checkValidation_IAV(test_element4.validateAttributes(new AttributesImpl(
"attribute6", "xyzb")),
"attribute6", "xyzb");
checkValidation_V(test_element4.validateAttributes(new AttributesImpl(
"attribute6", "axyzb")));
checkValidation_IAV(test_element4.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute6", "xyz", "xyz")),
"attribute6", "xyz");
checkValidation_IAV(test_element4.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute6", "axyz", "axyz")),
"attribute6", "axyz");
checkValidation_IAV(test_element4.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute6", "xyzb", "xyzb")),
"attribute6", "xyzb");
checkValidation_V(test_element4.validateAttributesUpdate(new AttributesUpdateImpl(
"attribute6", "axyzb", "axyzb")));
/*
* Test that the "casting" methods of the result objects returned by the
* validation behave correctly.
*/
AttributeValidationResult example_V = test_element3.validateAttributes(
new AttributesImpl(
"attribute3", "value3"));
AttributeValidationResult example_ANA = test_element3.validateAttributes(
new AttributesImpl(
"attribute3", "value3",
"bad", "bad"));
AttributeValidationResult example_IAV = test_element3.validateAttributes(
new AttributesImpl(
"attribute3", "bad"));
AttributeValidationResult example_MRA = test_element3.validateAttributes(
AttributesImpl.EMPTY_MAP);
AttributeValidationResult example_RRA = test_element3.validateAttributesUpdate(
new AttributesUpdateImpl(