/*
***************************************************************************************
* 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.supportregression.subscriber;
import com.espertech.esper.client.EPStatement;
import com.espertech.esper.client.scopetest.EPAssertionUtil;
import com.espertech.esper.collection.UniformPair;
import java.util.ArrayList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class SupportSubscriberRowByRowFullBase extends SupportSubscriberBase
{
private final ArrayList<UniformPair<Integer>> indicateStart = new ArrayList<UniformPair<Integer>>();
private final ArrayList<Object> indicateEnd = new ArrayList<Object>();
private final ArrayList<Object[]> indicateIStream = new ArrayList<Object[]>();
private final ArrayList<Object[]> indicateRStream = new ArrayList<Object[]>();
public SupportSubscriberRowByRowFullBase(boolean requiresStatementDelivery) {
super(requiresStatementDelivery);
}
protected void addUpdateStart(int lengthIStream, int lengthRStream)
{
indicateStart.add(new UniformPair<Integer>(lengthIStream, lengthRStream));
}
protected void addUpdate(Object[] values)
{
indicateIStream.add(values);
}
protected void addUpdateRStream(Object[] values)
{
indicateRStream.add(values);
}
protected void addUpdateEnd()
{
indicateEnd.add(this);
}
protected void addUpdateStart(EPStatement statement, int lengthIStream, int lengthRStream)
{
indicateStart.add(new UniformPair<Integer>(lengthIStream, lengthRStream));
addStmtIndication(statement);
}
protected void addUpdate(EPStatement statement, Object[] values)
{
indicateIStream.add(values);
addStmtIndication(statement);
}
protected void addUpdateRStream(EPStatement statement, Object[] values)
{
indicateRStream.add(values);
addStmtIndication(statement);
}
protected void addUpdateEnd(EPStatement statement)
{
indicateEnd.add(this);
addStmtIndication(statement);
}
public void reset() {
indicateStart.clear();
indicateIStream.clear();
indicateRStream.clear();
indicateEnd.clear();
resetStmts();
}
public void assertNoneReceived() {
assertTrue(indicateStart.isEmpty());
assertTrue(indicateIStream.isEmpty());
assertTrue(indicateRStream.isEmpty());
assertTrue(indicateEnd.isEmpty());
}
public void assertOneReceivedAndReset(EPStatement stmt, int expectedLenIStream, int expectedLenRStream, Object[][] expectedIStream, Object[][] expectedRStream) {
int stmtCount = 2 + expectedLenIStream + expectedLenRStream;
assertStmtMultipleReceived(stmt, stmtCount);
assertEquals(1, indicateStart.size());
UniformPair<Integer> pairLength = indicateStart.get(0);
assertEquals(expectedLenIStream, (int) pairLength.getFirst());
assertEquals(expectedLenRStream, (int) pairLength.getSecond());
EPAssertionUtil.assertEqualsExactOrder(expectedIStream, indicateIStream);
EPAssertionUtil.assertEqualsExactOrder(expectedRStream, indicateRStream);
assertEquals(1, indicateEnd.size());
reset();
}
}