/*
***************************************************************************************
* 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.join.base;
import com.espertech.esper.client.EventBean;
import com.espertech.esper.supportunit.epl.SupportJoinExecutionStrategy;
import com.espertech.esper.supportunit.event.SupportEventBeanFactory;
import com.espertech.esper.view.internal.BufferView;
import junit.framework.TestCase;
public class TestJoinExecStrategyDispatchable extends TestCase {
private JoinExecStrategyDispatchable dispatchable;
private BufferView bufferViewOne;
private BufferView bufferViewTwo;
private SupportJoinExecutionStrategy joinExecutionStrategy;
public void setUp() {
bufferViewOne = new BufferView(0);
bufferViewTwo = new BufferView(1);
joinExecutionStrategy = new SupportJoinExecutionStrategy();
this.dispatchable = new JoinExecStrategyDispatchable(joinExecutionStrategy, 2);
bufferViewOne.setObserver(dispatchable);
bufferViewTwo.setObserver(dispatchable);
}
public void testFlow() {
EventBean[] oldDataOne = SupportEventBeanFactory.makeEvents(new String[]{"a"});
EventBean[] newDataOne = SupportEventBeanFactory.makeEvents(new String[]{"b"});
EventBean[] oldDataTwo = SupportEventBeanFactory.makeEvents(new String[]{"c"});
EventBean[] newDataTwo = SupportEventBeanFactory.makeEvents(new String[]{"d"});
bufferViewOne.update(newDataOne, oldDataOne);
dispatchable.execute();
assertEquals(1, joinExecutionStrategy.getLastNewDataPerStream()[0].length);
assertSame(newDataOne[0], joinExecutionStrategy.getLastNewDataPerStream()[0][0]);
assertSame(oldDataOne[0], joinExecutionStrategy.getLastOldDataPerStream()[0][0]);
assertNull(joinExecutionStrategy.getLastNewDataPerStream()[1]);
assertNull(joinExecutionStrategy.getLastOldDataPerStream()[1]);
bufferViewOne.update(newDataTwo, oldDataTwo);
bufferViewTwo.update(newDataOne, oldDataOne);
dispatchable.execute();
assertEquals(1, joinExecutionStrategy.getLastNewDataPerStream()[0].length);
assertEquals(1, joinExecutionStrategy.getLastNewDataPerStream()[1].length);
assertSame(newDataTwo[0], joinExecutionStrategy.getLastNewDataPerStream()[0][0]);
assertSame(oldDataTwo[0], joinExecutionStrategy.getLastOldDataPerStream()[0][0]);
assertSame(newDataOne[0], joinExecutionStrategy.getLastNewDataPerStream()[1][0]);
assertSame(oldDataOne[0], joinExecutionStrategy.getLastOldDataPerStream()[1][0]);
}
}