/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.master.exchange.impl; import static org.testng.AssertJUnit.assertEquals; import org.threeten.bp.ZoneId; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.opengamma.DataNotFoundException; import com.opengamma.core.id.ExternalSchemes; import com.opengamma.id.ExternalId; import com.opengamma.id.ExternalIdBundle; import com.opengamma.id.ExternalIdSearchType; import com.opengamma.id.UniqueId; import com.opengamma.master.exchange.ExchangeDocument; import com.opengamma.master.exchange.ExchangeSearchRequest; import com.opengamma.master.exchange.ExchangeSearchResult; import com.opengamma.master.exchange.ManageableExchange; import com.opengamma.util.i18n.Country; import com.opengamma.util.test.TestGroup; /** * Test {@link InMemoryExchangeMaster}. */ @Test(groups = TestGroup.UNIT) public class InMemoryExchangeMasterTest { private static String NAME = "LIFFE"; private static ExternalId ID_LIFFE_MIC = ExternalId.of(ExternalSchemes.ISO_MIC, "XLIF"); private static ExternalId ID_LIFFE_CCID = ExternalId.of("COPP_CLARK_CENTER_ID", "979"); private static ExternalId ID_LIFFE_CCNAME = ExternalId.of("COPP_CLARK_NAME", "Euronext LIFFE (UK contracts)"); private static ExternalId ID_OTHER1 = ExternalId.of("TEST_SCHEME", "EURONEXT LIFFE"); private static ExternalId ID_OTHER2 = ExternalId.of("TEST_SCHEME", "LIFFE"); private static ExternalIdBundle BUNDLE_FULL = ExternalIdBundle.of(ID_LIFFE_MIC, ID_LIFFE_CCNAME, ID_LIFFE_CCID); private static ExternalIdBundle BUNDLE_PART = ExternalIdBundle.of(ID_LIFFE_MIC, ID_LIFFE_CCID); private static ExternalIdBundle BUNDLE_OTHER = ExternalIdBundle.of(ID_LIFFE_MIC, ID_LIFFE_CCNAME, ID_OTHER1); private static ExternalIdBundle GB = ExternalIdBundle.of(ExternalSchemes.countryRegionId(Country.GB)); private InMemoryExchangeMaster master; private ExchangeDocument addedDoc; @BeforeMethod public void setUp() { master = new InMemoryExchangeMaster(); ManageableExchange inputExchange = new ManageableExchange(BUNDLE_FULL, NAME, GB, ZoneId.of("Europe/London")); ExchangeDocument inputDoc = new ExchangeDocument(inputExchange); addedDoc = master.add(inputDoc); } //------------------------------------------------------------------------- @Test(expectedExceptions = DataNotFoundException.class) public void test_get_noMatch() { master.get(UniqueId.of("A", "B")); } public void test_get_match() { ExchangeDocument result = master.get(addedDoc.getUniqueId()); assertEquals(UniqueId.of("MemExg", "1"), result.getUniqueId()); assertEquals(addedDoc, result); } //------------------------------------------------------------------------- public void test_search_oneId_noMatch() { ExchangeSearchRequest request = new ExchangeSearchRequest(ID_OTHER1); ExchangeSearchResult result = master.search(request); assertEquals(0, result.getDocuments().size()); } public void test_search_oneId_mic() { ExchangeSearchRequest request = new ExchangeSearchRequest(ID_LIFFE_MIC); ExchangeSearchResult result = master.search(request); assertEquals(1, result.getDocuments().size()); assertEquals(addedDoc, result.getFirstDocument()); } public void test_search_oneId_ccid() { ExchangeSearchRequest request = new ExchangeSearchRequest(ID_LIFFE_MIC); ExchangeSearchResult result = master.search(request); assertEquals(1, result.getDocuments().size()); assertEquals(addedDoc, result.getFirstDocument()); } //------------------------------------------------------------------------- public void test_search_oneBundle_noMatch() { ExchangeSearchRequest request = new ExchangeSearchRequest(BUNDLE_OTHER); request.setExternalIdSearch(request.getExternalIdSearch().withSearchType(ExternalIdSearchType.ALL)); ExchangeSearchResult result = master.search(request); assertEquals(0, result.getDocuments().size()); } public void test_search_oneBundle_full() { ExchangeSearchRequest request = new ExchangeSearchRequest(BUNDLE_FULL); ExchangeSearchResult result = master.search(request); assertEquals(1, result.getDocuments().size()); assertEquals(addedDoc, result.getFirstDocument()); } public void test_search_oneBundle_part() { ExchangeSearchRequest request = new ExchangeSearchRequest(BUNDLE_PART); ExchangeSearchResult result = master.search(request); assertEquals(1, result.getDocuments().size()); assertEquals(addedDoc, result.getFirstDocument()); } //------------------------------------------------------------------------- public void test_search_twoBundles_noMatch() { ExchangeSearchRequest request = new ExchangeSearchRequest(); request.addExternalId(ID_OTHER1); request.addExternalId(ID_OTHER2); ExchangeSearchResult result = master.search(request); assertEquals(0, result.getDocuments().size()); } public void test_search_twoBundles_oneMatch() { ExchangeSearchRequest request = new ExchangeSearchRequest(); request.addExternalId(ID_LIFFE_MIC); request.addExternalId(ID_OTHER1); ExchangeSearchResult result = master.search(request); assertEquals(1, result.getDocuments().size()); assertEquals(addedDoc, result.getFirstDocument()); } public void test_search_twoBundles_bothMatch() { ExchangeSearchRequest request = new ExchangeSearchRequest(); request.addExternalId(ID_LIFFE_MIC); request.addExternalId(ID_LIFFE_CCID); ExchangeSearchResult result = master.search(request); assertEquals(1, result.getDocuments().size()); assertEquals(addedDoc, result.getFirstDocument()); } //------------------------------------------------------------------------- public void test_search_name_noMatch() { ExchangeSearchRequest request = new ExchangeSearchRequest(); request.setName("No match"); ExchangeSearchResult result = master.search(request); assertEquals(0, result.getDocuments().size()); } public void test_search_name_match() { ExchangeSearchRequest request = new ExchangeSearchRequest(); request.setName(NAME); ExchangeSearchResult result = master.search(request); assertEquals(1, result.getDocuments().size()); assertEquals(addedDoc, result.getFirstDocument()); } }