/*
***************************************************************************************
* 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.epl.core;
import com.espertech.esper.client.Configuration;
import com.espertech.esper.client.EventBean;
import com.espertech.esper.collection.MultiKey;
import com.espertech.esper.collection.UniformPair;
import com.espertech.esper.core.service.StatementContext;
import com.espertech.esper.core.service.StatementEventTypeRefImpl;
import com.espertech.esper.core.support.SupportEventAdapterService;
import com.espertech.esper.core.support.SupportStatementContextFactory;
import com.espertech.esper.epl.core.eval.SelectExprStreamDesc;
import com.espertech.esper.epl.table.mgmt.TableServiceImpl;
import com.espertech.esper.supportunit.bean.SupportBean;
import com.espertech.esper.supportunit.epl.SupportSelectExprFactory;
import com.espertech.esper.supportunit.epl.SupportStreamTypeSvc1Stream;
import com.espertech.esper.supportunit.event.SupportEventBeanFactory;
import junit.framework.TestCase;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
public class TestResultSetProcessorSimple extends TestCase {
private ResultSetProcessorSimple outputProcessorAll;
private SelectExprProcessor selectExprProcessor;
private OrderByProcessor orderByProcessor;
public void setUp() throws Exception {
SelectExprEventTypeRegistry selectExprEventTypeRegistry = new SelectExprEventTypeRegistry("abc", new StatementEventTypeRefImpl());
StatementContext statementContext = SupportStatementContextFactory.makeContext();
SelectExprProcessorHelper factory = new SelectExprProcessorHelper(Collections.<Integer>emptyList(), SupportSelectExprFactory.makeNoAggregateSelectList(), Collections.<SelectExprStreamDesc>emptyList(), null, null, false, new SupportStreamTypeSvc1Stream(), SupportEventAdapterService.getService(), null, selectExprEventTypeRegistry, statementContext.getEngineImportService(), 1, "stmtname", null, new Configuration(), null, new TableServiceImpl(), null);
selectExprProcessor = factory.getEvaluator();
orderByProcessor = null;
ResultSetProcessorSimpleFactory prototype = new ResultSetProcessorSimpleFactory(selectExprProcessor, null, true, null, false, null, 1);
outputProcessorAll = (ResultSetProcessorSimple) prototype.instantiate(null, null, null);
}
public void testUpdateAll() throws Exception {
assertNull(ResultSetProcessorUtil.getSelectEventsNoHavingWithOrderBy(selectExprProcessor, orderByProcessor, (EventBean[]) null, true, false, null));
EventBean testEvent1 = makeEvent(10, 5, 6);
EventBean testEvent2 = makeEvent(11, 6, 7);
EventBean[] newData = new EventBean[]{testEvent1, testEvent2};
EventBean testEvent3 = makeEvent(20, 1, 2);
EventBean testEvent4 = makeEvent(21, 3, 4);
EventBean[] oldData = new EventBean[]{testEvent3, testEvent4};
UniformPair<EventBean[]> result = outputProcessorAll.processViewResult(newData, oldData, false);
EventBean[] newEvents = result.getFirst();
EventBean[] oldEvents = result.getSecond();
assertEquals(2, newEvents.length);
assertEquals(10d, newEvents[0].get("resultOne"));
assertEquals(30, newEvents[0].get("resultTwo"));
assertEquals(11d, newEvents[1].get("resultOne"));
assertEquals(42, newEvents[1].get("resultTwo"));
assertEquals(2, oldEvents.length);
assertEquals(20d, oldEvents[0].get("resultOne"));
assertEquals(2, oldEvents[0].get("resultTwo"));
assertEquals(21d, oldEvents[1].get("resultOne"));
assertEquals(12, oldEvents[1].get("resultTwo"));
}
public void testProcessAll() throws Exception {
assertNull(ResultSetProcessorUtil.getSelectJoinEventsNoHavingWithOrderBy(selectExprProcessor, orderByProcessor, new HashSet<MultiKey<EventBean>>(), true, false, null));
EventBean testEvent1 = makeEvent(10, 5, 6);
EventBean testEvent2 = makeEvent(11, 6, 7);
Set<MultiKey<EventBean>> newEventSet = makeEventSet(testEvent1);
newEventSet.add(new MultiKey<EventBean>(new EventBean[]{testEvent2}));
EventBean testEvent3 = makeEvent(20, 1, 2);
EventBean testEvent4 = makeEvent(21, 3, 4);
Set<MultiKey<EventBean>> oldEventSet = makeEventSet(testEvent3);
oldEventSet.add(new MultiKey<EventBean>(new EventBean[]{testEvent4}));
UniformPair<EventBean[]> result = outputProcessorAll.processJoinResult(newEventSet, oldEventSet, false);
EventBean[] newEvents = result.getFirst();
EventBean[] oldEvents = result.getSecond();
assertEquals(2, newEvents.length);
assertEquals(10d, newEvents[0].get("resultOne"));
assertEquals(30, newEvents[0].get("resultTwo"));
assertEquals(11d, newEvents[1].get("resultOne"));
assertEquals(42, newEvents[1].get("resultTwo"));
assertEquals(2, oldEvents.length);
assertEquals(20d, oldEvents[0].get("resultOne"));
assertEquals(2, oldEvents[0].get("resultTwo"));
assertEquals(21d, oldEvents[1].get("resultOne"));
assertEquals(12, oldEvents[1].get("resultTwo"));
}
private Set<MultiKey<EventBean>> makeEventSet(EventBean theEvent) {
Set<MultiKey<EventBean>> result = new LinkedHashSet<MultiKey<EventBean>>();
result.add(new MultiKey<EventBean>(new EventBean[]{theEvent}));
return result;
}
private EventBean makeEvent(double doubleBoxed, int intBoxed, int intPrimitive) {
SupportBean bean = new SupportBean();
bean.setDoubleBoxed(doubleBoxed);
bean.setIntBoxed(intBoxed);
bean.setIntPrimitive(intPrimitive);
return SupportEventBeanFactory.createObject(bean);
}
}