Package com.opengamma.engine.target.resolver

Source Code of com.opengamma.engine.target.resolver.PositionSourceResolverTest

/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.target.resolver;

import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNotSame;
import static org.testng.Assert.assertNull;

import java.math.BigDecimal;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import org.mockito.Mockito;
import org.testng.annotations.Test;

import com.opengamma.core.position.Portfolio;
import com.opengamma.core.position.PortfolioNode;
import com.opengamma.core.position.PositionSource;
import com.opengamma.core.position.impl.MockPositionSource;
import com.opengamma.core.position.impl.SimplePortfolio;
import com.opengamma.core.position.impl.SimplePortfolioNode;
import com.opengamma.core.position.impl.SimplePosition;
import com.opengamma.core.position.impl.SimpleTrade;
import com.opengamma.core.security.impl.SimpleSecurityLink;
import com.opengamma.engine.target.logger.ResolutionLogger;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.ObjectId;
import com.opengamma.id.UniqueId;
import com.opengamma.id.VersionCorrection;
import com.opengamma.util.test.TestGroup;

/**
* Test the {@link PositionSource} based resolvers
*/
@Test(groups = TestGroup.UNIT)
public class PositionSourceResolverTest {

  private final SimplePortfolioNode NODE = new SimplePortfolioNode("Root");
  private final SimplePosition POSITION = new SimplePosition();
  private final SimpleTrade TRADE = new SimpleTrade();
  private final SimplePortfolio PORTFOLIO = new SimplePortfolio("Test");
  private final MockPositionSource POSITION_SOURCE = new MockPositionSource();
  private final UniqueId BAD_ID = UniqueId.of("Missing", "0");

  public PositionSourceResolverTest() {
    POSITION.setQuantity(BigDecimal.ONE);
    POSITION.setSecurityLink(new SimpleSecurityLink(ExternalId.of("Security", "Foo")));
    TRADE.setSecurityLink(new SimpleSecurityLink(ExternalId.of("Security", "Foo")));
    TRADE.setQuantity(BigDecimal.ONE);
    POSITION.addTrade(TRADE);
    NODE.addPosition(POSITION);
    PORTFOLIO.setRootNode(NODE);
    PORTFOLIO.setUniqueId(UniqueId.of("Portfolio", "0"));
    POSITION_SOURCE.addPortfolio(PORTFOLIO);
  }

  private PositionSourceResolver resolver() {
    return new PositionSourceResolver(POSITION_SOURCE);
  }

  public void trade_object_resolved() {
    assertEquals(resolver().trade().resolveObject(TRADE.getUniqueId(), VersionCorrection.LATEST), TRADE);
  }

  public void trade_object_unresolved() {
    assertEquals(resolver().trade().resolveObject(BAD_ID, VersionCorrection.LATEST), null);
  }

  public void trade_deep() {
    assertNull(resolver().trade().deepResolver());
  }

  public void position_object_resolved() {
    assertEquals(resolver().position().resolveObject(POSITION.getUniqueId(), VersionCorrection.LATEST), POSITION);
  }

  public void position_object_unresolved() {
    assertEquals(resolver().position().resolveObject(BAD_ID, VersionCorrection.LATEST), null);
  }

  public void position_identifier_single() {
    assertEquals(resolver().position().resolveExternalId(ExternalIdBundle.EMPTY, VersionCorrection.LATEST), null);
  }

  public void position_identifier_multiple() {
    assertEquals(resolver().position().resolveExternalIds(Collections.singleton(ExternalIdBundle.EMPTY), VersionCorrection.LATEST), Collections.emptyMap());
  }

  public void position_uniqueid_resolved() {
    assertEquals(resolver().position().resolveObjectId(POSITION.getUniqueId().getObjectId(), VersionCorrection.LATEST), POSITION.getUniqueId());
  }

  public void position_uniqueid_unresolved() {
    assertEquals(resolver().position().resolveObjectId(BAD_ID.getObjectId(), VersionCorrection.LATEST), null);
  }

  public void position_uniqueid_multiple() {
    final Set<ObjectId> request = new HashSet<ObjectId>();
    request.add(POSITION.getUniqueId().getObjectId());
    request.add(BAD_ID.getObjectId());
    assertEquals(resolver().position().resolveObjectIds(request, VersionCorrection.LATEST), Collections.singletonMap(POSITION.getUniqueId().getObjectId(), POSITION.getUniqueId()));
  }

  public void position_deep() {
    assertNull(resolver().position().deepResolver());
  }

  public void portfolio_object_resolved() {
    assertEquals(resolver().portfolio().resolveObject(PORTFOLIO.getUniqueId(), VersionCorrection.LATEST), PORTFOLIO);
  }

  public void portfolio_object_unresolved() {
    assertEquals(resolver().portfolio().resolveObject(BAD_ID, VersionCorrection.LATEST), null);
  }

  public void portfolio_identifier_single() {
    assertEquals(resolver().portfolio().resolveExternalId(ExternalIdBundle.EMPTY, VersionCorrection.LATEST), null);
  }

  public void portfolio_identifier_multiple() {
    assertEquals(resolver().portfolio().resolveExternalIds(Collections.singleton(ExternalIdBundle.EMPTY), VersionCorrection.LATEST), Collections.emptyMap());
  }

  public void portfolio_uniqueid_resolved() {
    assertEquals(resolver().portfolio().resolveObjectId(PORTFOLIO.getUniqueId().getObjectId(), VersionCorrection.LATEST), PORTFOLIO.getUniqueId());
  }

  public void portfolio_uniqueid_unresolved() {
    assertEquals(resolver().portfolio().resolveObjectId(BAD_ID.getObjectId(), VersionCorrection.LATEST), null);
  }

  public void portfolio_uniqueid_multiple() {
    final Set<ObjectId> request = new HashSet<ObjectId>();
    request.add(PORTFOLIO.getUniqueId().getObjectId());
    request.add(BAD_ID.getObjectId());
    assertEquals(resolver().portfolio().resolveObjectIds(request, VersionCorrection.LATEST), Collections.singletonMap(PORTFOLIO.getUniqueId().getObjectId(), PORTFOLIO.getUniqueId()));
  }

  public void portfolio_deep() {
    final DeepResolver deep = resolver().portfolio().deepResolver();
    assertNotNull(deep);
    ResolutionLogger logger = Mockito.mock(ResolutionLogger.class);
    final Portfolio portfolio = (Portfolio) deep.withLogger(PORTFOLIO, logger);
    assertNotNull(portfolio);
    assertNotSame(portfolio, PORTFOLIO);
    assertEquals(portfolio.getUniqueId(), PORTFOLIO.getUniqueId());
  }

  public void node_object_resolved() {
    assertEquals(resolver().portfolioNode().resolveObject(NODE.getUniqueId(), VersionCorrection.LATEST), NODE);
  }

  public void node_object_unresolved() {
    assertEquals(resolver().portfolioNode().resolveObject(BAD_ID, VersionCorrection.LATEST), null);
  }

  public void node_deep() {
    final DeepResolver deep = resolver().portfolioNode().deepResolver();
    assertNotNull(deep);
    ResolutionLogger logger = Mockito.mock(ResolutionLogger.class);
    final PortfolioNode node = (PortfolioNode) deep.withLogger(NODE, logger);
    assertNotNull(node);
    assertNotSame(node, NODE);
    assertEquals(node.getUniqueId(), NODE.getUniqueId());
  }

}
TOP

Related Classes of com.opengamma.engine.target.resolver.PositionSourceResolverTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.