/*
* 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.ui.internal.trading;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipsetrader.core.feed.FeedIdentifier;
import org.eclipsetrader.core.instruments.Security;
import org.eclipsetrader.core.trading.IAccount;
import org.eclipsetrader.core.trading.IBroker;
import org.eclipsetrader.core.trading.IOrderRoute;
import org.eclipsetrader.core.trading.IOrderSide;
import org.eclipsetrader.core.trading.IOrderType;
import org.eclipsetrader.core.trading.IOrderValidity;
import org.eclipsetrader.core.trading.ITradingService;
import org.eclipsetrader.ui.internal.trading.OrderDialog;
public class OrderDialogTest extends TestCase {
Shell shell;
Security security;
IAccount account;
IBroker broker1;
IBroker broker2;
ITradingService tradingService;
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
shell = new Shell(Display.getDefault());
security = new Security("TEST", new FeedIdentifier("TST", null));
account = EasyMock.createNiceMock(IAccount.class);
EasyMock.expect(account.getDescription()).andStubReturn("Demo");
broker1 = EasyMock.createNiceMock(IBroker.class);
EasyMock.expect(broker1.getName()).andStubReturn("Test Broker 1");
EasyMock.expect(broker1.getAllowedSides()).andStubReturn(new IOrderSide[] {
IOrderSide.Buy,
IOrderSide.Sell,
IOrderSide.BuyCover,
IOrderSide.SellShort
});
EasyMock.expect(broker1.getAllowedTypes()).andStubReturn(new IOrderType[] {
IOrderType.Limit, IOrderType.Market
});
EasyMock.expect(broker1.getAllowedValidity()).andStubReturn(new IOrderValidity[] {
IOrderValidity.Day
});
EasyMock.expect(broker1.getAllowedRoutes()).andStubReturn(new IOrderRoute[0]);
EasyMock.expect(broker1.getAccounts()).andStubReturn(new IAccount[] {
account
});
EasyMock.expect(broker1.getSymbolFromSecurity(security)).andStubReturn(security.getIdentifier().getSymbol());
broker2 = EasyMock.createNiceMock(IBroker.class);
EasyMock.expect(broker2.getName()).andStubReturn("Test Broker 2");
EasyMock.expect(broker2.getAllowedSides()).andStubReturn(new IOrderSide[] {
IOrderSide.Buy, IOrderSide.Sell,
});
EasyMock.expect(broker2.getAllowedTypes()).andStubReturn(new IOrderType[] {
IOrderType.Limit, IOrderType.Market
});
EasyMock.expect(broker2.getAllowedValidity()).andStubReturn(new IOrderValidity[] {
IOrderValidity.Day
});
EasyMock.expect(broker2.getAllowedRoutes()).andStubReturn(new IOrderRoute[0]);
EasyMock.expect(broker2.getAccounts()).andStubReturn(new IAccount[] {
account
});
EasyMock.expect(broker2.getSymbolFromSecurity(security)).andStubReturn(security.getIdentifier().getSymbol());
tradingService = EasyMock.createNiceMock(ITradingService.class);
EasyMock.expect(tradingService.getBrokers()).andStubReturn(new IBroker[] {
broker1, broker2
});
EasyMock.replay(tradingService, broker1, broker2, account);
}
/* (non-Javadoc)
* @see junit.framework.TestCase#tearDown()
*/
@Override
protected void tearDown() throws Exception {
shell.dispose();
}
public void testSetDefaultOrderSideToFirstElement() throws Exception {
OrderDialog dlg = new OrderDialog(shell, tradingService);
dlg.create();
assertSame(IOrderSide.Buy, ((IStructuredSelection) dlg.sideCombo.getSelection()).getFirstElement());
}
public void testSetInitialOrderSide() throws Exception {
OrderDialog dlg = new OrderDialog(shell, tradingService);
dlg.setOrderSide(IOrderSide.Sell);
dlg.create();
assertSame(IOrderSide.Sell, ((IStructuredSelection) dlg.sideCombo.getSelection()).getFirstElement());
}
public void testSetInitialLimitPrice() throws Exception {
OrderDialog dlg = new OrderDialog(shell, tradingService);
dlg.setLimitPrice(1.35);
dlg.create();
assertEquals(dlg.priceFormat.format(1.35), dlg.price.getText());
}
public void testSetInitialQuantity() throws Exception {
OrderDialog dlg = new OrderDialog(shell, tradingService);
dlg.setPosition(200L);
dlg.create();
assertEquals(dlg.numberFormat.format(200), dlg.quantity.getText());
}
public void testSetSecuritySymbol() throws Exception {
OrderDialog dlg = new OrderDialog(shell, tradingService);
dlg.setSecurity(new Security("TEST", new FeedIdentifier("TST", null)));
dlg.create();
assertEquals("TST", dlg.symbol.getText());
}
public void testKeepSideWhenSwitchingBroker() throws Exception {
OrderDialog dlg = new OrderDialog(shell, tradingService);
dlg.setOrderSide(IOrderSide.Sell);
dlg.create();
assertSame(IOrderSide.Sell, ((IStructuredSelection) dlg.sideCombo.getSelection()).getFirstElement());
assertSame(broker1, ((IStructuredSelection) dlg.brokerCombo.getSelection()).getFirstElement());
dlg.brokerCombo.setSelection(new StructuredSelection(broker2));
assertSame(IOrderSide.Sell, ((IStructuredSelection) dlg.sideCombo.getSelection()).getFirstElement());
assertSame(broker2, ((IStructuredSelection) dlg.brokerCombo.getSelection()).getFirstElement());
}
}