/* * ************************************************************************************* * 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.epl.view; import com.espertech.esper.support.epl.SupportExprEvaluator; import com.espertech.esper.support.event.SupportEventBeanFactory; import com.espertech.esper.support.view.SupportMapView; import com.espertech.esper.client.EventBean; import com.espertech.esper.epl.view.FilterExprView; import junit.framework.TestCase; public class TestFilterExprView extends TestCase { private FilterExprView filterExprViewAdapter; private SupportMapView childView; public void setUp() { filterExprViewAdapter = new FilterExprView(new SupportExprEvaluator(), null); childView = new SupportMapView(); filterExprViewAdapter.addView(childView); } public void testUpdate() { // Test all evaluate to true (ie. all pass the filter) EventBean[] oldEvents = SupportEventBeanFactory.makeEvents(new boolean[] {true, true}); EventBean[] newEvents = SupportEventBeanFactory.makeEvents(new boolean[] {true, true}); filterExprViewAdapter.update(newEvents, oldEvents); assertEquals(newEvents, childView.getLastNewData()); assertEquals(oldEvents, childView.getLastOldData()); childView.reset(); // Test all evaluate to false (ie. none pass the filter) oldEvents = SupportEventBeanFactory.makeEvents(new boolean[] {false, false}); newEvents = SupportEventBeanFactory.makeEvents(new boolean[] {false, false}); filterExprViewAdapter.update(newEvents, oldEvents); assertFalse(childView.getAndClearIsInvoked()); // Should not be invoked if no events assertNull(childView.getLastNewData()); assertNull(childView.getLastOldData()); // Test some pass through the filter oldEvents = SupportEventBeanFactory.makeEvents(new boolean[] {false, true, false}); newEvents = SupportEventBeanFactory.makeEvents(new boolean[] {true, false, true}); filterExprViewAdapter.update(newEvents, oldEvents); assertEquals(2, childView.getLastNewData().length); assertSame(newEvents[0], childView.getLastNewData()[0]); assertSame(newEvents[2], childView.getLastNewData()[1]); assertEquals(1, childView.getLastOldData().length); assertSame(oldEvents[1], childView.getLastOldData()[0]); } }