/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.target;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertSame;
import java.math.BigDecimal;
import org.testng.annotations.Test;
import com.opengamma.core.position.Position;
import com.opengamma.core.position.impl.SimplePortfolioNode;
import com.opengamma.core.position.impl.SimplePosition;
import com.opengamma.engine.ComputationTarget;
import com.opengamma.engine.ComputationTargetSpecification;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.UniqueId;
import com.opengamma.util.test.TestGroup;
/**
* Tests the {@link ComputationTargetResolverUtils} class.
*/
@Test(groups = TestGroup.UNIT)
public class ComputationTargetResolverUtilsTest {
private static final SimplePortfolioNode NODE = new SimplePortfolioNode(UniqueId.of("A", "B", "C"), "Name");
private static final Position POSITION = new SimplePosition(UniqueId.of("Test", "1", "0"), new BigDecimal(1), ExternalIdBundle.EMPTY);
public void testCreateResolvedTarget_noRewrite() {
// No re-write
ComputationTarget target = ComputationTargetResolverUtils.createResolvedTarget(
new ComputationTargetSpecification(ComputationTargetType.PORTFOLIO_NODE, NODE.getUniqueId()).containing(ComputationTargetType.POSITION, POSITION.getUniqueId()), POSITION);
assertEquals(target.getType(), ComputationTargetType.PORTFOLIO_NODE.containing(ComputationTargetType.of(SimplePosition.class)));
assertEquals(target.getContextSpecification(), ComputationTargetSpecification.of(NODE));
assertSame(target.getValue(), POSITION);
}
public void testCreateResolvedTarget_rewriteUnion() {
// Rewrite to remove the union type
ComputationTarget target = ComputationTargetResolverUtils.createResolvedTarget(
new ComputationTargetSpecification(ComputationTargetType.POSITION.or(ComputationTargetType.TRADE), POSITION.getUniqueId()), POSITION);
assertEquals(target.getType(), ComputationTargetType.of(SimplePosition.class));
assertEquals(target.getContextSpecification(), null);
assertSame(target.getValue(), POSITION);
}
public void testCreateResolvedTarget_rewriteNested() {
// Rewrite the nested type
ComputationTarget target = ComputationTargetResolverUtils.createResolvedTarget(
new ComputationTargetSpecification(ComputationTargetType.PORTFOLIO_NODE, NODE.getUniqueId()).containing(ComputationTargetType.POSITION.or(ComputationTargetType.TRADE),
POSITION.getUniqueId()), POSITION);
assertEquals(target.getType(), ComputationTargetType.PORTFOLIO_NODE.containing(ComputationTargetType.of(SimplePosition.class)));
assertEquals(target.getContextSpecification(), ComputationTargetSpecification.of(NODE));
assertSame(target.getValue(), POSITION);
target = ComputationTargetResolverUtils.createResolvedTarget(
new ComputationTargetSpecification(ComputationTargetType.PORTFOLIO_NODE, NODE.getUniqueId()).containing(ComputationTargetType.PORTFOLIO_NODE, NODE.getUniqueId()).containing(
ComputationTargetType.POSITION.or(ComputationTargetType.TRADE), POSITION.getUniqueId()), POSITION);
assertEquals(target.getType(), ComputationTargetType.PORTFOLIO_NODE.containing(ComputationTargetType.PORTFOLIO_NODE).containing(ComputationTargetType.of(SimplePosition.class)));
assertEquals(target.getContextSpecification(), ComputationTargetSpecification.of(NODE).containing(ComputationTargetType.PORTFOLIO_NODE, NODE.getUniqueId()));
assertSame(target.getValue(), POSITION);
}
public void testCreateResolvedTarget_rewriteSpec() {
ComputationTarget target = ComputationTargetResolverUtils.createResolvedTarget(new ComputationTargetSpecification(ComputationTargetType.PORTFOLIO_NODE, NODE.getUniqueId().toLatest()), NODE);
assertEquals(target.getType(), ComputationTargetType.of(SimplePortfolioNode.class));
assertEquals(target.getUniqueId(), NODE.getUniqueId());
}
}