final Object parsed = parse(WFS.Query);
assertTrue((parsed == null) ? "null" : parsed.getClass().toString(),
parsed instanceof QueryType);
QueryType query = (QueryType) parsed;
List typeNames = query.getTypeName();
assertEquals(1, typeNames.size());
QName typeName = new QName("http://www.geotools.org/test", "testType1");
Object parsedName = typeNames.get(0);
assertEquals(typeName, parsedName);
assertEquals("testHandle", query.getHandle());
assertEquals("HEAD", query.getFeatureVersion());
assertEquals("urn:x-ogc:def:crs:EPSG:6.11.2:4326", query.getSrsName().toString());
assertEquals(2, query.getPropertyName().size());
assertEquals(2, query.getXlinkPropertyName().size());
assertEquals(2, query.getFunction().size());
assertEquals("property1", query.getPropertyName().get(0));
assertEquals("property2", query.getPropertyName().get(1));
XlinkPropertyNameType xlink;
xlink = (XlinkPropertyNameType) query.getXlinkPropertyName().get(0);
assertEquals("gt:propertyA/gt:propertyB", xlink.getValue());
assertEquals("*", xlink.getTraverseXlinkDepth());
assertEquals(BigInteger.valueOf(10), xlink.getTraverseXlinkExpiry());
xlink = (XlinkPropertyNameType) query.getXlinkPropertyName().get(1);
assertEquals("gt:propertyC/gt:propertyD", xlink.getValue());
assertEquals("1", xlink.getTraverseXlinkDepth());
assertNull(xlink.getTraverseXlinkExpiry());
Function function;
function = (Function) query.getFunction().get(0);
assertNotNull(function);
assertEquals("max", function.getName());
function = (Function) query.getFunction().get(1);
assertNotNull(function);
assertEquals("min", function.getName());
assertTrue(query.getFilter() instanceof Id);
assertEquals(1, query.getSortBy().size());
assertTrue(query.getSortBy().get(0) instanceof SortBy);
}