Package com.opengamma.integration.tool.portfolio

Source Code of com.opengamma.integration.tool.portfolio.TradePositionResolverTest

/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.tool.portfolio;

import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;

import java.util.Iterator;

import org.testng.annotations.Test;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
import com.opengamma.integration.tool.portfolio.xml.TradePositionResolver;
import com.opengamma.util.test.TestGroup;

/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class TradePositionResolverTest {

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testTradeIdsCannotBeNull() {
    new TradePositionResolver(null);
  }

  @Test(expectedExceptions = IllegalStateException.class)
  public void testGetPositionsCannotBeCalledBeforeResolve() {

    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1"));
    resolver.getPositions();
  }

  @Test(expectedExceptions = IllegalStateException.class)
  public void testGetOrphansCannotBeCalledBeforeResolve() {

    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1"));
    resolver.getOrphans();
  }

  @Test(expectedExceptions = IllegalStateException.class)
  public void testGetDuplicatesCannotBeCalledBeforeResolve() {

    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1"));
    resolver.getDuplicateTrades();
  }

  @Test(expectedExceptions = IllegalStateException.class)
  public void testGetUnknownsCannotBeCalledBeforeResolve() {

    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1"));
    resolver.getUnknownTrades();
  }

  @Test
  public void testPositionsAreEmptyWhenNoneAdded() {

    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1"));
    resolver.resolve();
    assertTrue(resolver.getPositions().isEmpty());
  }

  @Test
  public void testAllTradesAreOrphansWhenNoPositionsAdded() {

    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1", "T2"));
    resolver.resolve();
    assertEquals(resolver.getOrphans(), ImmutableSet.of("T1", "T2"));
  }

  @Test(expectedExceptions = IllegalStateException.class)
  public void testPositionsCannotBeAddedAfterResolve() {

    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1"));
    resolver.resolve();
    resolver.addToPosition("P1", "T1");
  }

  @Test
  public void testSimplePositionAddition() {
    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1"));
    resolver.addToPosition("P1", "T1");
    resolver.resolve();

    assertFalse(resolver.getOrphans().iterator().hasNext());
    Multimap<String, String> positions = resolver.getPositions();
    assertEquals(positions.size(), 1);
    assertEquals(positions.get("P1"), ImmutableSet.of("T1"));
  }

  @Test
  public void testDuplicatePositionTradeCombinationIsNotIgnored() {
    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1"));
    resolver.addToPosition("P1", "T1");
    resolver.addToPosition("P1", "T1");
    resolver.resolve();

    assertFalse(resolver.getOrphans().iterator().hasNext());
    Multimap<String, String> positions = resolver.getPositions();
    assertEquals(positions.size(), 2);
    assertEquals(positions.get("P1"), ImmutableList.of("T1", "T1"));
  }

  @Test
  public void testPositionAddition() {
    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1","T2","T3","T4","T5"));
    resolver.addToPosition("P1", "T1");
    resolver.addToPosition("P2", "T2");
    resolver.addToPosition("P1", "T3");
    resolver.addToPosition("P2", "T4");
    resolver.addToPosition("P1", "T5");
    resolver.resolve();

    assertFalse(resolver.getOrphans().iterator().hasNext());
    Multimap<String, String> positions = resolver.getPositions();
    assertEquals(positions.keySet().size(), 2);
    assertEquals(positions.size(), 5);
    assertEquals(positions.get("P1"), ImmutableSet.of("T1","T3","T5"));
    assertEquals(positions.get("P2"), ImmutableSet.of("T2","T4"));
  }

  @Test
  public void testMissingTradesAreIdentified() {

    // The XMl load process should mean this can't happen in
    // the actual load, but ...
    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1"));
    resolver.addToPosition("P1", "T1");
    resolver.addToPosition("P1", "T2");
    resolver.resolve();

    assertEquals(ImmutableSet.copyOf(resolver.getUnknownTrades()), ImmutableSet.of("T2"));
  }

  @Test
  public void testDuplicatedTradesAreIdentified() {
    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1"));
    resolver.addToPosition("P1", "T1");
    resolver.addToPosition("P2", "T1");
    resolver.resolve();

    // Multimap comparison seems somewhat awkward, therefore do comparisons with
    // the more familiar java collection methods
    Multimap<String, String> duplicateTrades = resolver.getDuplicateTrades();
    assertEquals(duplicateTrades.keySet().size(), 1);
    assertEquals(duplicateTrades.get("T1"), ImmutableSet.of("P1", "P2"));
  }

  @Test
  public void testCombined() {

    TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1","T2","T3","T4","T5"));
    resolver.addToPosition("P1", "T1");
    resolver.addToPosition("P2", "T1");
    resolver.addToPosition("P2", "T2");
    resolver.addToPosition("P1", "T3");
    resolver.addToPosition("P2", "T4");
    resolver.addToPosition("P3", "T6");
    resolver.resolve();

    Iterator<String> orphans = resolver.getOrphans().iterator();
    assertEquals(orphans.next(), "T5");
    assertFalse(orphans.hasNext());

    Multimap<String, String> positions = resolver.getPositions();
    assertEquals(positions.keySet().size(), 3);
    assertEquals(positions.get("P1"), ImmutableList.of("T1", "T3"));
    assertEquals(positions.get("P2"), ImmutableList.of("T1", "T2", "T4"));
    assertEquals(positions.get("P3"), ImmutableList.of("T6"));

    assertEquals(ImmutableSet.copyOf(resolver.getUnknownTrades()), ImmutableSet.of("T6"));

    Multimap<String, String> duplicateTrades = resolver.getDuplicateTrades();
    assertEquals(duplicateTrades.keySet().size(), 1);
    assertEquals(duplicateTrades.get("T1"), ImmutableSet.of("P1", "P2"));
  }
}
TOP

Related Classes of com.opengamma.integration.tool.portfolio.TradePositionResolverTest

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.