diff --git a/src/test/java/ShareTest.java b/src/test/java/ShareTest.java index 3d840bb..fbc018d 100644 --- a/src/test/java/ShareTest.java +++ b/src/test/java/ShareTest.java @@ -1,5 +1,6 @@ import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import Model.Share; @@ -7,69 +8,89 @@ import java.math.BigDecimal; - public class ShareTest { - @Test - void testShareConstructor() { + private Stock stock; + + @BeforeEach + void setUp() { + stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + } - Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); - BigDecimal quantity = new BigDecimal("10"); - BigDecimal purchasePrice = new BigDecimal("140"); + // ---- Positive tests ---- - Share share = new Share(stock, quantity, purchasePrice); + @Test + void testShareConstructorNotNull() { + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); assertNotNull(share); } @Test void testGetStock() { - - Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); - - Stock result = share.getStock(); - - assertEquals(stock, result); + assertEquals(stock, share.getStock()); } @Test void testGetQuantity() { - - Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); - - BigDecimal result = share.getQuantity(); - - assertEquals(new BigDecimal("10"), result); + assertEquals(new BigDecimal("10"), share.getQuantity()); } @Test void testGetPurchasePrice() { - - Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); - - BigDecimal result = share.getPurchasePrice(); - - assertEquals(new BigDecimal("140"), result); + assertEquals(new BigDecimal("140"), share.getPurchasePrice()); } @Test - void testNullStock() { + void testPurchasePriceZeroAllowed() { + // buying at price 0 is an edge case but not invalid + Share share = new Share(stock, new BigDecimal("5"), BigDecimal.ZERO); + assertEquals(BigDecimal.ZERO, share.getPurchasePrice()); + } - Share share = new Share(null, new BigDecimal("10"), new BigDecimal("100")); + // ---- Negative tests ---- - assertNull(share.getStock()); + @Test + void testNullStockThrows() { + assertThrows(IllegalArgumentException.class, () -> + new Share(null, new BigDecimal("10"), new BigDecimal("100")) + ); } @Test - void testNegativePrice() { + void testNullQuantityThrows() { + assertThrows(IllegalArgumentException.class, () -> + new Share(stock, null, new BigDecimal("100")) + ); + } - Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); - Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("-50")); + @Test + void testZeroQuantityThrows() { + assertThrows(IllegalArgumentException.class, () -> + new Share(stock, BigDecimal.ZERO, new BigDecimal("100")) + ); + } - assertEquals(new BigDecimal("-50"), share.getPurchasePrice()); + @Test + void testNegativeQuantityThrows() { + assertThrows(IllegalArgumentException.class, () -> + new Share(stock, new BigDecimal("-5"), new BigDecimal("100")) + ); + } + + @Test + void testNullPurchasePriceThrows() { + assertThrows(IllegalArgumentException.class, () -> + new Share(stock, new BigDecimal("10"), null) + ); } - + @Test + void testNegativePurchasePriceThrows() { + assertThrows(IllegalArgumentException.class, () -> + new Share(stock, new BigDecimal("10"), new BigDecimal("-50")) + ); + } } diff --git a/target/test-classes/ShareTest.class b/target/test-classes/ShareTest.class index 0c78c04..abf202d 100644 Binary files a/target/test-classes/ShareTest.class and b/target/test-classes/ShareTest.class differ