/*
* *************************************************************************************
* 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.regression.pattern;
import com.espertech.esper.client.soda.*;
import com.espertech.esper.regression.support.*;
import com.espertech.esper.support.bean.SupportBeanConstants;
import com.espertech.esper.util.SerializableObjectCopier;
import junit.framework.TestCase;
public class TestTimerWithinOrMaxGuard extends TestCase implements SupportBeanConstants
{
public void testOp() throws Exception
{
EventCollection events = EventCollectionFactory.getEventSetOne(0, 1000);
CaseList testCaseList = new CaseList();
EventExpressionCase testCase = null;
testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(id=\"B1\") where timer:withinmax(2 sec, 100)");
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(id=\"B1\") where timer:withinmax(2001 msec, 1)");
testCase.add("B1", "b", events.getEvent("B1"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(id=\"B1\") where timer:withinmax(1999 msec, 10)");
testCaseList.addTest(testCase);
String text = "select * from pattern [b=" + EVENT_B_CLASS + "(id = \"B3\") where timer:withinmax(10.001d, 1)]";
EPStatementObjectModel model = new EPStatementObjectModel();
model.setSelectClause(SelectClause.createWildcard());
model = (EPStatementObjectModel) SerializableObjectCopier.copy(model);
Expression filter = Expressions.eq("id", "B3");
PatternExpr pattern = Patterns.timerWithinMax(10.001, 1, Patterns.filter(Filter.create(EVENT_B_CLASS, filter), "b"));
model.setFromClause(FromClause.create(PatternStream.create(pattern)));
assertEquals(text, model.toEPL());
testCase = new EventExpressionCase(model);
testCase.add("B3", "b", events.getEvent("B3"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:withinmax(4.001, 0)");
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:withinmax(4.001, 1)");
testCase.add("B1", "b", events.getEvent("B1"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:withinmax(4.001, 2)");
testCase.add("B1", "b", events.getEvent("B1"));
testCase.add("B2", "b", events.getEvent("B2"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + " where timer:withinmax(2.001, 4)");
testCase.add("B1", "b", events.getEvent("B1"));
testCase.add("B2", "b", events.getEvent("B2"));
testCase.add("B3", "b", events.getEvent("B3"));
testCaseList.addTest(testCase);
// Note how every restarts the max
testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " where timer:withinmax(2001 msec, 2))");
testCase.add("B1", "b", events.getEvent("B1"));
testCase.add("B2", "b", events.getEvent("B2"));
testCase.add("B3", "b", events.getEvent("B3"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " where timer:withinmax(2001 msec, 3))");
testCase.add("B1", "b", events.getEvent("B1"));
testCase.add("B2", "b", events.getEvent("B2"));
testCase.add("B3", "b", events.getEvent("B3"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " where timer:withinmax(2001 msec, 1))");
testCase.add("B1", "b", events.getEvent("B1"));
testCase.add("B2", "b", events.getEvent("B2"));
testCase.add("B3", "b", events.getEvent("B3"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " where timer:withinmax(2001 msec, 0))");
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:withinmax(4.001, 1)");
testCase.add("B1", "b", events.getEvent("B1"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:withinmax(4.001, 2)");
testCase.add("B1", "b", events.getEvent("B1"));
testCase.add("B2", "b", events.getEvent("B2"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + " -> d=" + EVENT_D_CLASS + " where timer:withinmax(4000 msec, 1)");
testCase.add("D1", "b", events.getEvent("B2"), "d", events.getEvent("D1"));
testCase.add("D3", "b", events.getEvent("B3"), "d", events.getEvent("D3"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() -> every d=" + EVENT_D_CLASS + " where timer:withinmax(4000 msec, 1)");
testCase.add("D1", "b", events.getEvent("B1"), "d", events.getEvent("D1"));
testCase.add("D1", "b", events.getEvent("B2"), "d", events.getEvent("D1"));
testCase.add("D2", "b", events.getEvent("B1"), "d", events.getEvent("D2"));
testCase.add("D2", "b", events.getEvent("B2"), "d", events.getEvent("D2"));
testCase.add("D3", "b", events.getEvent("B1"), "d", events.getEvent("D3"));
testCase.add("D3", "b", events.getEvent("B2"), "d", events.getEvent("D3"));
testCase.add("D3", "b", events.getEvent("B3"), "d", events.getEvent("D3"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() -> (every d=" + EVENT_D_CLASS + ") where timer:withinmax(1 day, 3)");
testCase.add("D1", "b", events.getEvent("B1"), "d", events.getEvent("D1"));
testCase.add("D1", "b", events.getEvent("B2"), "d", events.getEvent("D1"));
testCase.add("D2", "b", events.getEvent("B1"), "d", events.getEvent("D2"));
testCase.add("D2", "b", events.getEvent("B2"), "d", events.getEvent("D2"));
testCase.add("D3", "b", events.getEvent("B1"), "d", events.getEvent("D3"));
testCase.add("D3", "b", events.getEvent("B2"), "d", events.getEvent("D3"));
testCase.add("D3", "b", events.getEvent("B3"), "d", events.getEvent("D3"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() -> (every d=" + EVENT_D_CLASS + ") where timer:withinmax(1 day, 2)");
testCase.add("D1", "b", events.getEvent("B1"), "d", events.getEvent("D1"));
testCase.add("D1", "b", events.getEvent("B2"), "d", events.getEvent("D1"));
testCase.add("D2", "b", events.getEvent("B1"), "d", events.getEvent("D2"));
testCase.add("D2", "b", events.getEvent("B2"), "d", events.getEvent("D2"));
testCase.add("D3", "b", events.getEvent("B3"), "d", events.getEvent("D3"));
testCaseList.addTest(testCase);
testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() -> (every d=" + EVENT_D_CLASS + ") where timer:withinmax(1 day, 1)");
testCase.add("D1", "b", events.getEvent("B1"), "d", events.getEvent("D1"));
testCase.add("D1", "b", events.getEvent("B2"), "d", events.getEvent("D1"));
testCase.add("D3", "b", events.getEvent("B3"), "d", events.getEvent("D3"));
testCaseList.addTest(testCase);
PatternTestHarness util = new PatternTestHarness(events, testCaseList);
util.runTest();
}
}