@Test
public void testQueryCapabilities() throws Exception {
final String typeName = testData.getTempTableName();
SimpleFeatureSource fs = store.getFeatureSource(typeName);
QueryCapabilities queryCapabilities = fs.getQueryCapabilities();
assertFalse(queryCapabilities.isOffsetSupported());
assertTrue(queryCapabilities.isReliableFIDSupported());
assertFalse(queryCapabilities.supportsSorting(new SortBy[] { NATURAL_ORDER }));
assertFalse(queryCapabilities.supportsSorting(new SortBy[] { REVERSE_ORDER }));
assertFalse(queryCapabilities.supportsSorting(new SortBy[] { ff.sort("nonExistent",
ASCENDING) }));
assertFalse(queryCapabilities.supportsSorting(new SortBy[] { ff.sort("nonExistent",
ASCENDING) }));
// no sorting on geometry columns!
String geometryAttribute = fs.getSchema().getGeometryDescriptor().getLocalName();
assertFalse(queryCapabilities.supportsSorting(new SortBy[] { ff.sort(geometryAttribute,
ASCENDING) }));
SortBy[] supported = { ff.sort("INT32_COL", ASCENDING),//
ff.sort("INT32_COL", DESCENDING),//
ff.sort("INT16_COL", ASCENDING),//
ff.sort("INT16_COL", DESCENDING),//
ff.sort("FLOAT32_COL", ASCENDING),//
ff.sort("FLOAT32_COL", DESCENDING),//
ff.sort("FLOAT64_COL", ASCENDING),//
ff.sort("FLOAT64_COL", DESCENDING),//
ff.sort("STRING_COL", ASCENDING),//
ff.sort("STRING_COL", DESCENDING),//
ff.sort("NSTRING_COL", ASCENDING),//
ff.sort("NSTRING_COL", DESCENDING),//
ff.sort("DATE_COL", ASCENDING),//
ff.sort("DATE_COL", ASCENDING) };
assertTrue(queryCapabilities.supportsSorting(supported));
}