/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.core.position.impl; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertNotSame; import static org.testng.AssertJUnit.assertSame; import java.math.BigDecimal; import java.util.Arrays; import org.testng.annotations.Test; import com.opengamma.id.ExternalId; import com.opengamma.id.UniqueId; import com.opengamma.util.test.TestGroup; /** * Test {@link SimplePortfolioNode}. */ @Test(groups = TestGroup.UNIT) public class SimplePortfolioNodeTest { public void test_construction() { SimplePortfolioNode test = new SimplePortfolioNode(); assertEquals(null, test.getUniqueId()); assertEquals("", test.getName()); assertEquals(0, test.getChildNodes().size()); assertEquals(0, test.getPositions().size()); assertEquals(0, test.size()); assertEquals("PortfolioNode[, 0 child-nodes, 0 positions]", test.toString()); } //------------------------------------------------------------------------- public void test_construction_String() { SimplePortfolioNode test = new SimplePortfolioNode(UniqueId.of("A", "B"), "Name"); assertEquals(UniqueId.of("A", "B"), test.getUniqueId()); assertEquals("Name", test.getName()); assertEquals(0, test.getChildNodes().size()); assertEquals(0, test.getPositions().size()); assertEquals(0, test.size()); assertEquals("PortfolioNode[A~B, 0 child-nodes, 0 positions]", test.toString()); } public void test_construction_String_null() { SimplePortfolioNode test = new SimplePortfolioNode(UniqueId.of("A", "B"), null); assertEquals(UniqueId.of("A", "B"), test.getUniqueId()); assertEquals("", test.getName()); assertEquals(0, test.getChildNodes().size()); assertEquals(0, test.getPositions().size()); assertEquals(0, test.size()); assertEquals("PortfolioNode[A~B, 0 child-nodes, 0 positions]", test.toString()); } //------------------------------------------------------------------------- public void test_setUniqueId() { SimplePortfolio test = new SimplePortfolio(UniqueId.of("Scheme", "Id"), "Name"); test.setUniqueId(UniqueId.of("Scheme2", "Id2")); assertEquals(UniqueId.of("Scheme2", "Id2"), test.getUniqueId()); } @Test(expectedExceptions=IllegalArgumentException.class) public void test_setUniqueId_null() { SimplePortfolio test = new SimplePortfolio(UniqueId.of("Scheme", "Id"), "Name"); test.setUniqueId(null); } //------------------------------------------------------------------------- public void test_setName() { SimplePortfolio test = new SimplePortfolio(UniqueId.of("Scheme", "Id"), "Name"); test.setName("Name2"); assertEquals("Name2", test.getName()); } @Test(expectedExceptions=IllegalArgumentException.class) public void test_setName_null() { SimplePortfolio test = new SimplePortfolio(UniqueId.of("Scheme", "Id"), "Name"); test.setName(null); } //------------------------------------------------------------------------- @Test(expectedExceptions=UnsupportedOperationException.class) public void test_getChildNodes_immutable() { SimplePortfolioNode test = new SimplePortfolioNode(UniqueId.of ("A", "test"), "test"); SimplePortfolioNode child = new SimplePortfolioNode(UniqueId.of ("A", "child"), "child"); test.getChildNodes().add(child); } public void test_addChildNode() { SimplePortfolioNode test = new SimplePortfolioNode(UniqueId.of ("A", "test"), "test"); SimplePortfolioNode child = new SimplePortfolioNode(UniqueId.of ("A", "child"), "child"); child.setParentNodeId(test.getUniqueId()); test.addChildNode(child); assertEquals(1, test.getChildNodes().size()); assertEquals(child, test.getChildNodes().get(0)); assertEquals(0, test.getPositions().size()); assertEquals(1, test.size()); } public void test_addChildNodes() { SimplePortfolioNode test = new SimplePortfolioNode(UniqueId.of ("A", "test"), "test"); SimplePortfolioNode child0 = new SimplePortfolioNode(UniqueId.of ("A", "child0"), "child0"); SimplePortfolioNode child1 = new SimplePortfolioNode(UniqueId.of ("A", "child1"), "child1"); child0.setParentNodeId(test.getUniqueId()); child1.setParentNodeId(test.getUniqueId()); test.addChildNodes(Arrays.asList(child0, child1)); assertEquals(2, test.getChildNodes().size()); assertEquals(child0, test.getChildNodes().get(0)); assertEquals(child1, test.getChildNodes().get(1)); assertEquals(0, test.getPositions().size()); assertEquals(2, test.size()); } public void test_removeChildNode_match() { SimplePortfolioNode test = new SimplePortfolioNode(UniqueId.of ("A", "test"), "test"); SimplePortfolioNode child = new SimplePortfolioNode(UniqueId.of ("A", "child"), "child"); child.setParentNodeId(test.getUniqueId ()); test.addChildNode(child); assertEquals(1, test.getChildNodes().size()); test.removeChildNode(child); assertEquals(0, test.getChildNodes().size()); } public void test_removeChildNode_noMatch() { SimplePortfolioNode test = new SimplePortfolioNode(UniqueId.of ("A", "test"), "test"); SimplePortfolioNode child = new SimplePortfolioNode(UniqueId.of ("A", "child"), "child"); SimplePortfolioNode removing = new SimplePortfolioNode(UniqueId.of ("A", "removing"), "removing"); child.setParentNodeId (test.getUniqueId ()); test.addChildNode(child); assertEquals(1, test.getChildNodes().size()); test.removeChildNode(removing); assertEquals(1, test.getChildNodes().size()); assertEquals(child, test.getChildNodes().get(0)); } //------------------------------------------------------------------------- @Test(expectedExceptions=UnsupportedOperationException.class) public void test_getPositions_immutable() { SimplePortfolioNode test = new SimplePortfolioNode(); SimplePosition child = new SimplePosition(BigDecimal.ONE, ExternalId.of("K", "V")); test.getPositions().add(child); } public void test_addPosition() { SimplePortfolioNode test = new SimplePortfolioNode(); SimplePosition child = new SimplePosition(BigDecimal.ONE, ExternalId.of("K", "V")); test.addPosition(child); assertEquals(1, test.getPositions().size()); assertEquals(child, test.getPositions().get(0)); assertEquals(0, test.getChildNodes().size()); assertEquals(1, test.size()); } public void test_addPositions() { SimplePortfolioNode test = new SimplePortfolioNode(); SimplePosition child0 = new SimplePosition(BigDecimal.ONE, ExternalId.of("K", "V")); SimplePosition child1 = new SimplePosition(BigDecimal.ONE, ExternalId.of("K", "V")); test.addPositions(Arrays.asList(child0, child1)); assertEquals(2, test.getPositions().size()); assertEquals(child0, test.getPositions().get(0)); assertEquals(child1, test.getPositions().get(1)); assertEquals(0, test.getChildNodes().size()); assertEquals(2, test.size()); } public void test_removePosition_match() { SimplePortfolioNode test = new SimplePortfolioNode(); SimplePosition child = new SimplePosition(BigDecimal.ONE, ExternalId.of("K", "V")); test.addPosition(child); assertEquals(1, test.getPositions().size()); test.removePosition(child); assertEquals(0, test.getPositions().size()); } public void test_removePosition_noMatch() { SimplePortfolioNode test = new SimplePortfolioNode(); SimplePosition child = new SimplePosition(BigDecimal.ONE, ExternalId.of("K", "V")); SimplePosition removing = new SimplePosition(BigDecimal.ONE, ExternalId.of("K", "OTHER")); test.addPosition(child); assertEquals(1, test.getPositions().size()); test.removePosition(removing); assertEquals(1, test.getPositions().size()); assertEquals(child, test.getPositions().get(0)); } //------------------------------------------------------------------------- public void test_size() { SimplePortfolioNode test = new SimplePortfolioNode(); SimplePortfolioNode child1 = new SimplePortfolioNode(); SimplePosition child2 = new SimplePosition(BigDecimal.ONE, ExternalId.of("K", "V")); test.addChildNode(child1); test.addPosition(child2); assertEquals(1, test.getChildNodes().size()); assertEquals(1, test.getPositions().size()); assertEquals(2, test.size()); } //------------------------------------------------------------------------- public void test_getNode_UniqueId() { SimplePortfolioNode root = new SimplePortfolioNode(UniqueId.of("Root", "A"), "Name"); SimplePortfolioNode child1 = new SimplePortfolioNode(UniqueId.of("Child", "A"), "Name"); root.addChildNode(child1); SimplePortfolioNode child2 = new SimplePortfolioNode(UniqueId.of("Child", "B"), "Name"); child2.setParentNodeId (root.getUniqueId ()); root.addChildNode(child2); assertSame(root, root.getNode(UniqueId.of("Root", "A"))); assertNotSame(child1, root.getNode(UniqueId.of("Child", "A"))); // equal except for the parent link assertFalse(child1.equals (root.getNode(UniqueId.of("Child", "A")))); child1.setParentNodeId (root.getUniqueId ()); assertEquals(child1, root.getNode(UniqueId.of("Child", "A"))); assertSame(child2, root.getNode(UniqueId.of("Child", "B"))); assertEquals(null, root.getNode(UniqueId.of("NotFound", "A"))); } public void test_getPosition_UniqueId() { SimplePortfolioNode root = new SimplePortfolioNode(UniqueId.of("Root", "A"), "Name"); SimplePortfolioNode child = new SimplePortfolioNode(UniqueId.of("Child", "A"), "Name"); SimplePosition position1 = new SimplePosition(UniqueId.of("Child", "A"), BigDecimal.ZERO, ExternalId.of("A", "B")); SimplePosition position2 = new SimplePosition(UniqueId.of("Child", "B"), BigDecimal.ZERO, ExternalId.of("A", "B")); child.addPosition(position1); child.addPosition(position2); root.addChildNode(child); assertNotSame(position1, root.getPosition(UniqueId.of("Child", "A"))); // equal except for the parent link assertEquals(position1, root.getPosition(UniqueId.of("Child", "A"))); assertEquals(position2, root.getPosition(UniqueId.of("Child", "B"))); assertEquals(null, root.getPosition(UniqueId.of("NotFound", "A"))); } }