package name.abuchen.portfolio.snapshot.security; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import java.util.Collections; import java.util.List; import name.abuchen.portfolio.PortfolioBuilder; import name.abuchen.portfolio.SecurityBuilder; import name.abuchen.portfolio.model.Client; import name.abuchen.portfolio.model.Portfolio; import name.abuchen.portfolio.model.PortfolioTransaction; import name.abuchen.portfolio.model.PortfolioTransaction.Type; import name.abuchen.portfolio.model.Security; import org.junit.Test; @SuppressWarnings("nls") public class TransactionComparatorTest { private Client client = new Client(); private Security security = new SecurityBuilder() // .addTo(client); @Test public void testBuyIsPreferredOverSell() { Portfolio portfolio = new PortfolioBuilder() // .sell(security, "2010-01-01", 100, 100) // .buy(security, "2010-01-01", 100, 100) // .addTo(client); List<PortfolioTransaction> list = portfolio.getTransactions(); Collections.sort(list, new TransactionComparator()); assertThat(list.get(0).getType(), is(Type.BUY)); assertThat(list.get(1).getType(), is(Type.SELL)); } @Test public void testBuyIsPreferredOverSell2() { Portfolio portfolio = new PortfolioBuilder() // .buy(security, "2010-01-01", 100, 100) // .sell(security, "2010-01-01", 100, 100) // .addTo(client); List<PortfolioTransaction> list = portfolio.getTransactions(); Collections.sort(list, new TransactionComparator()); assertThat(list.get(0).getType(), is(Type.BUY)); assertThat(list.get(1).getType(), is(Type.SELL)); } @Test public void testTwoInboundTransactionsStay() { Portfolio portfolio = new PortfolioBuilder() // .buy(security, "2010-01-01", 1, 100) // .buy(security, "2010-01-01", 2, 100) // .addTo(client); List<PortfolioTransaction> list = portfolio.getTransactions(); Collections.sort(list, new TransactionComparator()); assertThat(list.get(0).getShares(), is(1L)); assertThat(list.get(1).getShares(), is(2L)); } @Test public void testThatDatePreceedsType() { Portfolio portfolio = new PortfolioBuilder() // .sell(security, "2010-01-01", 100, 100) // .buy(security, "2010-01-02", 100, 100) // .addTo(client); List<PortfolioTransaction> list = portfolio.getTransactions(); Collections.sort(list, new TransactionComparator()); assertThat(list.get(0).getType(), is(Type.SELL)); assertThat(list.get(1).getType(), is(Type.BUY)); } }