/*
* Geotoolkit - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
* (C) 2009-2011, Geomatys
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotoolkit.filter.binarycomparison;
import java.util.Date;
import org.junit.Test;
import org.opengis.filter.PropertyIsEqualTo;
import org.opengis.filter.PropertyIsGreaterThan;
import org.opengis.filter.PropertyIsGreaterThanOrEqualTo;
import org.opengis.filter.PropertyIsLessThan;
import org.opengis.filter.PropertyIsLessThanOrEqualTo;
import org.opengis.filter.PropertyIsNotEqualTo;
import org.opengis.filter.expression.Literal;
import org.opengis.filter.expression.PropertyName;
import static org.geotoolkit.test.Assert.*;
import static org.geotoolkit.filter.FilterTestConstants.*;
import org.opengis.filter.MatchAction;
/**
*
* @author Johann Sorel (Geomatys)
* @module
*/
public class BinaryComparisonTest extends org.geotoolkit.test.TestBase {
public BinaryComparisonTest() {
}
@Test
public void testIsEqualTo() {
PropertyIsEqualTo filter;
PropertyName property;
Literal rightliteral = FF.literal(RIGHT_GEOMETRY);
Literal falseliteral = FF.literal(WRONG_GEOMETRY);
property = FF.property("testGeometry");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
rightliteral = FF.literal(true);
falseliteral = FF.literal(false);
property = FF.property("testBoolean");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
rightliteral = FF.literal('t');
falseliteral = FF.literal('z');
property = FF.property("testCharacter");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
rightliteral = FF.literal(new Byte("101"));
falseliteral = FF.literal(new Byte("011"));
property = FF.property("testByte");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
rightliteral = FF.literal(101);
falseliteral = FF.literal(103);
property = FF.property("testShort");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testInteger");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testLong");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testFloat");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testDouble");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
rightliteral = FF.literal(DATE);
falseliteral = FF.literal(new Date(DATE.getTime() + 360000)); // Same day
Literal falseliteral2 = FF.literal(new Date(DATE.getTime() + 25*60*60*1000)); // Other day
property = FF.property("date");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1)); // Would be false if we took hours in account, but the filter intentionally ignores hours if a date is java.sql.Date.
filter = FF.equals(property, falseliteral2);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("time");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime1");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime2");
filter = FF.equals(property, rightliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equals(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
assertSerializedEquals(filter); //test serialize
}
@Test
public void testIsGreaterThan() {
PropertyIsGreaterThan filter;
PropertyName property;
Literal aboveLiteral = FF.literal('z');
Literal equalLiteral = FF.literal('t');
Literal underLiteral = FF.literal('c');
property = FF.property("testCharacter");
filter = FF.greater(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(new Byte("111"));
equalLiteral = FF.literal(new Byte("101"));
underLiteral = FF.literal(new Byte("001"));
property = FF.property("testByte");
filter = FF.greater(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(103);
equalLiteral = FF.literal(101);
underLiteral = FF.literal(21);
property = FF.property("testShort");
filter = FF.greater(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testInteger");
filter = FF.greater(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testLong");
filter = FF.greater(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testFloat");
filter = FF.greater(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testDouble");
filter = FF.greater(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(new Date(DATE.getTime()+360000));
equalLiteral = FF.literal(DATE);
underLiteral = FF.literal(new Date(DATE.getTime()-360000));
property = FF.property("date");
filter = FF.greater(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
//test against string dates
Literal aboveStrLiteral = FF.literal("3021-05-25");
Literal underStrLiteral = FF.literal("1850-11-01");
property = FF.property("date");
filter = FF.greater(property,aboveStrLiteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(property,underStrLiteral);
assertTrue(filter.evaluate(CANDIDATE_1));
//ensure the test in mad in primary on dates over string
property = FF.property("date");
filter = FF.greater(aboveStrLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underStrLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("time");
filter = FF.greater(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime1");
filter = FF.greater(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greater(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.greater(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
// property = FF.property("datetime2");
// filter = FF.greater(aboveLiteral,property);
// assertTrue(filter.evaluate(FEATURE_1));
// filter = FF.greater(equalLiteral,property);
// assertFalse(filter.evaluate(FEATURE_1));
// filter = FF.greater(underLiteral,property);
// assertFalse(filter.evaluate(FEATURE_1));
assertSerializedEquals(filter); //test serialize
}
@Test
public void testIsGreaterThanOrEqualTo() {
PropertyIsGreaterThanOrEqualTo filter;
PropertyName property;
Literal aboveLiteral = FF.literal('z');
Literal equalLiteral = FF.literal('t');
Literal underLiteral = FF.literal('c');
property = FF.property("testCharacter");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(new Byte("111"));
equalLiteral = FF.literal(new Byte("101"));
underLiteral = FF.literal(new Byte("001"));
property = FF.property("testByte");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(103);
equalLiteral = FF.literal(101);
underLiteral = FF.literal(21);
property = FF.property("testShort");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testInteger");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testLong");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testFloat");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("testDouble");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(new Date(DATE.getTime()+360000));
equalLiteral = FF.literal(DATE);
underLiteral = FF.literal(new Date(DATE.getTime()-360000));
property = FF.property("date");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("time");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime1");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime2");
filter = FF.greaterOrEqual(aboveLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.greaterOrEqual(underLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
assertSerializedEquals(filter); //test serialize
}
@Test
public void testIsLessThan() {
PropertyIsLessThan filter;
PropertyName property;
Literal aboveLiteral = FF.literal('z');
Literal equalLiteral = FF.literal('t');
Literal underLiteral = FF.literal('c');
property = FF.property("testCharacter");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(new Byte("111"));
equalLiteral = FF.literal(new Byte("101"));
underLiteral = FF.literal(new Byte("001"));
property = FF.property("testByte");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(103);
equalLiteral = FF.literal(101);
underLiteral = FF.literal(21);
property = FF.property("testShort");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testInteger");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testLong");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testFloat");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testDouble");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(new Date(DATE.getTime()+360000));
equalLiteral = FF.literal(DATE);
underLiteral = FF.literal(new Date(DATE.getTime()-360000));
property = FF.property("date");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("time");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime1");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime2");
filter = FF.less(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.less(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
assertSerializedEquals(filter); //test serialize
}
@Test
public void testIsLessThanOrEqualTo() {
PropertyIsLessThanOrEqualTo filter;
PropertyName property;
Literal aboveLiteral = FF.literal('z');
Literal equalLiteral = FF.literal('t');
Literal underLiteral = FF.literal('c');
property = FF.property("testCharacter");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(new Byte("111"));
equalLiteral = FF.literal(new Byte("101"));
underLiteral = FF.literal(new Byte("001"));
property = FF.property("testByte");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(103);
equalLiteral = FF.literal(101);
underLiteral = FF.literal(21);
property = FF.property("testShort");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testInteger");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testLong");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testFloat");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testDouble");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
aboveLiteral = FF.literal(new Date(DATE.getTime()+360000));
equalLiteral = FF.literal(DATE);
underLiteral = FF.literal(new Date(DATE.getTime()-360000));
property = FF.property("date");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("time");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime1");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime2");
filter = FF.lessOrEqual(aboveLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(equalLiteral,property);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.lessOrEqual(underLiteral,property);
assertTrue(filter.evaluate(CANDIDATE_1));
assertSerializedEquals(filter); //test serialize
}
@Test
public void testIsNotEqualTo() {
PropertyIsNotEqualTo filter;
PropertyName property;
Literal rightliteral = FF.literal(RIGHT_GEOMETRY);
Literal falseliteral = FF.literal(WRONG_GEOMETRY);
property = FF.property("testGeometry");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
rightliteral = FF.literal(true);
falseliteral = FF.literal(false);
property = FF.property("testBoolean");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
rightliteral = FF.literal('t');
falseliteral = FF.literal('z');
property = FF.property("testCharacter");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
rightliteral = FF.literal(new Byte("101"));
falseliteral = FF.literal(new Byte("011"));
property = FF.property("testByte");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
rightliteral = FF.literal(101);
falseliteral = FF.literal(103);
property = FF.property("testShort");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testInteger");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testLong");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testFloat");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("testDouble");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
rightliteral = FF.literal(DATE);
falseliteral = FF.literal(new Date(DATE.getTime()+360000));
Literal falseliteral2 = FF.literal(new Date(DATE.getTime()+ 25*60*60*1000));
property = FF.property("date");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertFalse(filter.evaluate(CANDIDATE_1)); // Would be false if we took hours in account, but the filter intentionally ignores hours if a date is java.sql.Date.
filter = FF.notEqual(property, falseliteral2);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("time");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime1");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
property = FF.property("datetime2");
filter = FF.notEqual(property, rightliteral);
assertFalse(filter.evaluate(CANDIDATE_1));
filter = FF.notEqual(property, falseliteral);
assertTrue(filter.evaluate(CANDIDATE_1));
assertSerializedEquals(filter); //test serialize
}
@Test
public void testMatchCase() {
PropertyIsEqualTo filter;
PropertyName property;
Literal rightliteral = FF.literal("test STRING data");
property = FF.property("testString");
filter = FF.equal(property, rightliteral, false, MatchAction.ANY);
assertTrue(filter.evaluate(CANDIDATE_1));
filter = FF.equal(property, rightliteral, true, MatchAction.ANY);
assertFalse(filter.evaluate(CANDIDATE_1));
assertSerializedEquals(filter); //test serialize
}
}