/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.bbg.loader;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.google.common.collect.Sets;
import com.opengamma.bbg.referencedata.ReferenceDataProvider;
import com.opengamma.bbg.referencedata.impl.BloombergReferenceDataProvider;
import com.opengamma.bbg.test.BloombergTestUtils;
import com.opengamma.core.id.ExternalSchemes;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.ExternalScheme;
import com.opengamma.util.test.TestGroup;
/**
* Test.
*/
@Test(groups = TestGroup.INTEGRATION)
public class BloombergSecurityTypeResolverTest {
private BloombergReferenceDataProvider _bbgProvider;
private SecurityTypeResolver _securityTypeResolver;
@BeforeClass
public void setUpClass() throws Exception {
_bbgProvider = BloombergTestUtils.getBloombergReferenceDataProvider();
_bbgProvider.start();
ReferenceDataProvider cachingProvider = BloombergTestUtils.getMongoCachingReferenceDataProvider(_bbgProvider);
_securityTypeResolver = new BloombergSecurityTypeResolver(cachingProvider);
}
@AfterClass
public void tearDownClass() throws Exception {
if (_bbgProvider != null) {
_bbgProvider.stop();
_bbgProvider = null;
}
_securityTypeResolver = null;
}
//-------------------------------------------------------------------------
@Test
public void testEquity() {
Set<String> testEquities = Sets.newHashSet("AAPL US Equity", "UNG US Equity");
assertSecurityType(testEquities, SecurityType.EQUITY);
}
@Test
public void testEquityOption() {
assertSecurityType(Collections.singleton("APV US 01/16/10 C190 Equity"), SecurityType.EQUITY_OPTION);
}
@Test
public void testEquityIndexOption() {
assertSecurityType(Collections.singleton("SPX US 12/18/10 C1100 Index"), SecurityType.EQUITY_INDEX_OPTION);
}
@Test
public void testEquityIndexFutureOption() {
assertSecurityType(Collections.singleton("ESH3C 1000 Index"), SecurityType.EQUITY_INDEX_FUTURE_OPTION);
}
@Test
public void testEquityIndexDividendFutureOption() {
assertSecurityType(Collections.singleton("DEDZ3C 100.00 Index"), SecurityType.EQUITY_INDEX_DIVIDEND_FUTURE_OPTION);
}
@Test
public void testBondFuture() {
assertSecurityType(Collections.singleton("USM10 Comdty"), SecurityType.BOND_FUTURE);
}
@Test
public void testInterestRateFuture() {
assertSecurityType(Collections.singleton("EDM10 Comdty"), SecurityType.INTEREST_RATE_FUTURE);
}
@Test
public void testIRFutureOptionSecurity() {
assertSecurityType(Collections.singleton("EDZ2C 99.500 Comdty"), SecurityType.IR_FUTURE_OPTION);
}
@Test
public void testCommodityFutureOptionSecurity() {
assertSecurityType(Collections.singleton("CHH3C 24.25 Comdty"), SecurityType.COMMODITY_FUTURE_OPTION);
}
@Test
public void testFxFutureOptionSecurity() {
assertSecurityType(Collections.singleton("JYH3P 105.0 Curncy"), SecurityType.FX_FUTURE_OPTION);
}
@Test
public void testBondSecurity() {
assertSecurityType(Collections.singleton("GV912810EL8"), ExternalSchemes.BLOOMBERG_BUID, SecurityType.BOND);
}
private void assertSecurityType(final Set<String> identifiers, final ExternalScheme scheme, final SecurityType securityType) {
Set<ExternalIdBundle> testBundles = Sets.newHashSet();
for (String identifierValue : identifiers) {
testBundles.add(ExternalIdBundle.of(ExternalId.of(scheme, identifierValue)));
}
Map<ExternalIdBundle, SecurityType> searchResults = _securityTypeResolver.getSecurityType(testBundles);
assertNotNull(searchResults);
for (ExternalIdBundle identifier : testBundles) {
assertEquals(securityType, searchResults.get(identifier));
}
}
private void assertSecurityType(final Set<String> identifiers, final SecurityType securityType) {
assertSecurityType(identifiers, ExternalSchemes.BLOOMBERG_TICKER, securityType);
}
}