/* * ************************************************************************************* * Copyright (C) 2008 EsperTech, Inc. All rights reserved. * * http://esper.codehaus.org * * 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.view.ext; import com.espertech.esper.client.EventBean; import com.espertech.esper.client.scopetest.EPAssertionUtil; import com.espertech.esper.collection.MultiKeyUntyped; import com.espertech.esper.support.event.EventFactoryHelper; import com.espertech.esper.util.MultiKeyCastingComparator; import com.espertech.esper.util.MultiKeyComparator; import junit.framework.TestCase; import java.util.*; public class TestSortWindowIterator extends TestCase { private Map<String, EventBean> events; private SortedMap<Object, Object> testMap; private Comparator<Object> comparator; public void setUp() { events = EventFactoryHelper.makeEventMap(new String[] {"a", "b", "c", "d", "f", "g"}); comparator = new MultiKeyCastingComparator(new MultiKeyComparator(new boolean[] {false})); testMap = new TreeMap<Object, Object>(comparator); } public void testEmpty() { Iterator<EventBean> it = new SortWindowIterator(testMap); EPAssertionUtil.assertEqualsExactOrder(null, it); } public void testOneElement() { LinkedList<EventBean> list = new LinkedList<EventBean>(); list.add(events.get("a")); MultiKeyUntyped key = new MultiKeyUntyped(new Object[] {"akey"}); testMap.put(key, list); Iterator<EventBean> it = new SortWindowIterator(testMap); EPAssertionUtil.assertEqualsExactOrder(new EventBean[]{events.get("a")}, it); } public void testTwoInOneEntryElement() { LinkedList<EventBean> list = new LinkedList<EventBean>(); list.add(events.get("a")); list.add(events.get("b")); MultiKeyUntyped key = new MultiKeyUntyped(new Object[] {"keyA"}); testMap.put(key, list); Iterator<EventBean> it = new SortWindowIterator(testMap); EPAssertionUtil.assertEqualsExactOrder(new EventBean[]{events.get("a"), events.get("b")}, it); } public void testTwoSeparateEntryElement() { LinkedList<EventBean> list1 = new LinkedList<EventBean>(); list1.add(events.get("a")); MultiKeyUntyped keyB = new MultiKeyUntyped(new Object[] {"keyB"}); testMap.put(keyB, list1); LinkedList<EventBean> list2 = new LinkedList<EventBean>(); list2.add(events.get("b")); MultiKeyUntyped keyA = new MultiKeyUntyped(new Object[] {"keyA"}); testMap.put(keyA, list2); // Actually before list1 Iterator<EventBean> it = new SortWindowIterator(testMap); EPAssertionUtil.assertEqualsExactOrder(new EventBean[]{events.get("b"), events.get("a")}, it); } public void testTwoByTwoEntryElement() { LinkedList<EventBean> list1 = new LinkedList<EventBean>(); list1.add(events.get("a")); list1.add(events.get("b")); MultiKeyUntyped keyB = new MultiKeyUntyped(new Object[] {"keyB"}); testMap.put(keyB, list1); LinkedList<EventBean> list2 = new LinkedList<EventBean>(); list2.add(events.get("c")); list2.add(events.get("d")); MultiKeyUntyped keyC = new MultiKeyUntyped(new Object[] {"keyC"}); testMap.put(keyC, list2); Iterator<EventBean> it = new SortWindowIterator(testMap); EPAssertionUtil.assertEqualsExactOrder(new EventBean[]{events.get("a"), events.get("b"), events.get("c"), events.get("d")}, it); } public void testMixedEntryElement() { LinkedList<EventBean> list1 = new LinkedList<EventBean>(); list1.add(events.get("a")); MultiKeyUntyped keyA = new MultiKeyUntyped(new Object[] {"keyA"}); testMap.put(keyA, list1); LinkedList<EventBean> list2 = new LinkedList<EventBean>(); list2.add(events.get("c")); list2.add(events.get("d")); MultiKeyUntyped keyB = new MultiKeyUntyped(new Object[] {"keyB"}); testMap.put(keyB, list2); LinkedList<EventBean> list3 = new LinkedList<EventBean>(); list3.add(events.get("e")); list3.add(events.get("f")); list3.add(events.get("g")); MultiKeyUntyped keyC = new MultiKeyUntyped(new Object[] {"keyC"}); testMap.put(keyC, list3); Iterator<EventBean> it = new SortWindowIterator(testMap); EPAssertionUtil.assertEqualsExactOrder(new EventBean[]{events.get("a"), events.get("c"), events.get("d"), events.get("e"), events.get("f"), events.get("g")}, it); } }