package org.marketcetera.core.position.impl; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.math.BigDecimal; import org.junit.Before; import org.junit.Test; import org.marketcetera.core.position.MockTrade; import org.marketcetera.trade.Equity; /* $License$ */ /** * Test {@link MultiplierCalculator}. * * @author <a href="mailto:will@marketcetera.com">Will Horn</a> * @version $Id: MultiplierCalculatorTest.java 16154 2012-07-14 16:34:05Z colin $ * @since 2.0.0 */ public class MultiplierCalculatorTest { private PositionMetricsCalculator mMockCalculator; private MockTrade<Equity> mTrade1; private MockTrade<Equity> mTrade2; @Before public void before() { PositionMetricsImpl m1 = new PositionMetricsImpl(new BigDecimal("1"), new BigDecimal("2"), new BigDecimal("3"), new BigDecimal("4"), new BigDecimal("5"), new BigDecimal("6"), new BigDecimal("7")); PositionMetricsImpl m2 = new PositionMetricsImpl(new BigDecimal("10"), new BigDecimal("20"), new BigDecimal("30"), new BigDecimal("40"), new BigDecimal("50"), new BigDecimal("60"), new BigDecimal("70")); PositionMetricsImpl m3 = new PositionMetricsImpl(new BigDecimal("100"), new BigDecimal("100"), null, null, null, null, null); mTrade1 = MockTrade.createEquityTrade("ABC", "ABC", "ABC", "1", "1"); mTrade2 = MockTrade .createEquityTrade("ABC2", "ABC", "ABC", "1", "1"); mMockCalculator = mock(PositionMetricsCalculator.class); when(mMockCalculator.tick(BigDecimal.ONE)).thenReturn(m1); when(mMockCalculator.tick(BigDecimal.TEN)).thenReturn(m2); when(mMockCalculator.tick(null)).thenReturn(m3); when(mMockCalculator.trade(mTrade1)).thenReturn(m1); when(mMockCalculator.trade(mTrade2)).thenReturn(m2); when(mMockCalculator.trade(null)).thenReturn(m3); } @Test public void testTick() { MultiplierCalculator fixture = new MultiplierCalculator( mMockCalculator, new BigDecimal(100)); PositionMetricsImplTest.assertPositionMetrics(fixture .tick(BigDecimal.ONE), "1", "2", "300", "400", "500", "600", "700"); PositionMetricsImplTest.assertPositionMetrics(fixture .tick(BigDecimal.TEN), "10", "20", "3000", "4000", "5000", "6000", "7000"); } @Test public void testTickNoMultiplier() { MultiplierCalculator fixture = new MultiplierCalculator( mMockCalculator, null); PositionMetricsImplTest.assertPositionMetrics(fixture .tick(BigDecimal.ONE), "1", "2", null, null, null, null, null); PositionMetricsImplTest .assertPositionMetrics(fixture.tick(BigDecimal.TEN), "10", "20", null, null, null, null, null); } @Test public void testTickNoPNL() { MultiplierCalculator fixture = new MultiplierCalculator( mMockCalculator, new BigDecimal(100)); PositionMetricsImplTest.assertPositionMetrics(fixture .tick(null), "100", "100", null, null, null, null, null); } @Test public void testTrade() { MultiplierCalculator fixture = new MultiplierCalculator( mMockCalculator, new BigDecimal(100)); PositionMetricsImplTest.assertPositionMetrics(fixture.trade(mTrade1), "1", "2", "300", "400", "500", "600", "700"); PositionMetricsImplTest.assertPositionMetrics(fixture.trade(mTrade2), "10", "20", "3000", "4000", "5000", "6000", "7000"); } @Test public void testTradeNoMultiplier() { MultiplierCalculator fixture = new MultiplierCalculator( mMockCalculator, null); PositionMetricsImplTest.assertPositionMetrics(fixture.trade(mTrade1), "1", "2", null, null, null, null, null); PositionMetricsImplTest.assertPositionMetrics(fixture.trade(mTrade2), "10", "20", null, null, null, null, null); } @Test public void testTradeNoPNL() { MultiplierCalculator fixture = new MultiplierCalculator( mMockCalculator, new BigDecimal(100)); PositionMetricsImplTest.assertPositionMetrics(fixture .trade(null), "100", "100", null, null, null, null, null); } }