PropertyName id = factory.property("id");
PropertyName name = factory.property("name");
PropertyName geom = factory.property("geom");
// check nullFilter
PropertyIsNull nullFilter = factory.isNull(id);
names = DataUtilities.attributeNames(nullFilter);
assertEquals(1, names.length);
assertEquals("id", names[0]);
PropertyIsEqualTo equal = factory.equals(name, id);
names = DataUtilities.attributeNames(equal);
assertEquals(2, names.length);
List list = Arrays.asList(names);
assertTrue(list.contains("name"));
assertTrue(list.contains("id"));
Function fnCall = factory.function("Max", new Expression[] { id, name });
PropertyIsLike fn = factory.like(fnCall, "does-not-matter");
names = DataUtilities.attributeNames(fn);
list = Arrays.asList(names);
assertTrue(list.contains("name"));
assertTrue(list.contains("id"));
PropertyIsBetween between = factory.between(name, id, geom);
names = DataUtilities.attributeNames(between);
assertEquals(3, names.length);
list = Arrays.asList(names);
assertTrue(list.contains("name"));
assertTrue(list.contains("id"));
assertTrue(list.contains("geom"));
// check logic filter
PropertyIsNull geomNull = factory.isNull(geom);
names = DataUtilities.attributeNames(factory.and(geomNull, equal));
assertEquals(3, names.length);
list = Arrays.asList(names);
assertTrue(list.contains("name"));
assertTrue(list.contains("id"));