/*
* 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 java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;
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.IOrderMonitor;
import org.eclipsetrader.core.trading.IOrderSide;
import org.eclipsetrader.core.trading.IOrderStatus;
import org.eclipsetrader.core.trading.IOrderType;
import org.eclipsetrader.core.trading.Order;
public class OrderMonitorTest extends TestCase {
private List<PropertyChangeEvent> propertyChangeEvents;
private PropertyChangeListener listener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
propertyChangeEvents.add(evt);
}
};
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
propertyChangeEvents = new ArrayList<PropertyChangeEvent>();
}
public void testFireAveragePricePropertyChanges() throws Exception {
ISecurity security = new Security("ENI", new FeedIdentifier("ENI", null));
OrderMonitor monitor = new OrderMonitor(null, null, new Order(null, IOrderType.Limit, IOrderSide.Buy, security, 5L, 21.5));
monitor.getPropertyChangeSupport().addPropertyChangeListener(listener);
monitor.setAveragePrice(21.5);
assertEquals(1, propertyChangeEvents.size());
assertEquals(IOrderMonitor.PROP_AVERAGE_PRICE, propertyChangeEvents.get(0).getPropertyName());
assertNull(propertyChangeEvents.get(0).getOldValue());
assertEquals(new Double(21.5), propertyChangeEvents.get(0).getNewValue());
}
public void testFireFilledQuantityPropertyChanges() throws Exception {
ISecurity security = new Security("ENI", new FeedIdentifier("ENI", null));
OrderMonitor monitor = new OrderMonitor(null, null, new Order(null, IOrderType.Limit, IOrderSide.Buy, security, 5L, 21.5));
monitor.getPropertyChangeSupport().addPropertyChangeListener(listener);
monitor.setFilledQuantity(5L);
assertEquals(1, propertyChangeEvents.size());
assertEquals(IOrderMonitor.PROP_FILLED_QUANTITY, propertyChangeEvents.get(0).getPropertyName());
assertNull(propertyChangeEvents.get(0).getOldValue());
assertEquals(new Long(5), propertyChangeEvents.get(0).getNewValue());
}
public void testFireStatusPropertyChanges() throws Exception {
ISecurity security = new Security("ENI", new FeedIdentifier("ENI", null));
OrderMonitor monitor = new OrderMonitor(null, null, new Order(null, IOrderType.Limit, IOrderSide.Buy, security, 5L, 21.5));
monitor.getPropertyChangeSupport().addPropertyChangeListener(listener);
monitor.setStatus(IOrderStatus.Filled);
assertEquals(1, propertyChangeEvents.size());
assertEquals(IOrderMonitor.PROP_STATUS, propertyChangeEvents.get(0).getPropertyName());
assertEquals(IOrderStatus.New, propertyChangeEvents.get(0).getOldValue());
assertEquals(IOrderStatus.Filled, propertyChangeEvents.get(0).getNewValue());
}
}