/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.target.lazy;
import static org.testng.Assert.assertEquals;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMap;
import com.opengamma.core.position.PortfolioNode;
import com.opengamma.core.position.Position;
import com.opengamma.core.position.Trade;
import com.opengamma.core.position.impl.SimpleCounterparty;
import com.opengamma.core.security.Security;
import com.opengamma.engine.ComputationTarget;
import com.opengamma.engine.ComputationTargetResolver;
import com.opengamma.engine.ComputationTargetSpecification;
import com.opengamma.engine.target.ComputationTargetType;
import com.opengamma.engine.target.MockComputationTargetResolver;
import com.opengamma.id.ExternalId;
import com.opengamma.id.UniqueId;
import com.opengamma.id.VersionCorrection;
import com.opengamma.util.test.TestGroup;
/**
* Tests the {@link LazyComputationTargetResolver} class and the stub objects it uses.
*/
@Test(groups = TestGroup.UNIT, enabled = false, description = "FAILING")
public class LazyComputationTargetResolverTest {
public void testPortfolioNode() {
final MockComputationTargetResolver mock = MockComputationTargetResolver.unresolved();
final ComputationTargetResolver resolver = new LazyComputationTargetResolver(mock);
final ComputationTarget target = resolver.resolve(new ComputationTargetSpecification(ComputationTargetType.PORTFOLIO_NODE, UniqueId.of("Node", "0")), VersionCorrection.LATEST);
final PortfolioNode node = target.getPortfolioNode();
assertEquals(node.getUniqueId(), UniqueId.of("Node", "0"));
assertEquals(mock.getResolveCalls(), 0);
assertEquals(node.getName(), "Node 0");
assertEquals(mock.getResolveCalls(), 1);
final List<PortfolioNode> childNodes = node.getChildNodes();
assertEquals(childNodes.size(), 2);
assertEquals(mock.getResolveCalls(), 1);
assertEquals(childNodes.get(0).getUniqueId(), UniqueId.of("Node", "1"));
assertEquals(childNodes.get(1).getUniqueId(), UniqueId.of("Node", "4"));
assertEquals(mock.getResolveCalls(), 1);
assertEquals(childNodes.get(0).getName(), "Node 1");
assertEquals(childNodes.get(0).getChildNodes().size(), 2);
assertEquals(childNodes.get(1).getName(), "Node 4");
assertEquals(childNodes.get(1).getChildNodes().size(), 2);
assertEquals(mock.getResolveCalls(), 3);
final List<Position> positions = node.getPositions();
assertEquals(positions.size(), 2);
assertEquals(mock.getResolveCalls(), 3);
assertEquals(positions.get(0).getUniqueId(), UniqueId.of("Position", "12"));
assertEquals(positions.get(1).getUniqueId(), UniqueId.of("Position", "13"));
assertEquals(mock.getResolveCalls(), 3);
assertEquals(positions.get(0).getQuantity(), BigDecimal.ONE);
assertEquals(positions.get(1).getQuantity(), BigDecimal.ONE);
assertEquals(mock.getResolveCalls(), 5);
}
public void testPosition() {
final MockComputationTargetResolver mock = MockComputationTargetResolver.unresolved();
final ComputationTargetResolver resolver = new LazyComputationTargetResolver(mock);
final ComputationTarget target = resolver.resolve(new ComputationTargetSpecification(ComputationTargetType.POSITION, UniqueId.of("Position", "0")), VersionCorrection.LATEST);
final Position position = target.getPosition();
assertEquals(position.getUniqueId(), UniqueId.of("Position", "0"));
assertEquals(mock.getResolveCalls(), 0);
assertEquals(position.getAttributes(), Collections.emptyMap());
assertEquals(position.getQuantity(), BigDecimal.ONE);
assertEquals(mock.getResolveCalls(), 1);
final Collection<Trade> trades = position.getTrades();
assertEquals(trades.size(), 1);
assertEquals(mock.getResolveCalls(), 1);
final Trade trade = trades.iterator().next();
assertEquals(trade.getUniqueId(), UniqueId.of("Trade", "0"));
assertEquals(mock.getResolveCalls(), 1);
assertEquals(trade.getQuantity(), BigDecimal.ONE);
assertEquals(mock.getResolveCalls(), 2);
final Security security = position.getSecurityLink().getTarget();
assertEquals(security.getSecurityType(), "MOCK");
assertEquals(mock.getResolveCalls(), 3);
}
public void testTrade() {
final MockComputationTargetResolver mock = MockComputationTargetResolver.unresolved();
final ComputationTargetResolver resolver = new LazyComputationTargetResolver(mock);
final ComputationTarget target = resolver.resolve(new ComputationTargetSpecification(ComputationTargetType.TRADE, UniqueId.of("Trade", "0")), VersionCorrection.LATEST);
final Trade trade = target.getTrade();
assertEquals(trade.getUniqueId(), UniqueId.of("Trade", "0"));
assertEquals(mock.getResolveCalls(), 0);
assertEquals(trade.getAttributes(), Collections.emptyMap());
trade.setAttributes(ImmutableMap.of("K1", "V1"));
assertEquals(trade.getAttributes(), ImmutableMap.of("K1", "V1"));
trade.addAttribute("K2", "V2");
assertEquals(trade.getAttributes(), ImmutableMap.of("K1", "V1", "K2", "V2"));
assertEquals(trade.getCounterparty(), new SimpleCounterparty(ExternalId.of("Counterparty", "Mock")));
assertEquals(trade.getPremium(), null);
assertEquals(trade.getPremiumCurrency(), null);
assertEquals(trade.getPremiumDate(), null);
assertEquals(trade.getPremiumTime(), null);
assertEquals(trade.getTradeDate(), MockComputationTargetResolver.TODAY);
assertEquals(trade.getTradeTime(), null);
assertEquals(trade.getQuantity(), BigDecimal.ONE);
assertEquals(mock.getResolveCalls(), 1);
final Security security = trade.getSecurityLink().getTarget();
assertEquals(security.getSecurityType(), "MOCK");
assertEquals(mock.getResolveCalls(), 2);
}
public void testSecurity() {
final MockComputationTargetResolver mock = MockComputationTargetResolver.unresolved();
final ComputationTargetResolver resolver = new LazyComputationTargetResolver(mock);
final ComputationTarget target = resolver.resolve(new ComputationTargetSpecification(ComputationTargetType.SECURITY, UniqueId.of("Security", "0")), VersionCorrection.LATEST);
final Security security = target.getSecurity();
assertEquals(mock.getResolveCalls(), 1);
assertEquals(security.getSecurityType(), "MOCK");
assertEquals(mock.getResolveCalls(), 1);
}
}