use of org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.ListRange in project Smack by igniterealtime.
the class DataValidationTest method testRange.
@Test
public void testRange() throws XmlPullParserException, IOException {
ValidateElement dv = new RangeValidateElement("xs:string", "min-val", "max-val");
ListRange listRange = new ListRange(111L, 999L);
dv.setListRange(listRange);
assertNotNull(dv.toXML());
String output = dv.toXML().toString();
assertEquals(TEST_OUTPUT_RANGE, output);
XmlPullParser parser = getParser(output);
dv = DataValidationProvider.parse(parser);
assertNotNull(dv);
assertEquals("xs:string", dv.getDatatype());
assertTrue(dv instanceof RangeValidateElement);
RangeValidateElement rdv = (RangeValidateElement) dv;
assertEquals("min-val", rdv.getMin());
assertEquals("max-val", rdv.getMax());
assertNotNull(rdv.getListRange());
assertEquals(Long.valueOf(111), rdv.getListRange().getMin());
assertEquals(999, rdv.getListRange().getMax().intValue());
assertNotNull(dv.toXML());
output = dv.toXML().toString();
assertEquals(TEST_OUTPUT_RANGE, output);
}
use of org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.ListRange in project Smack by igniterealtime.
the class DataValidationHelperTest method testCheckConsistencyFormFieldBasicValidateElement.
@Test
public void testCheckConsistencyFormFieldBasicValidateElement() {
FormField field = new FormField("var");
field.setType(FormField.Type.jid_single);
BasicValidateElement element = new BasicValidateElement(null);
try {
element.checkConsistency(field);
fail("No correct check on consistency");
} catch (ValidationConsistencyException e) {
assertEquals("Field type 'jid-single' is not consistent with validation method 'basic'.", e.getMessage());
}
try {
new ListRange(-1L, 1L);
fail("No correct check on consistency");
} catch (IllegalArgumentException e) {
assertEquals("unsigned 32-bit integers can't be negative", e.getMessage());
}
element.setListRange(new ListRange(10L, 100L));
try {
element.checkConsistency(field);
fail("No correct check on consistency");
} catch (ValidationConsistencyException e) {
assertEquals("Field type is not of type 'list-multi' while a 'list-range' is defined.", e.getMessage());
}
field.setType(FormField.Type.list_multi);
try {
element.checkConsistency(field);
} catch (ValidationConsistencyException e) {
fail("No correct check on consistency");
}
}
use of org.jivesoftware.smackx.xdatavalidation.packet.ValidateElement.ListRange in project Smack by igniterealtime.
the class DataValidationProvider method parse.
public static ValidateElement parse(XmlPullParser parser) throws XmlPullParserException, IOException {
final int initialDepth = parser.getDepth();
final String dataType = parser.getAttributeValue("", "datatype");
ValidateElement dataValidation = null;
ListRange listRange = null;
outerloop: while (true) {
int eventType = parser.next();
switch(eventType) {
case XmlPullParser.START_TAG:
switch(parser.getName()) {
case OpenValidateElement.METHOD:
dataValidation = new OpenValidateElement(dataType);
break;
case BasicValidateElement.METHOD:
dataValidation = new BasicValidateElement(dataType);
break;
case RangeValidateElement.METHOD:
dataValidation = new RangeValidateElement(dataType, parser.getAttributeValue("", "min"), parser.getAttributeValue("", "max"));
break;
case RegexValidateElement.METHOD:
dataValidation = new RegexValidateElement(dataType, parser.nextText());
break;
case ListRange.ELEMENT:
Long min = ParserUtils.getLongAttribute(parser, "min");
Long max = ParserUtils.getLongAttribute(parser, "max");
if (min != null || max != null) {
listRange = new ListRange(min, max);
} else {
LOGGER.fine("Ignoring list-range element without min or max attribute");
}
break;
default:
break;
}
break;
case XmlPullParser.END_TAG:
if (parser.getDepth() == initialDepth) {
if (dataValidation == null) {
// XEP-122 ยง 3.2 states that "If no validation method is specified,
// form processors MUST assume <basic/> validation."
dataValidation = new BasicValidateElement(dataType);
}
dataValidation.setListRange(listRange);
break outerloop;
}
break;
}
}
return dataValidation;
}
Aggregations