package org.marketcetera.marketdata.marketcetera;
import static org.junit.Assert.assertEquals;
import static org.marketcetera.marketdata.Content.LATEST_TICK;
import static org.marketcetera.marketdata.Content.MARKET_STAT;
import static org.marketcetera.marketdata.Content.TOP_OF_BOOK;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.marketcetera.marketdata.Content;
import org.marketcetera.marketdata.DataRequestTranslator;
import org.marketcetera.marketdata.MarketDataMessageTranslatorTestBase;
import org.marketcetera.marketdata.marketcetera.MarketceteraFeed.Request;
import org.marketcetera.module.ExpectedFailure;
import org.marketcetera.quickfix.FIXVersion;
import quickfix.FieldNotFound;
import quickfix.Group;
import quickfix.Message;
import quickfix.field.MsgType;
import quickfix.field.NoRelatedSym;
import quickfix.field.SecurityExchange;
import quickfix.field.SubscriptionRequestType;
import quickfix.field.Symbol;
/* $License$ */
/**
* Tests {@link MarketceteraFeedMessageTranslator}.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: MarketceteraFeedMessageTranslatorTest.java 16893 2014-04-25 18:20:56Z colin $
* @since 1.5.0
*/
public class MarketceteraFeedMessageTranslatorTest
extends MarketDataMessageTranslatorTestBase<MarketceteraFeed.Request>
{
private static final FIXVersion DEFAULT_MESSAGE_FACTORY = FIXVersion.FIX44;
/* (non-Javadoc)
* @see org.marketcetera.marketdata.MarketDataMessageTranslatorTestBase#getCapabilities()
*/
@Override
protected Set<Content> getCapabilities()
{
return new HashSet<Content>(Arrays.asList(TOP_OF_BOOK,LATEST_TICK,MARKET_STAT));
}
/* (non-Javadoc)
* @see org.marketcetera.marketdata.MarketDataMessageTranslatorTestBase#getTranslator()
*/
@Override
protected DataRequestTranslator<Request> getTranslator()
{
return MarketceteraFeedMessageTranslator.getInstance();
}
/* (non-Javadoc)
* @see org.marketcetera.marketdata.MarketDataMessageTranslatorTestBase#verifyResponse(java.lang.Object, java.lang.String, org.marketcetera.marketdata.MarketDataRequest.Content, org.marketcetera.marketdata.MarketDataRequest.Type, java.lang.String[])
*/
@Override
protected void verifyResponse(Request inActualResponse,
String inExpectedExchange,
Content[] inExpectedContent,
String[] inExpectedSymbols)
throws Exception
{
Message theMessage = inActualResponse.getMessage();
for(int i=0;i<inExpectedSymbols.length;i++) {
// check symbol
final Group symbolGroup = DEFAULT_MESSAGE_FACTORY.getMessageFactory().createGroup(MsgType.MARKET_DATA_REQUEST,
NoRelatedSym.FIELD);
theMessage.getGroup(i+1,
symbolGroup);
assertEquals(inExpectedSymbols[i],
symbolGroup.getString(Symbol.FIELD));
// check exchange
if(inExpectedExchange == null ||
inExpectedExchange.isEmpty()) {
new ExpectedFailure<FieldNotFound>() {
protected void run()
throws Exception
{
symbolGroup.getString(SecurityExchange.FIELD);
}
};
} else {
assertEquals(inExpectedExchange,
symbolGroup.getString(SecurityExchange.FIELD));
}
}
// check subscription type
assertEquals(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES,
theMessage.getChar(SubscriptionRequestType.FIELD));
}
}