/* * Copyright (c) 2004-2011 Marco Maccaferri and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marco Maccaferri - initial API and implementation */ package org.eclipsetrader.directa.internal.core; import junit.framework.TestCase; import org.eclipsetrader.core.feed.FeedIdentifier; import org.eclipsetrader.core.instruments.ISecurity; import org.eclipsetrader.core.instruments.Security; import org.eclipsetrader.core.trading.IOrderSide; import org.eclipsetrader.core.trading.IOrderStatus; public class BrokerConnectorTest extends TestCase { class BrokerConnectorMock extends BrokerConnector { public BrokerConnectorMock() { } @Override public ISecurity getSecurityFromSymbol(String symbol) { return new Security(symbol, new FeedIdentifier(symbol, null)); } } public void testParseToSameOrderMonitor() throws Exception { BrokerConnector c = new BrokerConnectorMock(); OrderMonitor monitor1 = c.parseOrderLine("18;8;0;U6812380489237;n ;TIT;I;;100;;;;;1;;100;.7700;;C;20090309;120550;;006;A;M;;;"); c.orders.add(monitor1); OrderMonitor monitor2 = c.parseOrderLine("25;8;0;U6812380489237;e ;TIT;I;;;100;.7715;;;;;100;.7700;;C;20090309;123813;;007;A;M;100;;"); assertSame(monitor2, monitor1); } public void testParseNewBuyOrder() throws Exception { BrokerConnector c = new BrokerConnectorMock(); OrderMonitor monitor = c.parseOrderLine("18;8;0;U6812380489237;n ;TIT;I;;100;;;;;1;;100;.7700;;C;20090309;120550;;006;A;M;;;"); assertEquals(IOrderSide.Buy, monitor.getOrder().getSide()); assertEquals(new Long(100), monitor.getOrder().getQuantity()); assertEquals(new Double(0.77), monitor.getOrder().getPrice()); assertEquals(IOrderStatus.PendingNew, monitor.getStatus()); } public void testParseExecutedBuyOrder() throws Exception { BrokerConnector c = new BrokerConnectorMock(); OrderMonitor monitor = c.parseOrderLine("18;8;0;U6812380489237;n ;TIT;I;;100;;;;;1;;100;.7700;;C;20090309;120550;;006;A;M;;;"); c.orders.add(monitor); monitor = c.parseOrderLine("25;8;0;U6812380489237;e ;TIT;I;;;100;.7715;;;;;100;.7700;;C;20090309;123813;;007;A;M;100;;"); assertEquals(IOrderSide.Buy, monitor.getOrder().getSide()); assertEquals(new Long(100), monitor.getOrder().getQuantity()); assertEquals(new Double(0.77), monitor.getOrder().getPrice()); assertEquals(IOrderStatus.Filled, monitor.getStatus()); assertEquals(new Long(100), monitor.getFilledQuantity()); assertEquals(new Double(0.7715), monitor.getAveragePrice()); } public void testParsePendingCanceledBuyOrder() throws Exception { BrokerConnector c = new BrokerConnectorMock(); OrderMonitor monitor = c.parseOrderLine("24;8;0;U7010412397817;n ;TRN;I;;50;;;;;1;;50;2.2700;;C;20090311;104123;;006;A;M;;;"); c.orders.add(monitor); monitor = c.parseOrderLine("25;8;0;U7010412397817;na;TRN;I;;50;;;;;1;;50;2.2700;;C;20090311;104132;;002;A;M;50;;"); assertEquals(IOrderSide.Buy, monitor.getOrder().getSide()); assertEquals(new Long(50), monitor.getOrder().getQuantity()); assertEquals(new Double(2.27), monitor.getOrder().getPrice()); assertEquals(IOrderStatus.PendingCancel, monitor.getStatus()); } public void testParseCanceledBuyOrder() throws Exception { BrokerConnector c = new BrokerConnectorMock(); OrderMonitor monitor = c.parseOrderLine("24;8;0;U7010412397817;n ;TRN;I;;50;;;;;1;;50;2.2700;;C;20090311;104123;;006;A;M;;;"); c.orders.add(monitor); monitor = c.parseOrderLine("26;8;0;U7010412397817;zA;TRN;I;;;;;;;;;;2.2700;;C;20090311;104132;;003;A;M;;;"); assertEquals(IOrderSide.Buy, monitor.getOrder().getSide()); assertEquals(new Long(50), monitor.getOrder().getQuantity()); assertEquals(new Double(2.27), monitor.getOrder().getPrice()); assertEquals(IOrderStatus.Canceled, monitor.getStatus()); } public void testNewSellOrder() throws Exception { BrokerConnector c = new BrokerConnectorMock(); OrderMonitor monitor = c.parseOrderLine("18;8;0;U6909100824299;n ;TIT;I;;-100;100;.7715;;;;1;100;.7920;;V;20090310;91009;;006;A;M;;;"); assertEquals(IOrderSide.Sell, monitor.getOrder().getSide()); assertEquals(new Long(100), monitor.getOrder().getQuantity()); assertEquals(new Double(0.792), monitor.getOrder().getPrice()); assertEquals(IOrderStatus.PendingNew, monitor.getStatus()); } public void testExecutedSellOrder() throws Exception { BrokerConnector c = new BrokerConnectorMock(); OrderMonitor monitor = c.parseOrderLine("18;8;0;U6909100824299;n ;TIT;I;;-100;100;.7715;;;;1;100;.7920;;V;20090310;91009;;006;A;M;;;"); c.orders.add(monitor); monitor = c.parseOrderLine("19;8;0;U6909100824299;e ;TIT;I;;;;;;;;;100;.7920;;V;20090310;91014;;007;A;M;100;;"); assertEquals(IOrderSide.Sell, monitor.getOrder().getSide()); assertEquals(new Long(100), monitor.getOrder().getQuantity()); assertEquals(new Double(0.792), monitor.getOrder().getPrice()); assertEquals(IOrderStatus.Filled, monitor.getStatus()); assertEquals(new Long(100), monitor.getFilledQuantity()); assertEquals(new Double(0.792), monitor.getAveragePrice()); } public void testExecutedSellOrderHistory() throws Exception { BrokerConnector c = new BrokerConnectorMock(); OrderMonitor monitor = c.parseOrderLine("10;6;5;U6909100824299;e ;TIT;I;;;;;;;;;;.7920;;V;20090310;91014;;019;A;M;100;;"); assertEquals(IOrderSide.Sell, monitor.getOrder().getSide()); assertEquals(new Long(100), monitor.getOrder().getQuantity()); assertEquals(new Double(0.792), monitor.getOrder().getPrice()); assertEquals(IOrderStatus.Filled, monitor.getStatus()); assertEquals(new Long(100), monitor.getFilledQuantity()); assertEquals(new Double(0.792), monitor.getAveragePrice()); } public void testParseCanceledSellOrder() throws Exception { BrokerConnector c = new BrokerConnectorMock(); OrderMonitor monitor = c.parseOrderLine("24;8;0;U7010412397817;n ;TRN;I;;50;;;;;1;;50;2.2700;;V;20090311;104123;;006;A;M;;;"); c.orders.add(monitor); monitor = c.parseOrderLine("26;8;0;U7010412397817;zA;TRN;I;;;;;;;;;;2.2700;;V;20090311;104132;;003;A;M;;;"); assertEquals(IOrderSide.Sell, monitor.getOrder().getSide()); assertEquals(new Long(50), monitor.getOrder().getQuantity()); assertEquals(new Double(2.27), monitor.getOrder().getPrice()); assertEquals(IOrderStatus.Canceled, monitor.getStatus()); } public void testParsePortfolioLine() throws Exception { BrokerConnector c = new BrokerConnector() { @Override public ISecurity getSecurityFromSymbol(String symbol) { if ("UCG".equals(symbol)) { return new Security(symbol, null); } return null; } }; Position position = c.parsePositionLine("4;7;0;; ;UCG;I;;;100;1.8300;;;;;;;;;;;;015;A;H;;;"); assertEquals("UCG", position.getSecurity().getName()); assertEquals(new Long(100), position.getQuantity()); assertEquals(new Double(1.83), position.getPrice()); } }