/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.view.cycle; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertSame; import java.util.Arrays; import java.util.Collections; import java.util.Map; import java.util.Set; import org.mockito.Mockito; import org.testng.annotations.Test; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.opengamma.engine.ComputationTargetSpecification; import com.opengamma.engine.function.EmptyFunctionParameters; import com.opengamma.engine.function.FunctionParameters; import com.opengamma.engine.function.SimpleFunctionParameters; import com.opengamma.engine.marketdata.manipulator.DistinctMarketDataSelector; import com.opengamma.engine.marketdata.manipulator.MarketDataPointSelector; import com.opengamma.engine.value.ValueProperties; import com.opengamma.engine.value.ValuePropertyNames; import com.opengamma.engine.value.ValueSpecification; import com.opengamma.engine.view.compilation.CompiledViewCalculationConfiguration; import com.opengamma.engine.view.compilation.CompiledViewDefinition; import com.opengamma.engine.view.execution.ViewCycleExecutionOptions; import com.opengamma.id.ExternalId; import com.opengamma.util.test.TestGroup; /** * Test the {@link FunctionParametersDelta} class */ @Test(groups = TestGroup.UNIT) public class FunctionParametersDeltaTest { public void testEmpty() { final ViewCycleExecutionOptions emptyOptions = new ViewCycleExecutionOptions(); assertSame(FunctionParametersDelta.of(emptyOptions, emptyOptions), FunctionParametersDelta.EMPTY); assertEquals(FunctionParametersDelta.EMPTY.getValueSpecifications("Default", null, null), Collections.emptySet()); } public void testEmptyFirst() { final Map<DistinctMarketDataSelector, FunctionParameters> first = Collections.emptyMap(); final Map<DistinctMarketDataSelector, FunctionParameters> second = Collections.singletonMap(MarketDataPointSelector.of(ExternalId.of("Test", "Foo")), Mockito.mock(FunctionParameters.class)); final FunctionParametersDelta delta = FunctionParametersDelta.of(first, second); assertEquals(delta.getSelectors(), second.keySet()); } public void testEmptySecond() { final Map<DistinctMarketDataSelector, FunctionParameters> first = Collections.singletonMap(MarketDataPointSelector.of(ExternalId.of("Test", "Foo")), Mockito.mock(FunctionParameters.class)); final Map<DistinctMarketDataSelector, FunctionParameters> second = Collections.emptyMap(); final FunctionParametersDelta delta = FunctionParametersDelta.of(first, second); assertEquals(delta.getSelectors(), first.keySet()); } public void testDeltaEmpty() { final Map<DistinctMarketDataSelector, FunctionParameters> first = Collections.singletonMap(MarketDataPointSelector.of(ExternalId.of("Test", "Foo")), (FunctionParameters) new EmptyFunctionParameters()); final Map<DistinctMarketDataSelector, FunctionParameters> second = Collections.singletonMap(MarketDataPointSelector.of(ExternalId.of("Test", "Foo")), (FunctionParameters) new EmptyFunctionParameters()); final FunctionParametersDelta delta = FunctionParametersDelta.of(first, second); assertSame(delta, FunctionParametersDelta.EMPTY); } public void testDeltaIntersection() { final DistinctMarketDataSelector mA = MarketDataPointSelector.of(ExternalId.of("Test", "A")); final DistinctMarketDataSelector mB = MarketDataPointSelector.of(ExternalId.of("Test", "B")); final DistinctMarketDataSelector mC = MarketDataPointSelector.of(ExternalId.of("Test", "C")); final DistinctMarketDataSelector mD = MarketDataPointSelector.of(ExternalId.of("Test", "D")); final FunctionParameters pA = new EmptyFunctionParameters(); final FunctionParameters pB = new EmptyFunctionParameters(); final FunctionParameters pC1 = new SimpleFunctionParameters(ImmutableMap.of("Test", "Foo")); final FunctionParameters pC2 = new SimpleFunctionParameters(ImmutableMap.of("Test", "Bar")); final FunctionParameters pD = new EmptyFunctionParameters(); final Map<DistinctMarketDataSelector, FunctionParameters> first = ImmutableMap.of(mA, pA, mB, pB, mC, pC1); final Map<DistinctMarketDataSelector, FunctionParameters> second = ImmutableMap.of(mB, pB, mC, pC2, mD, pD); final FunctionParametersDelta delta = FunctionParametersDelta.of(first, second); assertEquals(delta.getSelectors(), Arrays.asList(mA, mC, mD)); } public void testCalcConfigEmptyFirst() { final FunctionParametersDelta delta = FunctionParametersDelta.of(Collections.singleton(MarketDataPointSelector.of(ExternalId.of("Test", "A")))); final CompiledViewDefinition cvd1 = Mockito.mock(CompiledViewDefinition.class); Mockito.when(cvd1.getCompiledCalculationConfiguration("Default")).thenReturn(null); final CompiledViewDefinition cvd2 = Mockito.mock(CompiledViewDefinition.class); assertEquals(delta.getValueSpecifications("Default", cvd1, cvd2), Collections.emptySet()); Mockito.verify(cvd1).getCompiledCalculationConfiguration("Default"); Mockito.verifyZeroInteractions(cvd2); } public void testCalcConfigEmptySecond() { final FunctionParametersDelta delta = FunctionParametersDelta.of(Collections.singleton(MarketDataPointSelector.of(ExternalId.of("Test", "A")))); final CompiledViewDefinition cvd1 = Mockito.mock(CompiledViewDefinition.class); Mockito.when(cvd1.getCompiledCalculationConfiguration("Default")).thenReturn(Mockito.mock(CompiledViewCalculationConfiguration.class)); final CompiledViewDefinition cvd2 = Mockito.mock(CompiledViewDefinition.class); Mockito.when(cvd2.getCompiledCalculationConfiguration("Default")).thenReturn(null); assertEquals(delta.getValueSpecifications("Default", cvd1, cvd2), Collections.emptySet()); Mockito.verify(cvd1).getCompiledCalculationConfiguration("Default"); Mockito.verify(cvd2).getCompiledCalculationConfiguration("Default"); } public void testCalcConfig() { final DistinctMarketDataSelector mA = MarketDataPointSelector.of(ExternalId.of("Test", "A")); final DistinctMarketDataSelector mB = MarketDataPointSelector.of(ExternalId.of("Test", "B")); final DistinctMarketDataSelector mC = MarketDataPointSelector.of(ExternalId.of("Test", "C")); final DistinctMarketDataSelector mD = MarketDataPointSelector.of(ExternalId.of("Test", "D")); final ValueSpecification vA = new ValueSpecification("A", ComputationTargetSpecification.NULL, ValueProperties.with(ValuePropertyNames.FUNCTION, "Mock").get()); final ValueSpecification vB = new ValueSpecification("B", ComputationTargetSpecification.NULL, ValueProperties.with(ValuePropertyNames.FUNCTION, "Mock").get()); final ValueSpecification vC = new ValueSpecification("C", ComputationTargetSpecification.NULL, ValueProperties.with(ValuePropertyNames.FUNCTION, "Mock").get()); final ValueSpecification vD = new ValueSpecification("D", ComputationTargetSpecification.NULL, ValueProperties.with(ValuePropertyNames.FUNCTION, "Mock").get()); final FunctionParametersDelta delta = FunctionParametersDelta.of(Arrays.asList(mA, mC, mD)); final CompiledViewDefinition cvd1 = Mockito.mock(CompiledViewDefinition.class); final CompiledViewCalculationConfiguration cvcc1 = Mockito.mock(CompiledViewCalculationConfiguration.class); Mockito.when(cvcc1.getMarketDataSelections()).thenReturn(ImmutableMap.of(mA, Collections.singleton(vA), mB, Collections.singleton(vB), mC, Collections.singleton(vC))); Mockito.when(cvd1.getCompiledCalculationConfiguration("Default")).thenReturn(cvcc1); final CompiledViewDefinition cvd2 = Mockito.mock(CompiledViewDefinition.class); final CompiledViewCalculationConfiguration cvcc2 = Mockito.mock(CompiledViewCalculationConfiguration.class); Mockito.when(cvcc2.getMarketDataSelections()).thenReturn(ImmutableMap.of(mB, Collections.singleton(vB), mC, Collections.singleton(vC), mD, Collections.singleton(vD))); Mockito.when(cvd2.getCompiledCalculationConfiguration("Default")).thenReturn(cvcc2); final Set<ValueSpecification> changed = delta.getValueSpecifications("Default", cvd1, cvd2); assertEquals(changed, ImmutableSet.of(vA, vC, vD)); } }