From e6a3914431972e3dce24f0de212b1559229c8de2 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 25 May 2026 19:50:40 +0200 Subject: [PATCH] Update ShareTest.java --- .../idatt2003/g40/mappe/model/ShareTest.java | 106 ++++++++++++++---- 1 file changed, 84 insertions(+), 22 deletions(-) diff --git a/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/ShareTest.java b/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/ShareTest.java index bb78ea1..f73a2e4 100644 --- a/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/ShareTest.java +++ b/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/ShareTest.java @@ -1,52 +1,114 @@ package edu.ntnu.idi.idatt2003.g40.mappe.model; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.math.BigDecimal; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; final class ShareTest { - @Test - void constructorStoresAllValuesCorrectly() { - Stock stock = new Stock("AAPL", "Apple Inc.", new BigDecimal("150.00")); + /** + * Share to use for testing. + */ + private Share testShare; + + /** + * Stock to use for testing. + * */ + private Stock testStock; + + @BeforeEach + void setUp() { + testStock = new Stock( + "AAPL", + "Apple Inc.", + new BigDecimal("150.00") + ); BigDecimal quantity = new BigDecimal("10"); BigDecimal purchasePrice = new BigDecimal("145.50"); + testShare = new Share(testStock, quantity, purchasePrice); + } + + @Test + void constructorStoresAllValuesCorrectly() { + assertSame(testStock, testShare.getStock()); + + assertEquals(0, + new BigDecimal("10") + .compareTo(testShare.getQuantity()) + ); + + assertEquals(0, + new BigDecimal("145.50") + .compareTo(testShare.getPurchasePrice()) + ); + } + + @Test + void constructorThrowsExceptionOnIllegalArguments() { + assertDoesNotThrow( + () -> new Share(testStock, new BigDecimal("1"), + new BigDecimal("100")) + ); + + assertThrows(IllegalArgumentException.class, + () -> new Share(null, new BigDecimal("1"), new BigDecimal("100")) + ); + + assertThrows(IllegalArgumentException.class, + () -> new Share(testStock, null, new BigDecimal("100")) + ); + + assertThrows(IllegalArgumentException.class, + () -> new Share(testStock, new BigDecimal("1"), null) + ); - Share share = new Share(stock, quantity, purchasePrice); + assertThrows(IllegalArgumentException.class, + () -> new Share(testStock, new BigDecimal("0"), + new BigDecimal("100")) + ); - assertSame(stock, share.getStock()); - assertEquals(quantity, share.getQuantity()); - assertEquals(purchasePrice, share.getPurchasePrice()); + assertThrows(IllegalArgumentException.class, + () -> new Share(testStock, new BigDecimal("1"), new BigDecimal("0")) + ); } @Test void shareSupportsDecimalValues() { - Stock stock = new Stock("TSLA", "Tesla Inc.", new BigDecimal("200.00")); - Share share = new Share( - stock, + Share testShare2 = new Share( + testStock, new BigDecimal("2.5"), new BigDecimal("198.75") ); - assertEquals(new BigDecimal("2.5"), share.getQuantity()); - assertEquals(new BigDecimal("198.75"), share.getPurchasePrice()); + assertEquals(0, + new BigDecimal("2.5") + .compareTo(testShare2.getQuantity()) + ); + + assertEquals(0, + new BigDecimal("198.75") + .compareTo(testShare2.getPurchasePrice()) + ); } @Test void getStockReturnsCorrectStockObject() { - Stock stock = new Stock("NVDA", - "NVIDIA Corporation", - new BigDecimal("875.40")); - Share share = new Share(stock, - new BigDecimal("4"), - new BigDecimal("850.00")); - - assertSame(stock, share.getStock()); - assertEquals("NVDA", share.getStock().getSymbol()); - assertEquals("NVIDIA Corporation", share.getStock().getCompany()); + assertSame(testStock, testShare.getStock()); + assertEquals( + "AAPL", + testShare.getStock().getSymbol() + ); + + assertEquals( + "Apple Inc.", + testShare.getStock().getCompany() + ); } }