/* * 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.core.markets; import junit.framework.TestCase; import org.eclipsetrader.core.TestFeedConnector; import org.eclipsetrader.core.TestMarket; import org.eclipsetrader.core.feed.FeedIdentifier; import org.eclipsetrader.core.instruments.ISecurity; import org.eclipsetrader.core.instruments.Security; public class MarketPricingEnvironmentTest extends TestCase { private TestMarket market1; private TestMarket market2; private TestFeedConnector connector1; private TestFeedConnector connector2; private ISecurity security1; private ISecurity security2; private MarketPricingEnvironment environment; /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ @Override protected void setUp() throws Exception { security1 = new Security("Security1", new FeedIdentifier("id1", null)); security2 = new Security("Security2", new FeedIdentifier("id2", null)); connector1 = new TestFeedConnector("id1", "Connector1"); connector2 = new TestFeedConnector("id2", "Connector2"); market1 = new TestMarket("Market1"); market1.setLiveFeedConnector(connector1); market1.addMembers(new ISecurity[] { security1 }); market2 = new TestMarket("Market2"); market2.setLiveFeedConnector(connector2); market2.addMembers(new ISecurity[] { security2 }); environment = new MarketPricingEnvironment() { @Override protected IMarket getMarketsForSecurity(ISecurity security) { if (security == security1) { return market1; } if (security == security2) { return market2; } return null; } }; } public void testAddSecurity() throws Exception { environment.addSecurities(new ISecurity[] { security1 }); assertNotNull(environment.getSubscriptionStatus(security1)); assertEquals(1, connector1.getSubscriptions().size()); } public void testRemoveSecurity() throws Exception { environment.addSecurities(new ISecurity[] { security1 }); environment.removeSecurities(new ISecurity[] { security1 }); assertNull(environment.getSubscriptionStatus(security1)); assertEquals(0, connector1.getSubscriptions().size()); } public void testChangeMarketConnector() throws Exception { environment.addSecurities(new ISecurity[] { security1 }); environment.handleMarketChanges(market1, IMarket.PROP_LIVE_FEED_CONNECTOR, connector1, connector2); assertNotNull(environment.getSubscriptionStatus(security1)); assertEquals(0, connector1.getSubscriptions().size()); assertEquals(1, connector2.getSubscriptions().size()); } public void testSubscribeSecurity() throws Exception { environment.addSecurities(new ISecurity[] { security1 }); assertNotNull(environment.getSubscriptionStatus(security1)); assertEquals(1, connector1.getSubscriptions().size()); assertEquals(0, connector2.getSubscriptions().size()); } public void testUnsubscribeSecurityFromMultipleMarkets() throws Exception { environment.addSecurities(new ISecurity[] { security1 }); environment.removeSecurities(new ISecurity[] { security1 }); assertNull(environment.getSubscriptionStatus(security1)); assertEquals(0, connector1.getSubscriptions().size()); assertEquals(0, connector2.getSubscriptions().size()); } }