/* *************************************************************************************** * Copyright (C) 2006 EsperTech, Inc. All rights reserved. * * http://www.espertech.com/esper * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * *************************************************************************************** */ package com.espertech.esper.filter; import junit.framework.TestCase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Arrays; import java.util.SortedSet; import java.util.TreeSet; public class TestFilterSpecParamComparator extends TestCase { private FilterSpecParamComparator comparator; public void setUp() { comparator = new FilterSpecParamComparator(); } public void testCompareOneByOne() { FilterOperator param1 = FilterOperator.EQUAL; FilterOperator param4 = FilterOperator.RANGE_CLOSED; FilterOperator param7 = FilterOperator.GREATER; FilterOperator param8 = FilterOperator.NOT_EQUAL; FilterOperator param9 = FilterOperator.IN_LIST_OF_VALUES; FilterOperator param10 = FilterOperator.NOT_RANGE_CLOSED; FilterOperator param11 = FilterOperator.NOT_IN_LIST_OF_VALUES; // Compare same comparison types assertTrue(comparator.compare(param8, param1) == 1); assertTrue(comparator.compare(param1, param8) == -1); assertTrue(comparator.compare(param4, param4) == 0); // Compare across comparison types assertTrue(comparator.compare(param7, param1) == 1); assertTrue(comparator.compare(param1, param7) == -1); assertTrue(comparator.compare(param4, param1) == 1); assertTrue(comparator.compare(param1, param4) == -1); // 'in' is before all but after equals assertTrue(comparator.compare(param9, param4) == -1); assertTrue(comparator.compare(param9, param9) == 0); assertTrue(comparator.compare(param9, param1) == 1); // inverted range is lower rank assertTrue(comparator.compare(param10, param1) == 1); assertTrue(comparator.compare(param10, param8) == -1); // not-in is lower rank assertTrue(comparator.compare(param11, param1) == 1); assertTrue(comparator.compare(param11, param8) == -1); } public void testCompareAll() { SortedSet<FilterOperator> sorted = new TreeSet<FilterOperator>(comparator); for (int i = 0; i < FilterOperator.values().length; i++) { FilterOperator op = FilterOperator.values()[i]; sorted.add(op); } assertEquals(FilterOperator.EQUAL, sorted.first()); assertEquals(FilterOperator.BOOLEAN_EXPRESSION, sorted.last()); assertEquals("[EQUAL, IS, IN_LIST_OF_VALUES, ADVANCED_INDEX, RANGE_OPEN, RANGE_HALF_OPEN, RANGE_HALF_CLOSED, RANGE_CLOSED, LESS, LESS_OR_EQUAL, GREATER_OR_EQUAL, GREATER, NOT_RANGE_CLOSED, NOT_RANGE_HALF_CLOSED, NOT_RANGE_HALF_OPEN, NOT_RANGE_OPEN, NOT_IN_LIST_OF_VALUES, NOT_EQUAL, IS_NOT, BOOLEAN_EXPRESSION]", sorted.toString()); log.debug(".testCompareAll " + Arrays.toString(sorted.toArray())); } private static final Logger log = LoggerFactory.getLogger(TestFilterSpecParamComparator.class); }