/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.view.impl;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertNull;
import java.math.BigDecimal;
import java.util.Map;
import org.testng.annotations.Test;
import com.google.common.collect.Sets;
import com.opengamma.core.position.Position;
import com.opengamma.core.position.impl.SimplePortfolio;
import com.opengamma.core.position.impl.SimplePortfolioNode;
import com.opengamma.core.position.impl.SimplePosition;
import com.opengamma.engine.ComputationTargetSpecification;
import com.opengamma.engine.calcnode.MutableExecutionLog;
import com.opengamma.engine.exec.DefaultAggregatedExecutionLog;
import com.opengamma.engine.value.ComputedValueResult;
import com.opengamma.engine.value.ValueProperties;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.engine.view.AggregatedExecutionLog;
import com.opengamma.engine.view.ExecutionLog;
import com.opengamma.engine.view.ExecutionLogMode;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.UniqueId;
import com.opengamma.util.log.LogLevel;
import com.opengamma.util.log.SimpleLogEvent;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.tuple.Pair;
/**
*
*/
@Test(groups = TestGroup.UNIT)
public class ViewCalculationResultModelImplTest {
public static final Position POSITION = new SimplePosition(UniqueId.of("PositionIdentifier", "testPosition"), new BigDecimal(1), ExternalIdBundle.EMPTY);
public static final ComputationTargetSpecification SPEC = ComputationTargetSpecification.of(POSITION);
public static final ComputedValueResult COMPUTED_VALUE_RESULT;
public static final SimplePortfolio PORTFOLIO;
public static final SimplePortfolioNode PORTFOLIO_ROOT_NODE;
static {
PORTFOLIO = new SimplePortfolio("testportfolio");
PORTFOLIO_ROOT_NODE = new SimplePortfolioNode(UniqueId.of("PortfolioIdentifier", "rootNode"), "rootNode");
PORTFOLIO.setRootNode(PORTFOLIO_ROOT_NODE);
PORTFOLIO_ROOT_NODE.addPosition(POSITION);
final ExecutionLog executionLog = MutableExecutionLog.single(new SimpleLogEvent(LogLevel.INFO, "test"), ExecutionLogMode.FULL);
final AggregatedExecutionLog aggregatedExecutionLog = DefaultAggregatedExecutionLog.indicatorLogMode(executionLog.getLogLevels());
COMPUTED_VALUE_RESULT = new ComputedValueResult(new ValueSpecification("DATA", SPEC, ValueProperties.with(ValuePropertyNames.FUNCTION, "mockFunctionId")
.get()), "12345", aggregatedExecutionLog);
}
public void addValue() {
final InMemoryViewResultModel resultModel = new InMemoryViewResultModel() {
private static final long serialVersionUID = 1L;
};
ViewCalculationResultModelImpl calcResult = resultModel.getCalculationResultModelImpl("Default");
assertNull(calcResult);
resultModel.addValue("Default", COMPUTED_VALUE_RESULT);
resultModel.addValue("Default", COMPUTED_VALUE_RESULT);
calcResult = resultModel.getCalculationResultModelImpl("Default");
assertNotNull(calcResult);
final Map<Pair<String, ValueProperties>, ComputedValueResult> targetResults = calcResult.getValues(SPEC);
assertEquals(1, targetResults.size());
assertEquals("DATA", targetResults.keySet().iterator().next().getFirst());
assertEquals(COMPUTED_VALUE_RESULT, targetResults.values().iterator().next());
assertEquals(Sets.newHashSet(SPEC), Sets.newHashSet(calcResult.getAllTargets()));
assertNull(calcResult.getValues(ComputationTargetSpecification.of(UniqueId.of("Test", "nonexistent"))));
}
}