/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.target.logger; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.mockito.Mockito; import org.testng.annotations.Test; import com.opengamma.core.position.PortfolioNode; import com.opengamma.core.position.Position; import com.opengamma.engine.ComputationTargetSpecification; import com.opengamma.engine.target.ComputationTargetType; import com.opengamma.id.UniqueId; import com.opengamma.util.test.TestGroup; /** * Tests the {@link LoggedResolutionPortfolioNode} class. */ @Test(groups = TestGroup.UNIT) public class LoggedResolutionPortfolioNodeTest { public void getParentNodeId() { final PortfolioNode node = Mockito.mock(PortfolioNode.class); final ResolutionLogger logger = Mockito.mock(ResolutionLogger.class); final PortfolioNode logged = new LoggedResolutionPortfolioNode(node, logger); Mockito.when(node.getParentNodeId()).thenReturn(UniqueId.of("Foo", "Bar")); assertEquals(logged.getParentNodeId(), UniqueId.of("Foo", "Bar")); Mockito.verifyZeroInteractions(logger); } public void size() { final PortfolioNode node = Mockito.mock(PortfolioNode.class); final ResolutionLogger logger = Mockito.mock(ResolutionLogger.class); final PortfolioNode logged = new LoggedResolutionPortfolioNode(node, logger); Mockito.when(node.size()).thenReturn(42); assertEquals(logged.size(), 42); Mockito.verifyZeroInteractions(logger); } public void getChildNodes() { final PortfolioNode node = Mockito.mock(PortfolioNode.class); final ResolutionLogger logger = Mockito.mock(ResolutionLogger.class); final PortfolioNode logged = new LoggedResolutionPortfolioNode(node, logger); final List<PortfolioNode> childNodes = new ArrayList<PortfolioNode>(); for (int i = 0; i < 3; i++) { final PortfolioNode childNode = Mockito.mock(PortfolioNode.class); Mockito.when(childNode.getUniqueId()).thenReturn(UniqueId.of("Node", Integer.toString(i), "0")); childNodes.add(childNode); } Mockito.when(node.getChildNodes()).thenReturn(childNodes); final Collection<PortfolioNode> loggedChildNodes = logged.getChildNodes(); assertEquals(loggedChildNodes.size(), 3); int i = 0; for (PortfolioNode childNode : loggedChildNodes) { assertTrue(childNode instanceof LoggedResolutionPortfolioNode); //Mockito.verify(logger).log(new ComputationTargetSpecification(ComputationTargetType.PORTFOLIO_NODE, UniqueId.of("Node", Integer.toString(i))), UniqueId.of("Node", Integer.toString(i), "0")); i++; } Mockito.verifyNoMoreInteractions(logger); } public void getPositions() { final PortfolioNode node = Mockito.mock(PortfolioNode.class); final ResolutionLogger logger = Mockito.mock(ResolutionLogger.class); final PortfolioNode logged = new LoggedResolutionPortfolioNode(node, logger); final List<Position> positions = new ArrayList<Position>(); for (int i = 0; i < 3; i++) { final Position position = Mockito.mock(Position.class); Mockito.when(position.getUniqueId()).thenReturn(UniqueId.of("Position", Integer.toString(i), "0")); positions.add(position); } Mockito.when(node.getPositions()).thenReturn(positions); final Collection<Position> loggedPositions = logged.getPositions(); assertEquals(loggedPositions.size(), 3); int i = 0; for (Position position : loggedPositions) { assertTrue(position instanceof LoggedResolutionPosition); Mockito.verify(logger).log(new ComputationTargetSpecification(ComputationTargetType.POSITION, UniqueId.of("Position", Integer.toString(i))), UniqueId.of("Position", Integer.toString(i), "0")); i++; } Mockito.verifyNoMoreInteractions(logger); } public void getName() { final PortfolioNode node = Mockito.mock(PortfolioNode.class); final ResolutionLogger logger = Mockito.mock(ResolutionLogger.class); final PortfolioNode logged = new LoggedResolutionPortfolioNode(node, logger); Mockito.when(node.getName()).thenReturn("Foo"); assertEquals(logged.getName(), "Foo"); Mockito.verifyZeroInteractions(logger); } }