diff --git a/src/test/java/millions/PortfolioTest.java b/src/test/java/millions/PortfolioTest.java index 3fb1019..69bb678 100644 --- a/src/test/java/millions/PortfolioTest.java +++ b/src/test/java/millions/PortfolioTest.java @@ -2,4 +2,63 @@ import static org.junit.jupiter.api.Assertions.*; -class PortfolioTest {} +import java.math.BigDecimal; +import org.junit.jupiter.api.Test; + +class PortfolioTest { + + @Test + public void happyPath() { + Portfolio portfolio = new Portfolio(); + Stock stock = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300)); + Share share = new Share(stock, 10, BigDecimal.valueOf(300)); + + assertTrue(portfolio.addShare(share)); + assertTrue(portfolio.contains(share)); + assertEquals(1, portfolio.getShares().size()); + assertEquals(share, portfolio.getShares().get(0)); + + assertTrue(portfolio.removeShare(share)); + assertFalse(portfolio.contains(share)); + assertTrue(portfolio.getShares().isEmpty()); + } + + @Test + public void testGettersAndSetters() { + Portfolio portfolio = new Portfolio(); + Stock stock1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300)); + Stock stock2 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00)); + Share share1 = new Share(stock1, 10, BigDecimal.valueOf(300)); + Share share2 = new Share(stock2, 5, BigDecimal.valueOf(200)); + + portfolio.addShare(share1); + portfolio.addShare(share2); + + assertEquals(2, portfolio.getShares().size()); + assertTrue(portfolio.getShares().contains(share1)); + assertTrue(portfolio.getShares().contains(share2)); + + assertEquals(1, portfolio.getShares("PEAR").size()); + assertTrue(portfolio.getShares("PEAR").contains(share1)); + assertFalse(portfolio.getShares("PEAR").contains(share2)); + + assertEquals(1, portfolio.getShares("DOGL").size()); + assertFalse(portfolio.getShares("DOGL").contains(share1)); + assertTrue(portfolio.getShares("DOGL").contains(share2)); + + assertTrue(portfolio.getShares("XYZ").isEmpty()); + + portfolio.removeShare(share1); + assertEquals(1, portfolio.getShares().size()); + } + + @Test + public void testNullsAndInvalid() { + Stock stock1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300)); + Share share1 = new Share(stock1, 10, BigDecimal.valueOf(300)); + Portfolio portfolio = new Portfolio(); + assertFalse(portfolio.removeShare(null)); + assertFalse(portfolio.contains(null)); + assertFalse(portfolio.removeShare(share1)); + } +}