/*
* 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.yahoo.internal.core.connector;
import junit.framework.TestCase;
import org.eclipsetrader.core.feed.FeedIdentifier;
import org.eclipsetrader.core.feed.FeedProperties;
import org.eclipsetrader.yahoo.internal.core.repository.IdentifierType;
import org.eclipsetrader.yahoo.internal.core.repository.IdentifiersList;
public class SnapshotConnectorTest extends TestCase {
SnapshotConnector connector;
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
new IdentifiersList();
connector = new SnapshotConnector();
}
public void testSubscribeWithoutProperties() throws Exception {
FeedSubscription subscription = (FeedSubscription) connector.subscribe(new FeedIdentifier("ID", null));
assertSame(subscription, connector.symbolSubscriptions.get("ID"));
assertTrue(connector.isSubscriptionsChanged());
assertEquals(1, subscription.getInstanceCount());
}
public void testSubscribeWithProperties() throws Exception {
FeedIdentifier identifier = new FeedIdentifier("ID", new FeedProperties());
identifier.getProperties().setProperty("org.eclipsetrader.yahoo.symbol", "Y-ID");
FeedSubscription subscription = (FeedSubscription) connector.subscribe(identifier);
assertNull(connector.symbolSubscriptions.get("ID"));
assertSame(subscription, connector.symbolSubscriptions.get("Y-ID"));
assertTrue(connector.isSubscriptionsChanged());
assertEquals(1, subscription.getInstanceCount());
}
public void testDisposeSubcription() throws Exception {
FeedSubscription subscription = new FeedSubscription(connector, new IdentifierType("ID"));
connector.symbolSubscriptions.put("ID", subscription);
connector.disposeSubscription(subscription);
assertNull(connector.symbolSubscriptions.get("ID"));
assertTrue(connector.isSubscriptionsChanged());
}
public void testUseSingleInstanceWithMultipleSubscriptions() throws Exception {
FeedSubscription subscription1 = (FeedSubscription) connector.subscribe(new FeedIdentifier("ID", null));
FeedSubscription subscription2 = (FeedSubscription) connector.subscribe(new FeedIdentifier("ID", null));
assertSame(subscription1, subscription2);
assertEquals(2, subscription1.getInstanceCount());
}
public void testDisposeSubcriptionOnLastInstance() throws Exception {
FeedSubscription subscription = new FeedSubscription(connector, new IdentifierType("ID"));
subscription.incrementInstanceCount();
subscription.incrementInstanceCount();
connector.symbolSubscriptions.put("ID", subscription);
connector.disposeSubscription(subscription);
assertNotNull(connector.symbolSubscriptions.get("ID"));
assertFalse(connector.isSubscriptionsChanged());
connector.disposeSubscription(subscription);
assertNull(connector.symbolSubscriptions.get("ID"));
assertTrue(connector.isSubscriptionsChanged());
}
public void testUpdateStreamWhenIdentifierChanges() throws Exception {
FeedIdentifier identifier = new FeedIdentifier("ID", null);
connector.subscribe(identifier);
connector.setSubscriptionsChanged(false);
identifier.setSymbol("NEWID");
assertTrue(connector.isSubscriptionsChanged());
assertNull(connector.symbolSubscriptions.get("ID"));
assertNotNull(connector.symbolSubscriptions.get("NEWID"));
}
public void testUpdateStreamWhenIdentifierPropertyChanges() throws Exception {
FeedIdentifier identifier = new FeedIdentifier("ID", new FeedProperties());
identifier.getProperties().setProperty("org.eclipsetrader.yahoo.symbol", "Y-ID");
connector.subscribe(identifier);
connector.setSubscriptionsChanged(false);
identifier.getProperties().setProperty("org.eclipsetrader.yahoo.symbol", "Y-NEWID");
assertTrue(connector.isSubscriptionsChanged());
assertNull(connector.symbolSubscriptions.get("ID"));
assertNull(connector.symbolSubscriptions.get("Y-ID"));
assertNotNull(connector.symbolSubscriptions.get("Y-NEWID"));
}
}