/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.view.worker.cache; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import java.util.Collections; import java.util.Map; import org.mockito.Mockito; import org.testng.annotations.Test; import com.opengamma.engine.function.FunctionParameters; import com.opengamma.engine.marketdata.availability.MarketDataAvailabilityProvider; import com.opengamma.engine.marketdata.manipulator.DistinctMarketDataSelector; import com.opengamma.engine.marketdata.manipulator.MarketDataPointSelector; import com.opengamma.engine.marketdata.manipulator.MarketDataSelectionGraphManipulator; import com.opengamma.engine.view.ViewDefinition; import com.opengamma.id.ExternalId; import com.opengamma.id.UniqueId; import com.opengamma.util.test.TestGroup; /** * Tests the {@link ViewExecutionCacheKey} class. */ @Test(groups = TestGroup.UNIT) public class ViewExecutionCacheKeyTest { private ViewDefinition viewDefinition1() { return new ViewDefinition(UniqueId.of("View", "123"), "Test 1", "User"); } private ViewDefinition viewDefinition2() { return new ViewDefinition(UniqueId.of("View", "456"), "Test 2", "User"); } private MarketDataAvailabilityProvider marketDataProvider(final String key) { final MarketDataAvailabilityProvider mock = Mockito.mock(MarketDataAvailabilityProvider.class); Mockito.when(mock.getAvailabilityHintKey()).thenReturn(key); return mock; } public void ofSingle() { final ViewExecutionCacheKey key = ViewExecutionCacheKey.of(viewDefinition1(), marketDataProvider("Foo"), null); assertEquals(key.toString(), "ViewExecution[View~123, Foo, No-op]"); assertEquals(key.hashCode(), 835443498); assertTrue(key.equals(key)); assertTrue(key.equals(ViewExecutionCacheKey.of(viewDefinition1(), marketDataProvider("Foo"), null))); assertFalse(key.equals(ViewExecutionCacheKey.of(viewDefinition1(), marketDataProvider("Bar"), null))); assertFalse(key.equals(ViewExecutionCacheKey.of(viewDefinition2(), marketDataProvider("Foo"), null))); } public void ofManipulated() { final ViewExecutionCacheKey key = ViewExecutionCacheKey .of(viewDefinition1(), marketDataProvider("Foo"), new MarketDataSelectionGraphManipulator(MarketDataPointSelector.of(ExternalId.of("Test", "Foo")), Collections .<String, Map<DistinctMarketDataSelector, FunctionParameters>>emptyMap())); assertEquals(key.toString(), "ViewExecution[View~123, Foo, Test~Foo & {}]"); assertEquals(key.hashCode(), 838623242); assertFalse(key.equals(ViewExecutionCacheKey.of(viewDefinition1(), marketDataProvider("Foo"), null))); assertTrue(key .equals(ViewExecutionCacheKey.of(viewDefinition1(), marketDataProvider("Foo"), new MarketDataSelectionGraphManipulator(MarketDataPointSelector.of(ExternalId.of("Test", "Foo")), Collections.<String, Map<DistinctMarketDataSelector, FunctionParameters>>emptyMap())))); assertFalse(key .equals(ViewExecutionCacheKey.of(viewDefinition1(), marketDataProvider("Foo"), new MarketDataSelectionGraphManipulator(MarketDataPointSelector.of(ExternalId.of("Test", "Bar")), Collections.<String, Map<DistinctMarketDataSelector, FunctionParameters>>emptyMap())))); } }