/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.bbg.referencedata; import static org.testng.AssertJUnit.assertEquals; import java.util.Map; import org.fudgemsg.FudgeContext; import org.fudgemsg.FudgeMsg; import org.fudgemsg.MutableFudgeMsg; import org.joda.beans.test.BeanAssert; import org.testng.annotations.Test; import com.google.common.collect.ImmutableSet; import com.opengamma.bbg.referencedata.impl.AbstractReferenceDataProvider; import com.opengamma.util.fudgemsg.OpenGammaFudgeContext; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.UNIT) public class AbstractReferenceDataProviderTest { private static final FudgeContext FUDGE_CONTEXT = OpenGammaFudgeContext.getInstance(); private static final String ID1 = "ID1"; private static final String ID2 = "ID2"; private static final String FIELD1 = "FIELD1"; private static final String FIELD2 = "FIELD2"; private static final String VALUE1 = "VALUE1"; private static final String VALUE2 = "VALUE2"; @Test public void singleIdSingleField_dataReturned() { ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ID1, FIELD1, true); MutableFudgeMsg values = FUDGE_CONTEXT.newMessage(); values.add(FIELD1, VALUE1); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); result.addReferenceData(new ReferenceData(ID1, values)); ReferenceDataProvider mock = new Mock(request, result); // ReferenceDataProvider mock = mock(AbstractReferenceDataProvider.class); // when(mock.getReferenceData(request)).thenReturn(result); String test = mock.getReferenceDataValue(ID1, FIELD1); assertEquals(VALUE1, test); } @Test public void singleIdSingleField_noValue() { ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ID1, FIELD1, true); MutableFudgeMsg values = FUDGE_CONTEXT.newMessage(); values.add(FIELD1, null); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); result.addReferenceData(new ReferenceData(ID1, values)); ReferenceDataProvider mock = new Mock(request, result); String test = mock.getReferenceDataValue(ID1, FIELD1); assertEquals(null, test); } @Test public void singleIdSingleField_noField() { ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ID1, FIELD1, true); MutableFudgeMsg values = FUDGE_CONTEXT.newMessage(); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); result.addReferenceData(new ReferenceData(ID1, values)); ReferenceDataProvider mock = new Mock(request, result); String test = mock.getReferenceDataValue(ID1, FIELD1); assertEquals(null, test); } @Test public void singleIdSingleField_noId() { ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ID1, FIELD1, true); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); ReferenceDataProvider mock = new Mock(request, result); String test = mock.getReferenceDataValue(ID1, FIELD1); assertEquals(null, test); } @Test public void singleIdSingleField_fieldError() { ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ID1, FIELD1, true); MutableFudgeMsg values = FUDGE_CONTEXT.newMessage(); values.add(FIELD1, VALUE1); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); ReferenceData rd = new ReferenceData(ID1, values); rd.addError(new ReferenceDataError(FIELD1, -1, "A", "B", "C")); // error overrides value result.addReferenceData(rd); ReferenceDataProvider mock = new Mock(request, result); String test = mock.getReferenceDataValue(ID1, FIELD1); assertEquals(null, test); } //------------------------------------------------------------------------- @Test public void singleIdMultipleFields_dataReturned() {; ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ID1, ImmutableSet.of(FIELD1, FIELD2), true); MutableFudgeMsg values = FUDGE_CONTEXT.newMessage(); values.add(FIELD1, VALUE1); values.add(FIELD2, VALUE2); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); result.addReferenceData(new ReferenceData(ID1, values)); ReferenceDataProvider mock = new Mock(request, result); Map<String, String> test = mock.getReferenceDataValues(ID1, ImmutableSet.of(FIELD1, FIELD2)); assertEquals(2, test.size()); assertEquals(VALUE1, test.get(FIELD1)); assertEquals(VALUE2, test.get(FIELD2)); } @Test public void singleIdMultipleFields_idError() {; ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ID1, ImmutableSet.of(FIELD1, FIELD2), true); MutableFudgeMsg values = FUDGE_CONTEXT.newMessage(); values.add(FIELD1, VALUE1); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); ReferenceData rd = new ReferenceData(ID1, values); rd.addError(new ReferenceDataError(null, -1, "A", "B", "C")); // overrides all fields result.addReferenceData(rd); ReferenceDataProvider mock = new Mock(request, result); Map<String, String> test = mock.getReferenceDataValues(ID1, ImmutableSet.of(FIELD1, FIELD2)); assertEquals(0, test.size()); } @Test public void singleIdMultipleFields_oneFieldError() {; ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ID1, ImmutableSet.of(FIELD1, FIELD2), true); MutableFudgeMsg values = FUDGE_CONTEXT.newMessage(); values.add(FIELD2, VALUE2); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); ReferenceData rd = new ReferenceData(ID1, values); rd.addError(new ReferenceDataError(ID1, -1, "A", "B", "C")); result.addReferenceData(rd); ReferenceDataProvider mock = new Mock(request, result); Map<String, String> test = mock.getReferenceDataValues(ID1, ImmutableSet.of(FIELD1, FIELD2)); assertEquals(1, test.size()); assertEquals(VALUE2, test.get(FIELD2)); } //------------------------------------------------------------------------- @Test public void multipleIdsSingleField_dataReturned() {; ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ImmutableSet.of(ID1, ID2), ImmutableSet.of(FIELD1), true); MutableFudgeMsg values1 = FUDGE_CONTEXT.newMessage(); values1.add(FIELD1, VALUE1); MutableFudgeMsg values2 = FUDGE_CONTEXT.newMessage(); values2.add(FIELD1, VALUE2); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); result.addReferenceData(new ReferenceData(ID1, values1)); result.addReferenceData(new ReferenceData(ID2, values2)); ReferenceDataProvider mock = new Mock(request, result); Map<String, String> test = mock.getReferenceDataValues(ImmutableSet.of(ID1, ID2), FIELD1); assertEquals(2, test.size()); assertEquals(VALUE1, test.get(ID1)); assertEquals(VALUE2, test.get(ID2)); } @Test public void multipleIdsSingleField_idError() {; ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ImmutableSet.of(ID1, ID2), ImmutableSet.of(FIELD1), true); MutableFudgeMsg values = FUDGE_CONTEXT.newMessage(); values.add(FIELD1, VALUE1); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); result.addReferenceData(new ReferenceData(ID1, values)); ReferenceData rd = new ReferenceData(ID2); rd.addError(new ReferenceDataError(null, -1, "A", "B", "C")); // overrides all fields result.addReferenceData(rd); ReferenceDataProvider mock = new Mock(request, result); Map<String, String> test = mock.getReferenceDataValues(ImmutableSet.of(ID1, ID2), FIELD1); assertEquals(1, test.size()); assertEquals(VALUE1, test.get(ID1)); } //------------------------------------------------------------------------- @Test public void multipleIdsMultipleFields_dataReturned() { ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ImmutableSet.of(ID1, ID2), ImmutableSet.of(FIELD1, FIELD2), true); MutableFudgeMsg values1 = FUDGE_CONTEXT.newMessage(); values1.add(FIELD1, VALUE1); MutableFudgeMsg values2 = FUDGE_CONTEXT.newMessage(); values2.add(FIELD1, VALUE2); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); result.addReferenceData(new ReferenceData(ID1, values1)); result.addReferenceData(new ReferenceData(ID2, values2)); ReferenceDataProvider mock = new Mock(request, result); Map<String, FudgeMsg> test = mock.getReferenceData(ImmutableSet.of(ID1, ID2), ImmutableSet.of(FIELD1, FIELD2)); assertEquals(2, test.size()); assertEquals(values1, test.get(ID1)); assertEquals(values2, test.get(ID2)); } @Test public void multipleIdsMultipleFields_idError() {; ReferenceDataProviderGetRequest request = ReferenceDataProviderGetRequest.createGet(ImmutableSet.of(ID1, ID2), ImmutableSet.of(FIELD1, FIELD2), true); MutableFudgeMsg values = FUDGE_CONTEXT.newMessage(); values.add(FIELD1, VALUE1); ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult(); result.addReferenceData(new ReferenceData(ID1, values)); ReferenceData rd = new ReferenceData(ID2); rd.addError(new ReferenceDataError(null, -1, "A", "B", "C")); // overrides all fields result.addReferenceData(rd); ReferenceDataProvider mock = new Mock(request, result); Map<String, FudgeMsg> test = mock.getReferenceData(ImmutableSet.of(ID1, ID2), ImmutableSet.of(FIELD1, FIELD2)); assertEquals(1, test.size()); assertEquals(values, test.get(ID1)); } //------------------------------------------------------------------------- class Mock extends AbstractReferenceDataProvider { ReferenceDataProviderGetRequest _request; ReferenceDataProviderGetResult _result; public Mock(ReferenceDataProviderGetRequest request, ReferenceDataProviderGetResult result) { _request = request; _result = result; } @Override protected ReferenceDataProviderGetResult doBulkGet(ReferenceDataProviderGetRequest request) { BeanAssert.assertBeanEquals(_request, request); return _result; } } }