package org.marketcetera.quickfix.messagefactory; import junit.framework.Test; import org.marketcetera.core.ClassVersion; import org.marketcetera.core.FIXVersionTestSuite; import org.marketcetera.core.FIXVersionedTestCase; import org.marketcetera.quickfix.FIXMessageFactory; import org.marketcetera.quickfix.FIXMessageUtilTest; import org.marketcetera.quickfix.FIXVersion; import quickfix.Message; import quickfix.field.OrdType; import quickfix.field.Side; import quickfix.field.TimeInForce; import java.math.BigDecimal; /** * @author toli * @version $Id: FIXMessageAugmentor_43Test.java 16154 2012-07-14 16:34:05Z colin $ */ @ClassVersion("$Id: FIXMessageAugmentor_43Test.java 16154 2012-07-14 16:34:05Z colin $") //$NON-NLS-1$ public class FIXMessageAugmentor_43Test extends FIXVersionedTestCase { public FIXMessageAugmentor_43Test(String inName, FIXVersion version) { super(inName, version); } public static Test suite() { return new FIXVersionTestSuite(FIXMessageAugmentor_43Test.class, new FIXVersion[] {FIXVersion.FIX40}); } public void testCountTT_applicableTypes() throws Exception { assertEquals(30, new FIXMessageAugmentor_43().getApplicableMsgTypes().size()); } /** Verify that we undo whatever changes the {@link FIXMessageAugmentor_40} does. */ public void testMarketOnClose() throws Exception { FIXMessageFactory factory = FIXVersion.FIX43.getMessageFactory(); Message buy = FIXMessageUtilTest.createMarketNOS("TOLI", new BigDecimal("123"), Side.BUY, factory); //$NON-NLS-1$ //$NON-NLS-2$ assertEquals(OrdType.MARKET, buy.getChar(OrdType.FIELD)); buy.setField(new TimeInForce(TimeInForce.AT_THE_CLOSE)); FIXMessageAugmentor augmentor = new FIXMessageAugmentor_43(); buy = augmentor.newOrderSingleAugment(new FIXMessageAugmentor_40().newOrderSingleAugment(buy)); assertEquals(OrdType.MARKET, buy.getChar(OrdType.FIELD)); assertEquals(TimeInForce.AT_THE_CLOSE, buy.getChar(TimeInForce.FIELD)); // now send a non-MoC order make sure no changes are made buy = FIXMessageUtilTest.createMarketNOS("TOLI", new BigDecimal("213"), Side.BUY, factory); //$NON-NLS-1$ //$NON-NLS-2$ buy.setField(new TimeInForce(TimeInForce.DAY)); buy = augmentor.newOrderSingleAugment(new FIXMessageAugmentor_40().newOrderSingleAugment(buy)); assertEquals(OrdType.MARKET, buy.getChar(OrdType.FIELD)); assertEquals(TimeInForce.DAY, buy.getChar(TimeInForce.FIELD)); } /** Verify that we undo whatever changes the {@link FIXMessageAugmentor_40} does. */ public void testLimitOnClose() throws Exception { FIXMessageFactory factory = FIXVersion.FIX43.getMessageFactory(); Message buy = FIXMessageUtilTest.createNOS("TOLI", new BigDecimal("123"), new BigDecimal("100"), Side.BUY, factory); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals(OrdType.LIMIT, buy.getChar(OrdType.FIELD)); buy.setField(new TimeInForce(TimeInForce.AT_THE_CLOSE)); FIXMessageAugmentor augmentor = new FIXMessageAugmentor_43(); buy = augmentor.newOrderSingleAugment(new FIXMessageAugmentor_40().newOrderSingleAugment(buy)); assertEquals(OrdType.LIMIT, buy.getChar(OrdType.FIELD)); assertEquals(TimeInForce.AT_THE_CLOSE, buy.getChar(TimeInForce.FIELD)); // now send a non-LoC order make sure no changes are made buy = FIXMessageUtilTest.createNOS("TOLI", new BigDecimal("213"), new BigDecimal("100"), Side.BUY, factory); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ buy.setField(new TimeInForce(TimeInForce.DAY)); buy = augmentor.newOrderSingleAugment(new FIXMessageAugmentor_40().newOrderSingleAugment(buy)); assertEquals(OrdType.LIMIT, buy.getChar(OrdType.FIELD)); assertEquals(TimeInForce.DAY, buy.getChar(TimeInForce.FIELD)); } /** Verify that we undo whatever changes the {@link FIXMessageAugmentor_40} does. */ public void testMarketOnClose_cxr() throws Exception { FIXMessageFactory factory = FIXVersion.FIX43.getMessageFactory(); Message buy = FIXMessageUtilTest.createMarketNOS("TOLI", new BigDecimal("123"), Side.BUY, factory); //$NON-NLS-1$ //$NON-NLS-2$ assertEquals(OrdType.MARKET, buy.getChar(OrdType.FIELD)); buy.setField(new TimeInForce(TimeInForce.AT_THE_CLOSE)); Message cancelReplace = factory.newCancelReplaceFromMessage(buy); FIXMessageAugmentor augmentor = new FIXMessageAugmentor_43(); cancelReplace = augmentor.cancelReplaceRequestAugment(new FIXMessageAugmentor_40().cancelReplaceRequestAugment(cancelReplace)); assertEquals(OrdType.MARKET, cancelReplace.getChar(OrdType.FIELD)); assertEquals(TimeInForce.AT_THE_CLOSE, cancelReplace.getChar(TimeInForce.FIELD)); // now send a non-MoC order make sure no changes are made buy = FIXMessageUtilTest.createMarketNOS("TOLI", new BigDecimal("213"), Side.BUY, factory); //$NON-NLS-1$ //$NON-NLS-2$ buy.setField(new TimeInForce(TimeInForce.DAY)); cancelReplace = factory.newCancelReplaceFromMessage(buy); cancelReplace = augmentor.cancelReplaceRequestAugment(new FIXMessageAugmentor_40().cancelReplaceRequestAugment(cancelReplace)); assertEquals(OrdType.MARKET, cancelReplace.getChar(OrdType.FIELD)); assertEquals(TimeInForce.DAY, cancelReplace.getChar(TimeInForce.FIELD)); } /** Verify that we undo whatever changes the {@link FIXMessageAugmentor_40} does. */ public void testLimitOnClose_cxr() throws Exception { FIXMessageFactory factory = FIXVersion.FIX43.getMessageFactory(); Message buy = FIXMessageUtilTest.createNOS("TOLI", new BigDecimal("123"), new BigDecimal("100"), Side.BUY, factory); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals(OrdType.LIMIT, buy.getChar(OrdType.FIELD)); buy.setField(new TimeInForce(TimeInForce.AT_THE_CLOSE)); Message cancelReplace = factory.newCancelReplaceFromMessage(buy); FIXMessageAugmentor augmentor = new FIXMessageAugmentor_43(); cancelReplace = augmentor.cancelReplaceRequestAugment(new FIXMessageAugmentor_40().cancelReplaceRequestAugment(cancelReplace)); assertEquals(OrdType.LIMIT, cancelReplace.getChar(OrdType.FIELD)); assertEquals(TimeInForce.AT_THE_CLOSE, cancelReplace.getChar(TimeInForce.FIELD)); // now send a non-LoC order make sure no changes are made buy = FIXMessageUtilTest.createNOS("TOLI", new BigDecimal("213"), new BigDecimal("100"), Side.BUY, factory); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ buy.setField(new TimeInForce(TimeInForce.DAY)); cancelReplace = factory.newCancelReplaceFromMessage(buy); cancelReplace = augmentor.cancelReplaceRequestAugment(new FIXMessageAugmentor_40().cancelReplaceRequestAugment(cancelReplace)); assertEquals(OrdType.LIMIT, cancelReplace.getChar(OrdType.FIELD)); assertEquals(TimeInForce.DAY, cancelReplace.getChar(TimeInForce.FIELD)); } }