/* * 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.feed; import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; import org.eclipsetrader.core.instruments.ISecurity; import org.eclipsetrader.core.instruments.Security; public class SingleFeedPricingEnvironmentTest extends TestCase { private IFeedConnector connector; private List<IFeedSubscription> subscriptions; /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ @Override protected void setUp() throws Exception { subscriptions = new ArrayList<IFeedSubscription>(); connector = new IFeedConnector() { @Override public void connect() { } @Override public void disconnect() { } @Override public String getId() { return "test.id"; } @Override public String getName() { return "Test Connector"; } @Override public IFeedSubscription subscribe(final IFeedIdentifier identifier) { IFeedSubscription s = new IFeedSubscription() { @Override public void addSubscriptionListener(ISubscriptionListener listener) { } @Override public void dispose() { subscriptions.remove(this); } @Override public IFeedIdentifier getIdentifier() { return identifier; } @Override public String getSymbol() { return identifier.getSymbol(); } @Override public ILastClose getLastClose() { return null; } @Override public IQuote getQuote() { return null; } @Override public ITodayOHL getTodayOHL() { return null; } @Override public ITrade getTrade() { return null; } @Override public void removeSubscriptionListener(ISubscriptionListener listener) { } }; subscriptions.add(s); return s; } @Override public void addConnectorListener(IConnectorListener listener) { } @Override public void removeConnectorListener(IConnectorListener listener) { } }; } /* (non-Javadoc) * @see junit.framework.TestCase#tearDown() */ @Override protected void tearDown() throws Exception { subscriptions.clear(); connector = null; } public void testAddSecurity() throws Exception { SingleFeedPricingEnvironment environment = new SingleFeedPricingEnvironment(connector); Security sec = new Security("Sample", new FeedIdentifier("ID", null)); environment.addSecurities(new ISecurity[] { sec }); assertEquals(1, environment.securitiesMap.size()); assertEquals(1, environment.identifiersMap.size()); assertEquals(1, subscriptions.size()); } public void testAddSameSecurityOnlyOnce() throws Exception { SingleFeedPricingEnvironment environment = new SingleFeedPricingEnvironment(connector); Security sec = new Security("Sample", new FeedIdentifier("ID", null)); environment.addSecurities(new ISecurity[] { sec }); environment.addSecurities(new ISecurity[] { sec }); assertEquals(1, environment.securitiesMap.size()); assertEquals(1, environment.identifiersMap.size()); assertEquals(1, subscriptions.size()); } public void testAddSameIdentifierOnlyOnce() throws Exception { SingleFeedPricingEnvironment environment = new SingleFeedPricingEnvironment(connector); FeedIdentifier id = new FeedIdentifier("ID", null); Security sec1 = new Security("Sample 1", id); Security sec2 = new Security("Sample 2", id); environment.addSecurities(new ISecurity[] { sec1 }); environment.addSecurities(new ISecurity[] { sec2 }); assertEquals(2, environment.securitiesMap.size()); assertEquals(1, environment.identifiersMap.size()); assertEquals(1, subscriptions.size()); } public void testRemoveSecurity() throws Exception { SingleFeedPricingEnvironment environment = new SingleFeedPricingEnvironment(connector); Security sec = new Security("Sample", new FeedIdentifier("ID", null)); environment.addSecurities(new ISecurity[] { sec }); environment.removeSecurities(new ISecurity[] { sec }); assertEquals(0, environment.securitiesMap.size()); assertEquals(0, environment.identifiersMap.size()); assertEquals(0, subscriptions.size()); } public void testRemoveSameSecurityOnlyOnce() throws Exception { SingleFeedPricingEnvironment environment = new SingleFeedPricingEnvironment(connector); Security sec = new Security("Sample", new FeedIdentifier("ID", null)); environment.addSecurities(new ISecurity[] { sec }); environment.removeSecurities(new ISecurity[] { sec }); assertEquals(0, environment.securitiesMap.size()); assertEquals(0, environment.identifiersMap.size()); assertEquals(0, subscriptions.size()); } public void testRemoveIdentifierWhenAllSecuritiesAreRemoved() throws Exception { SingleFeedPricingEnvironment environment = new SingleFeedPricingEnvironment(connector); FeedIdentifier id = new FeedIdentifier("ID", null); Security sec1 = new Security("Sample 1", id); Security sec2 = new Security("Sample 2", id); environment.addSecurities(new ISecurity[] { sec1 }); environment.addSecurities(new ISecurity[] { sec2 }); environment.removeSecurities(new ISecurity[] { sec1 }); assertEquals(1, environment.securitiesMap.size()); assertEquals(1, environment.identifiersMap.size()); assertEquals(1, subscriptions.size()); environment.removeSecurities(new ISecurity[] { sec2 }); assertEquals(0, environment.securitiesMap.size()); assertEquals(0, environment.identifiersMap.size()); assertEquals(0, subscriptions.size()); } }