From 7fb1ee0a1562ee3804a96863bdf503bc5a3ca25b Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Mon, 25 May 2026 21:42:19 +0200 Subject: [PATCH] Improved Checkstyle on test-classes --- src/test/java/ExchangeTest.java | 200 +++++++++++----------- src/test/java/PlayerTest.java | 82 ++++----- src/test/java/PortfolioTest.java | 115 +++++++------ src/test/java/PurchaseTest.java | 71 ++++---- src/test/java/SaleTest.java | 74 ++++---- src/test/java/ShareTest.java | 67 ++++---- src/test/java/StockTest.java | 108 ++++++------ src/test/java/TransactionArchiveTest.java | 102 +++++------ target/test-classes/ExchangeTest.class | Bin 10733 -> 10397 bytes target/test-classes/PortfolioTest.class | Bin 5661 -> 5661 bytes target/test-classes/ShareTest.class | Bin 4255 -> 4137 bytes target/test-classes/StockTest.class | Bin 6225 -> 6116 bytes 12 files changed, 410 insertions(+), 409 deletions(-) diff --git a/src/test/java/ExchangeTest.java b/src/test/java/ExchangeTest.java index 4aa8f3a..cc55f5d 100644 --- a/src/test/java/ExchangeTest.java +++ b/src/test/java/ExchangeTest.java @@ -27,15 +27,15 @@ public class ExchangeTest { @BeforeEach void setUp() { - apple = new Stock("AAPL", "Apple", new BigDecimal("100")); - google = new Stock("GOOGL", "Google", new BigDecimal("200")); + apple = new Stock("AAPL", "Apple", new BigDecimal("100")); + google = new Stock("GOOGL", "Google", new BigDecimal("200")); - List stocks = new ArrayList<>(); - stocks.add(apple); - stocks.add(google); + List stocks = new ArrayList<>(); + stocks.add(apple); + stocks.add(google); - exchange = new Exchange("TestExchange", stocks); - player = new Player("Jane", new BigDecimal("500000")); + exchange = new Exchange("TestExchange", stocks); + player = new Player("Jane", new BigDecimal("500000")); } // ---- Positive tests ---- @@ -45,7 +45,7 @@ void setUp() { */ @Test void testGetName() { - assertEquals("TestExchange", exchange.getName()); + assertEquals("TestExchange", exchange.getName()); } /** @@ -53,7 +53,7 @@ void testGetName() { */ @Test void testInitialWeekIsOne() { - assertEquals(1, exchange.getWeek()); + assertEquals(1, exchange.getWeek()); } /** @@ -61,8 +61,8 @@ void testInitialWeekIsOne() { */ @Test void testAdvanceIncrementsWeek() { - exchange.advance(); - assertEquals(2, exchange.getWeek()); + exchange.advance(); + assertEquals(2, exchange.getWeek()); } /** @@ -70,7 +70,7 @@ void testAdvanceIncrementsWeek() { */ @Test void testHasStockReturnsTrue() { - assertTrue(exchange.hasStock("AAPL")); + assertTrue(exchange.hasStock("AAPL")); } /** @@ -78,7 +78,7 @@ void testHasStockReturnsTrue() { */ @Test void testHasStockReturnsFalse() { - assertFalse(exchange.hasStock("MSFT")); + assertFalse(exchange.hasStock("MSFT")); } /** @@ -86,7 +86,7 @@ void testHasStockReturnsFalse() { */ @Test void testGetStockReturnsCorrectStock() { - assertEquals(apple, exchange.getStock("AAPL")); + assertEquals(apple, exchange.getStock("AAPL")); } /** @@ -94,7 +94,7 @@ void testGetStockReturnsCorrectStock() { */ @Test void testGetStockReturnsNullForUnknown() { - assertNull(exchange.getStock("MSFT")); + assertNull(exchange.getStock("MSFT")); } /** @@ -102,9 +102,9 @@ void testGetStockReturnsNullForUnknown() { */ @Test void testFindStocksBySymbol() { - List result = exchange.findStocks("AAPL"); - assertEquals(1, result.size()); - assertEquals("AAPL", result.get(0).getSymbol()); + List result = exchange.findStocks("AAPL"); + assertEquals(1, result.size()); + assertEquals("AAPL", result.get(0).getSymbol()); } /** @@ -112,8 +112,8 @@ void testFindStocksBySymbol() { */ @Test void testFindStocksByCompanyName() { - List result = exchange.findStocks("e"); - assertEquals(2, result.size()); + List result = exchange.findStocks("e"); + assertEquals(2, result.size()); } /** @@ -121,8 +121,8 @@ void testFindStocksByCompanyName() { */ @Test void testFindStocksNoMatch() { - List result = exchange.findStocks("Samsung"); - assertEquals(0, result.size()); + List result = exchange.findStocks("Samsung"); + assertEquals(0, result.size()); } /** @@ -130,8 +130,8 @@ void testFindStocksNoMatch() { */ @Test void testFindStocksEmptyTermReturnsAll() { - List result = exchange.findStocks(""); - assertEquals(2, result.size()); + List result = exchange.findStocks(""); + assertEquals(2, result.size()); } /** @@ -139,10 +139,10 @@ void testFindStocksEmptyTermReturnsAll() { */ @Test void testBuyReturnsCommittedPurchase() { - Transaction t = exchange.buy("AAPL", new BigDecimal("5"), player); - assertNotNull(t); - assertTrue(t.isCommitted()); - assertInstanceOf(Purchase.class, t); + Transaction t = exchange.buy("AAPL", new BigDecimal("5"), player); + assertNotNull(t); + assertTrue(t.isCommitted()); + assertInstanceOf(Purchase.class, t); } /** @@ -150,9 +150,9 @@ void testBuyReturnsCommittedPurchase() { */ @Test void testBuyDeductsMoneyFromPlayer() { - BigDecimal before = player.getMoney(); - exchange.buy("AAPL", new BigDecimal("5"), player); - assertTrue(player.getMoney().compareTo(before) < 0); + BigDecimal before = player.getMoney(); + exchange.buy("AAPL", new BigDecimal("5"), player); + assertTrue(player.getMoney().compareTo(before) < 0); } /** @@ -160,8 +160,8 @@ void testBuyDeductsMoneyFromPlayer() { */ @Test void testBuyAddsShareToPortfolio() { - exchange.buy("AAPL", new BigDecimal("5"), player); - assertFalse(player.getPortfolio().getShares("AAPL").isEmpty()); + exchange.buy("AAPL", new BigDecimal("5"), player); + assertFalse(player.getPortfolio().getShares("AAPL").isEmpty()); } /** @@ -169,13 +169,13 @@ void testBuyAddsShareToPortfolio() { */ @Test void testSellReturnsCommittedSale() { - exchange.buy("AAPL", new BigDecimal("5"), player); - Share share = player.getPortfolio().getShares("AAPL").get(0); + exchange.buy("AAPL", new BigDecimal("5"), player); + Share share = player.getPortfolio().getShares("AAPL").get(0); - Transaction t = exchange.sell(share, player); - assertNotNull(t); - assertTrue(t.isCommitted()); - assertInstanceOf(Sale.class, t); + Transaction t = exchange.sell(share, player); + assertNotNull(t); + assertTrue(t.isCommitted()); + assertInstanceOf(Sale.class, t); } /** @@ -183,12 +183,12 @@ void testSellReturnsCommittedSale() { */ @Test void testSellAddsMoney() { - exchange.buy("AAPL", new BigDecimal("5"), player); - Share share = player.getPortfolio().getShares("AAPL").get(0); - BigDecimal before = player.getMoney(); + exchange.buy("AAPL", new BigDecimal("5"), player); + Share share = player.getPortfolio().getShares("AAPL").get(0); + BigDecimal before = player.getMoney(); - exchange.sell(share, player); - assertTrue(player.getMoney().compareTo(before) > 0); + exchange.sell(share, player); + assertTrue(player.getMoney().compareTo(before) > 0); } /** @@ -196,11 +196,11 @@ void testSellAddsMoney() { */ @Test void testSellRemovesShareFromPortfolio() { - exchange.buy("AAPL", new BigDecimal("5"), player); - Share share = player.getPortfolio().getShares("AAPL").get(0); + exchange.buy("AAPL", new BigDecimal("5"), player); + Share share = player.getPortfolio().getShares("AAPL").get(0); - exchange.sell(share, player); - assertTrue(player.getPortfolio().getShares("AAPL").isEmpty()); + exchange.sell(share, player); + assertTrue(player.getPortfolio().getShares("AAPL").isEmpty()); } /** @@ -208,9 +208,9 @@ void testSellRemovesShareFromPortfolio() { */ @Test void testGetGainersReturnsRequestedLimit() { - exchange.advance(); // prices must have changed at least once for a meaningful sort - List gainers = exchange.getGainers(1); - assertEquals(1, gainers.size()); + exchange.advance(); // prices must have changed at least once for a meaningful sort + List gainers = exchange.getGainers(1); + assertEquals(1, gainers.size()); } /** @@ -218,9 +218,9 @@ void testGetGainersReturnsRequestedLimit() { */ @Test void testGetLosersReturnsRequestedLimit() { - exchange.advance(); - List losers = exchange.getLosers(1); - assertEquals(1, losers.size()); + exchange.advance(); + List losers = exchange.getLosers(1); + assertEquals(1, losers.size()); } // ---- Negative tests ---- @@ -230,9 +230,9 @@ void testGetLosersReturnsRequestedLimit() { */ @Test void testConstructorNullNameThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Exchange(null, List.of(apple)) - ); + assertThrows(IllegalArgumentException.class, () -> + new Exchange(null, List.of(apple)) + ); } /** @@ -240,9 +240,9 @@ void testConstructorNullNameThrows() { */ @Test void testConstructorBlankNameThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Exchange(" ", List.of(apple)) - ); + assertThrows(IllegalArgumentException.class, () -> + new Exchange(" ", List.of(apple)) + ); } /** @@ -250,9 +250,9 @@ void testConstructorBlankNameThrows() { */ @Test void testConstructorNullStockListThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Exchange("X", null) - ); + assertThrows(IllegalArgumentException.class, () -> + new Exchange("X", null) + ); } /** @@ -260,12 +260,12 @@ void testConstructorNullStockListThrows() { */ @Test void testConstructorNullStockEntryThrows() { - List withNull = new ArrayList<>(); - withNull.add(apple); - withNull.add(null); - assertThrows(IllegalArgumentException.class, () -> - new Exchange("X", withNull) - ); + List withNull = new ArrayList<>(); + withNull.add(apple); + withNull.add(null); + assertThrows(IllegalArgumentException.class, () -> + new Exchange("X", withNull) + ); } /** @@ -273,9 +273,9 @@ void testConstructorNullStockEntryThrows() { */ @Test void testBuyNullSymbolThrows() { - assertThrows(IllegalArgumentException.class, () -> - exchange.buy(null, new BigDecimal("5"), player) - ); + assertThrows(IllegalArgumentException.class, () -> + exchange.buy(null, new BigDecimal("5"), player) + ); } /** @@ -283,9 +283,9 @@ void testBuyNullSymbolThrows() { */ @Test void testBuyUnknownSymbolThrows() { - assertThrows(IllegalArgumentException.class, () -> - exchange.buy("MSFT", new BigDecimal("5"), player) - ); + assertThrows(IllegalArgumentException.class, () -> + exchange.buy("MSFT", new BigDecimal("5"), player) + ); } /** @@ -293,9 +293,9 @@ void testBuyUnknownSymbolThrows() { */ @Test void testBuyZeroQuantityThrows() { - assertThrows(IllegalArgumentException.class, () -> - exchange.buy("AAPL", BigDecimal.ZERO, player) - ); + assertThrows(IllegalArgumentException.class, () -> + exchange.buy("AAPL", BigDecimal.ZERO, player) + ); } /** @@ -303,9 +303,9 @@ void testBuyZeroQuantityThrows() { */ @Test void testBuyNegativeQuantityThrows() { - assertThrows(IllegalArgumentException.class, () -> - exchange.buy("AAPL", new BigDecimal("-1"), player) - ); + assertThrows(IllegalArgumentException.class, () -> + exchange.buy("AAPL", new BigDecimal("-1"), player) + ); } /** @@ -313,9 +313,9 @@ void testBuyNegativeQuantityThrows() { */ @Test void testBuyNullPlayerThrows() { - assertThrows(IllegalArgumentException.class, () -> - exchange.buy("AAPL", new BigDecimal("5"), null) - ); + assertThrows(IllegalArgumentException.class, () -> + exchange.buy("AAPL", new BigDecimal("5"), null) + ); } /** @@ -323,10 +323,10 @@ void testBuyNullPlayerThrows() { */ @Test void testBuyInsufficientFundsThrows() { - Player poorPlayer = new Player("Broke", new BigDecimal("1")); - assertThrows(IllegalStateException.class, () -> - exchange.buy("AAPL", new BigDecimal("5"), poorPlayer) - ); + Player poorPlayer = new Player("Broke", new BigDecimal("1")); + assertThrows(IllegalStateException.class, () -> + exchange.buy("AAPL", new BigDecimal("5"), poorPlayer) + ); } /** @@ -334,11 +334,11 @@ void testBuyInsufficientFundsThrows() { */ @Test void testSellNullPlayerThrows() { - exchange.buy("AAPL", new BigDecimal("5"), player); - Share share = player.getPortfolio().getShares("AAPL").get(0); - assertThrows(IllegalArgumentException.class, () -> - exchange.sell(share, null) - ); + exchange.buy("AAPL", new BigDecimal("5"), player); + Share share = player.getPortfolio().getShares("AAPL").get(0); + assertThrows(IllegalArgumentException.class, () -> + exchange.sell(share, null) + ); } /** @@ -346,10 +346,10 @@ void testSellNullPlayerThrows() { */ @Test void testSellShareNotInPortfolioThrows() { - Share unowned = new Share(apple, new BigDecimal("1"), new BigDecimal("100")); - assertThrows(IllegalStateException.class, () -> - exchange.sell(unowned, player) - ); + Share unowned = new Share(apple, new BigDecimal("1"), new BigDecimal("100")); + assertThrows(IllegalStateException.class, () -> + exchange.sell(unowned, player) + ); } /** @@ -357,9 +357,9 @@ void testSellShareNotInPortfolioThrows() { */ @Test void testAddNullObserverThrows() { - assertThrows(IllegalArgumentException.class, () -> - exchange.addObserver(null) - ); + assertThrows(IllegalArgumentException.class, () -> + exchange.addObserver(null) + ); } } diff --git a/src/test/java/PlayerTest.java b/src/test/java/PlayerTest.java index 880ac8f..cedf182 100644 --- a/src/test/java/PlayerTest.java +++ b/src/test/java/PlayerTest.java @@ -1,10 +1,10 @@ import static org.junit.jupiter.api.Assertions.*; +import Model.Player; +import java.math.BigDecimal; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import Model.Player; -import java.math.BigDecimal; /** * Unit tests for the Player class. @@ -16,7 +16,7 @@ public class PlayerTest { @BeforeEach void setUp() { - player = new Player("Jane", new BigDecimal("1000")); + player = new Player("Jane", new BigDecimal("1000")); } // ---- Positive tests ---- @@ -26,7 +26,7 @@ void setUp() { */ @Test void testGetName() { - assertEquals("Jane", player.getName()); + assertEquals("Jane", player.getName()); } /** @@ -34,7 +34,7 @@ void testGetName() { */ @Test void testGetMoneyMatchesStartingCapital() { - assertEquals(new BigDecimal("1000"), player.getMoney()); + assertEquals(new BigDecimal("1000"), player.getMoney()); } /** @@ -42,8 +42,8 @@ void testGetMoneyMatchesStartingCapital() { */ @Test void testAddMoney() { - player.addMoney(new BigDecimal("500")); - assertEquals(new BigDecimal("1500"), player.getMoney()); + player.addMoney(new BigDecimal("500")); + assertEquals(new BigDecimal("1500"), player.getMoney()); } /** @@ -51,8 +51,8 @@ void testAddMoney() { */ @Test void testAddMoneyZero() { - player.addMoney(BigDecimal.ZERO); - assertEquals(new BigDecimal("1000"), player.getMoney()); + player.addMoney(BigDecimal.ZERO); + assertEquals(new BigDecimal("1000"), player.getMoney()); } /** @@ -60,8 +60,8 @@ void testAddMoneyZero() { */ @Test void testWithdrawMoney() { - player.withdrawMoney(new BigDecimal("400")); - assertEquals(new BigDecimal("600"), player.getMoney()); + player.withdrawMoney(new BigDecimal("400")); + assertEquals(new BigDecimal("600"), player.getMoney()); } /** @@ -69,8 +69,8 @@ void testWithdrawMoney() { */ @Test void testWithdrawMoneyZero() { - player.withdrawMoney(BigDecimal.ZERO); - assertEquals(new BigDecimal("1000"), player.getMoney()); + player.withdrawMoney(BigDecimal.ZERO); + assertEquals(new BigDecimal("1000"), player.getMoney()); } /** @@ -78,7 +78,7 @@ void testWithdrawMoneyZero() { */ @Test void testPortfolioInitiallyEmpty() { - assertTrue(player.getPortfolio().getShares().isEmpty()); + assertTrue(player.getPortfolio().getShares().isEmpty()); } /** @@ -86,7 +86,7 @@ void testPortfolioInitiallyEmpty() { */ @Test void testTransactionArchiveInitiallyEmpty() { - assertTrue(player.getTransactionArchive().isEmpty()); + assertTrue(player.getTransactionArchive().isEmpty()); } /** @@ -94,8 +94,8 @@ void testTransactionArchiveInitiallyEmpty() { */ @Test void testStartingMoneyZeroAllowed() { - Player broke = new Player("Broke", BigDecimal.ZERO); - assertEquals(BigDecimal.ZERO, broke.getMoney()); + Player broke = new Player("Broke", BigDecimal.ZERO); + assertEquals(BigDecimal.ZERO, broke.getMoney()); } // ---- Negative tests ---- @@ -105,9 +105,9 @@ void testStartingMoneyZeroAllowed() { */ @Test void testNullNameThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Player(null, new BigDecimal("1000")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Player(null, new BigDecimal("1000")) + ); } /** @@ -115,9 +115,9 @@ void testNullNameThrows() { */ @Test void testBlankNameThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Player(" ", new BigDecimal("1000")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Player(" ", new BigDecimal("1000")) + ); } /** @@ -125,9 +125,9 @@ void testBlankNameThrows() { */ @Test void testNullStartingMoneyThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Player("Jane", null) - ); + assertThrows(IllegalArgumentException.class, () -> + new Player("Jane", null) + ); } /** @@ -135,9 +135,9 @@ void testNullStartingMoneyThrows() { */ @Test void testNegativeStartingMoneyThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Player("Jane", new BigDecimal("-1")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Player("Jane", new BigDecimal("-1")) + ); } /** @@ -145,9 +145,9 @@ void testNegativeStartingMoneyThrows() { */ @Test void testAddNullAmountThrows() { - assertThrows(IllegalArgumentException.class, () -> - player.addMoney(null) - ); + assertThrows(IllegalArgumentException.class, () -> + player.addMoney(null) + ); } /** @@ -155,9 +155,9 @@ void testAddNullAmountThrows() { */ @Test void testAddNegativeAmountThrows() { - assertThrows(IllegalArgumentException.class, () -> - player.addMoney(new BigDecimal("-100")) - ); + assertThrows(IllegalArgumentException.class, () -> + player.addMoney(new BigDecimal("-100")) + ); } /** @@ -165,9 +165,9 @@ void testAddNegativeAmountThrows() { */ @Test void testWithdrawNullAmountThrows() { - assertThrows(IllegalArgumentException.class, () -> - player.withdrawMoney(null) - ); + assertThrows(IllegalArgumentException.class, () -> + player.withdrawMoney(null) + ); } /** @@ -175,9 +175,9 @@ void testWithdrawNullAmountThrows() { */ @Test void testWithdrawNegativeAmountThrows() { - assertThrows(IllegalArgumentException.class, () -> - player.withdrawMoney(new BigDecimal("-100")) - ); + assertThrows(IllegalArgumentException.class, () -> + player.withdrawMoney(new BigDecimal("-100")) + ); } } diff --git a/src/test/java/PortfolioTest.java b/src/test/java/PortfolioTest.java index d55259d..359f3c5 100644 --- a/src/test/java/PortfolioTest.java +++ b/src/test/java/PortfolioTest.java @@ -1,4 +1,5 @@ import static org.junit.jupiter.api.Assertions.*; + import Model.Portfolio; import Model.Share; import Model.Stock; @@ -20,9 +21,9 @@ public class PortfolioTest { @BeforeEach void setUp() { - portfolio = new Portfolio(); - stock = new Stock("AAPL", "Apple", new BigDecimal("150")); - share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + portfolio = new Portfolio(); + stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); } // ---- Positive tests ---- @@ -32,9 +33,9 @@ void setUp() { */ @Test void testAddShare() { - boolean result = portfolio.addShare(share); - assertTrue(result); - assertTrue(portfolio.contains(share)); + boolean result = portfolio.addShare(share); + assertTrue(result); + assertTrue(portfolio.contains(share)); } /** @@ -42,13 +43,13 @@ void testAddShare() { */ @Test void testAddMultipleShares() { - Stock stock2 = new Stock("GOOGL", "Google", new BigDecimal("200")); - Share share2 = new Share(stock2, new BigDecimal("5"), new BigDecimal("190")); + Stock stock2 = new Stock("GOOGL", "Google", new BigDecimal("200")); + Share share2 = new Share(stock2, new BigDecimal("5"), new BigDecimal("190")); - portfolio.addShare(share); - portfolio.addShare(share2); + portfolio.addShare(share); + portfolio.addShare(share2); - assertEquals(2, portfolio.getShares().size()); + assertEquals(2, portfolio.getShares().size()); } /** @@ -56,10 +57,10 @@ void testAddMultipleShares() { */ @Test void testRemoveShare() { - portfolio.addShare(share); - boolean result = portfolio.removeShare(share); - assertTrue(result); - assertFalse(portfolio.contains(share)); + portfolio.addShare(share); + boolean result = portfolio.removeShare(share); + assertTrue(result); + assertFalse(portfolio.contains(share)); } /** @@ -67,8 +68,8 @@ void testRemoveShare() { */ @Test void testRemoveShareNotInPortfolioReturnsFalse() { - boolean result = portfolio.removeShare(share); - assertFalse(result); + boolean result = portfolio.removeShare(share); + assertFalse(result); } /** @@ -76,10 +77,10 @@ void testRemoveShareNotInPortfolioReturnsFalse() { */ @Test void testGetSharesReturnsAll() { - portfolio.addShare(share); - List shares = portfolio.getShares(); - assertEquals(1, shares.size()); - assertTrue(shares.contains(share)); + portfolio.addShare(share); + List shares = portfolio.getShares(); + assertEquals(1, shares.size()); + assertTrue(shares.contains(share)); } /** @@ -88,10 +89,10 @@ void testGetSharesReturnsAll() { */ @Test void testGetSharesIsDefensiveCopy() { - portfolio.addShare(share); - List copy = portfolio.getShares(); - copy.clear(); - assertEquals(1, portfolio.getShares().size()); + portfolio.addShare(share); + List copy = portfolio.getShares(); + copy.clear(); + assertEquals(1, portfolio.getShares().size()); } /** @@ -99,15 +100,15 @@ void testGetSharesIsDefensiveCopy() { */ @Test void testGetSharesBySymbol() { - Stock stock2 = new Stock("GOOGL", "Google", new BigDecimal("200")); - Share share2 = new Share(stock2, new BigDecimal("5"), new BigDecimal("190")); + Stock stock2 = new Stock("GOOGL", "Google", new BigDecimal("200")); + Share share2 = new Share(stock2, new BigDecimal("5"), new BigDecimal("190")); - portfolio.addShare(share); - portfolio.addShare(share2); + portfolio.addShare(share); + portfolio.addShare(share2); - List result = portfolio.getShares("AAPL"); - assertEquals(1, result.size()); - assertTrue(result.contains(share)); + List result = portfolio.getShares("AAPL"); + assertEquals(1, result.size()); + assertTrue(result.contains(share)); } /** @@ -115,9 +116,9 @@ void testGetSharesBySymbol() { */ @Test void testGetSharesBySymbolNoMatch() { - portfolio.addShare(share); - List result = portfolio.getShares("MSFT"); - assertTrue(result.isEmpty()); + portfolio.addShare(share); + List result = portfolio.getShares("MSFT"); + assertTrue(result.isEmpty()); } /** @@ -125,8 +126,8 @@ void testGetSharesBySymbolNoMatch() { */ @Test void testContainsReturnsTrueWhenPresent() { - portfolio.addShare(share); - assertTrue(portfolio.contains(share)); + portfolio.addShare(share); + assertTrue(portfolio.contains(share)); } /** @@ -134,7 +135,7 @@ void testContainsReturnsTrueWhenPresent() { */ @Test void testContainsReturnsFalseWhenAbsent() { - assertFalse(portfolio.contains(share)); + assertFalse(portfolio.contains(share)); } /** @@ -142,7 +143,7 @@ void testContainsReturnsFalseWhenAbsent() { */ @Test void testGetNetWorthEmptyPortfolio() { - assertEquals(BigDecimal.ZERO, portfolio.getNetWorth()); + assertEquals(BigDecimal.ZERO, portfolio.getNetWorth()); } /** @@ -150,9 +151,9 @@ void testGetNetWorthEmptyPortfolio() { */ @Test void testGetNetWorthWithShares() { - portfolio.addShare(share); - // net worth should be positive when portfolio has holdings - assertTrue(portfolio.getNetWorth().compareTo(BigDecimal.ZERO) > 0); + portfolio.addShare(share); + // net worth should be positive when portfolio has holdings + assertTrue(portfolio.getNetWorth().compareTo(BigDecimal.ZERO) > 0); } // ---- Negative tests ---- @@ -162,9 +163,9 @@ void testGetNetWorthWithShares() { */ @Test void testAddNullShareThrows() { - assertThrows(IllegalArgumentException.class, () -> - portfolio.addShare(null) - ); + assertThrows(IllegalArgumentException.class, () -> + portfolio.addShare(null) + ); } /** @@ -172,9 +173,9 @@ void testAddNullShareThrows() { */ @Test void testRemoveNullShareThrows() { - assertThrows(IllegalArgumentException.class, () -> - portfolio.removeShare(null) - ); + assertThrows(IllegalArgumentException.class, () -> + portfolio.removeShare(null) + ); } /** @@ -182,9 +183,9 @@ void testRemoveNullShareThrows() { */ @Test void testContainsNullShareThrows() { - assertThrows(IllegalArgumentException.class, () -> - portfolio.contains(null) - ); + assertThrows(IllegalArgumentException.class, () -> + portfolio.contains(null) + ); } /** @@ -192,9 +193,9 @@ void testContainsNullShareThrows() { */ @Test void testGetSharesByNullSymbolThrows() { - assertThrows(IllegalArgumentException.class, () -> - portfolio.getShares((String) null) - ); + assertThrows(IllegalArgumentException.class, () -> + portfolio.getShares((String) null) + ); } /** @@ -202,8 +203,8 @@ void testGetSharesByNullSymbolThrows() { */ @Test void testGetSharesByBlankSymbolThrows() { - assertThrows(IllegalArgumentException.class, () -> - portfolio.getShares(" ") - ); + assertThrows(IllegalArgumentException.class, () -> + portfolio.getShares(" ") + ); } } diff --git a/src/test/java/PurchaseTest.java b/src/test/java/PurchaseTest.java index 26d2dd9..de1c2ca 100644 --- a/src/test/java/PurchaseTest.java +++ b/src/test/java/PurchaseTest.java @@ -1,13 +1,12 @@ import static org.junit.jupiter.api.Assertions.*; -import java.math.BigDecimal; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; import Model.Player; import Model.Purchase; import Model.Share; import Model.Stock; +import java.math.BigDecimal; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; /** * Unit tests for the Purchase class. @@ -22,10 +21,10 @@ public class PurchaseTest { @BeforeEach void setUp() { - stock = new Stock("AAPL", "Apple", new BigDecimal("100")); - share = new Share(stock, new BigDecimal("20"), new BigDecimal("50")); - purchase = new Purchase(share, 1); - player = new Player("Jane", new BigDecimal("500000")); + stock = new Stock("AAPL", "Apple", new BigDecimal("100")); + share = new Share(stock, new BigDecimal("20"), new BigDecimal("50")); + purchase = new Purchase(share, 1); + player = new Player("Jane", new BigDecimal("500000")); } // ---- Positive tests ---- @@ -35,9 +34,9 @@ void setUp() { */ @Test void testCommitDeductsMoneyFromPlayer() { - BigDecimal before = player.getMoney(); - purchase.commit(player); - assertTrue(player.getMoney().compareTo(before) < 0); + BigDecimal before = player.getMoney(); + purchase.commit(player); + assertTrue(player.getMoney().compareTo(before) < 0); } /** @@ -45,8 +44,8 @@ void testCommitDeductsMoneyFromPlayer() { */ @Test void testCommitAddsShareToPortfolio() { - purchase.commit(player); - assertTrue(player.getPortfolio().contains(share)); + purchase.commit(player); + assertTrue(player.getPortfolio().contains(share)); } /** @@ -54,8 +53,8 @@ void testCommitAddsShareToPortfolio() { */ @Test void testCommitRecordedInArchive() { - purchase.commit(player); - assertTrue(player.getTransactionArchive().getAllTransactions().contains(purchase)); + purchase.commit(player); + assertTrue(player.getTransactionArchive().getAllTransactions().contains(purchase)); } /** @@ -63,8 +62,8 @@ void testCommitRecordedInArchive() { */ @Test void testCommitSetsCommittedFlag() { - purchase.commit(player); - assertTrue(purchase.isCommitted()); + purchase.commit(player); + assertTrue(purchase.isCommitted()); } /** @@ -72,7 +71,7 @@ void testCommitSetsCommittedFlag() { */ @Test void testGetShareReturnsCorrectShare() { - assertEquals(share, purchase.getShare()); + assertEquals(share, purchase.getShare()); } /** @@ -80,7 +79,7 @@ void testGetShareReturnsCorrectShare() { */ @Test void testGetWeekReturnsCorrectWeek() { - assertEquals(1, purchase.getWeek()); + assertEquals(1, purchase.getWeek()); } // ---- Negative tests ---- @@ -90,9 +89,9 @@ void testGetWeekReturnsCorrectWeek() { */ @Test void testCommitNullPlayerThrows() { - assertThrows(IllegalArgumentException.class, () -> - purchase.commit(null) - ); + assertThrows(IllegalArgumentException.class, () -> + purchase.commit(null) + ); } /** @@ -100,10 +99,10 @@ void testCommitNullPlayerThrows() { */ @Test void testCommitInsufficientFundsThrows() { - Player poorPlayer = new Player("Broke", new BigDecimal("1")); - assertThrows(IllegalStateException.class, () -> - purchase.commit(poorPlayer) - ); + Player poorPlayer = new Player("Broke", new BigDecimal("1")); + assertThrows(IllegalStateException.class, () -> + purchase.commit(poorPlayer) + ); } /** @@ -111,10 +110,10 @@ void testCommitInsufficientFundsThrows() { */ @Test void testCommitAlreadyCommittedThrows() { - purchase.commit(player); - assertThrows(IllegalStateException.class, () -> - purchase.commit(player) - ); + purchase.commit(player); + assertThrows(IllegalStateException.class, () -> + purchase.commit(player) + ); } /** @@ -122,9 +121,9 @@ void testCommitAlreadyCommittedThrows() { */ @Test void testConstructorWeekZeroThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Purchase(share, 0) - ); + assertThrows(IllegalArgumentException.class, () -> + new Purchase(share, 0) + ); } /** @@ -132,9 +131,9 @@ void testConstructorWeekZeroThrows() { */ @Test void testConstructorNegativeWeekThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Purchase(share, -5) - ); + assertThrows(IllegalArgumentException.class, () -> + new Purchase(share, -5) + ); } } diff --git a/src/test/java/SaleTest.java b/src/test/java/SaleTest.java index 39d5516..31efe4d 100644 --- a/src/test/java/SaleTest.java +++ b/src/test/java/SaleTest.java @@ -1,13 +1,13 @@ -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; import Model.Player; import Model.Sale; import Model.Share; import Model.Stock; -import static org.junit.jupiter.api.Assertions.*; - import java.math.BigDecimal; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + /** * Unit tests for the Sale class. @@ -22,11 +22,11 @@ public class SaleTest { @BeforeEach void setUp() { - stock = new Stock("AAPL", "Apple", new BigDecimal("100")); - share = new Share(stock, new BigDecimal("20"), new BigDecimal("80")); - sale = new Sale(share, 1); - player = new Player("Jane", new BigDecimal("500")); - player.getPortfolio().addShare(share); + stock = new Stock("AAPL", "Apple", new BigDecimal("100")); + share = new Share(stock, new BigDecimal("20"), new BigDecimal("80")); + sale = new Sale(share, 1); + player = new Player("Jane", new BigDecimal("500")); + player.getPortfolio().addShare(share); } // ---- Positive tests ---- @@ -36,9 +36,9 @@ void setUp() { */ @Test void testCommitAddsMoney() { - BigDecimal before = player.getMoney(); - sale.commit(player); - assertTrue(player.getMoney().compareTo(before) > 0); + BigDecimal before = player.getMoney(); + sale.commit(player); + assertTrue(player.getMoney().compareTo(before) > 0); } /** @@ -46,8 +46,8 @@ void testCommitAddsMoney() { */ @Test void testCommitRemovesShareFromPortfolio() { - sale.commit(player); - assertFalse(player.getPortfolio().contains(share)); + sale.commit(player); + assertFalse(player.getPortfolio().contains(share)); } /** @@ -55,8 +55,8 @@ void testCommitRemovesShareFromPortfolio() { */ @Test void testCommitRecordedInArchive() { - sale.commit(player); - assertTrue(player.getTransactionArchive().getAllTransactions().contains(sale)); + sale.commit(player); + assertTrue(player.getTransactionArchive().getAllTransactions().contains(sale)); } /** @@ -64,8 +64,8 @@ void testCommitRecordedInArchive() { */ @Test void testCommitSetsCommittedFlag() { - sale.commit(player); - assertTrue(sale.isCommitted()); + sale.commit(player); + assertTrue(sale.isCommitted()); } /** @@ -73,7 +73,7 @@ void testCommitSetsCommittedFlag() { */ @Test void testGetShareReturnsCorrectShare() { - assertEquals(share, sale.getShare()); + assertEquals(share, sale.getShare()); } /** @@ -81,7 +81,7 @@ void testGetShareReturnsCorrectShare() { */ @Test void testGetWeekReturnsCorrectWeek() { - assertEquals(1, sale.getWeek()); + assertEquals(1, sale.getWeek()); } // ---- Negative tests ---- @@ -91,9 +91,9 @@ void testGetWeekReturnsCorrectWeek() { */ @Test void testCommitNullPlayerThrows() { - assertThrows(IllegalArgumentException.class, () -> - sale.commit(null) - ); + assertThrows(IllegalArgumentException.class, () -> + sale.commit(null) + ); } /** @@ -101,10 +101,10 @@ void testCommitNullPlayerThrows() { */ @Test void testCommitAlreadyCommittedThrows() { - sale.commit(player); - assertThrows(IllegalStateException.class, () -> - sale.commit(player) - ); + sale.commit(player); + assertThrows(IllegalStateException.class, () -> + sale.commit(player) + ); } /** @@ -112,10 +112,10 @@ void testCommitAlreadyCommittedThrows() { */ @Test void testCommitShareNotInPortfolioThrows() { - Player otherPlayer = new Player("Bob", new BigDecimal("500")); - assertThrows(IllegalStateException.class, () -> - sale.commit(otherPlayer) - ); + Player otherPlayer = new Player("Bob", new BigDecimal("500")); + assertThrows(IllegalStateException.class, () -> + sale.commit(otherPlayer) + ); } /** @@ -123,9 +123,9 @@ void testCommitShareNotInPortfolioThrows() { */ @Test void testConstructorWeekZeroThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Sale(share, 0) - ); + assertThrows(IllegalArgumentException.class, () -> + new Sale(share, 0) + ); } /** @@ -133,9 +133,9 @@ void testConstructorWeekZeroThrows() { */ @Test void testConstructorNegativeWeekThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Sale(share, -3) - ); + assertThrows(IllegalArgumentException.class, () -> + new Sale(share, -3) + ); } } diff --git a/src/test/java/ShareTest.java b/src/test/java/ShareTest.java index af8d2cc..37b5422 100644 --- a/src/test/java/ShareTest.java +++ b/src/test/java/ShareTest.java @@ -1,11 +1,12 @@ import static org.junit.jupiter.api.Assertions.*; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - import Model.Share; import Model.Stock; import java.math.BigDecimal; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + + /** * Unit tests for the Share class. @@ -17,7 +18,7 @@ public class ShareTest { @BeforeEach void setUp() { - stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + stock = new Stock("AAPL", "Apple", new BigDecimal("150")); } // ---- Positive tests ---- @@ -27,8 +28,8 @@ void setUp() { */ @Test void testShareConstructorNotNull() { - Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); - assertNotNull(share); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + assertNotNull(share); } /** @@ -36,8 +37,8 @@ void testShareConstructorNotNull() { */ @Test void testGetStock() { - Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); - assertEquals(stock, share.getStock()); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + assertEquals(stock, share.getStock()); } /** @@ -45,8 +46,8 @@ void testGetStock() { */ @Test void testGetQuantity() { - Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); - assertEquals(new BigDecimal("10"), share.getQuantity()); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + assertEquals(new BigDecimal("10"), share.getQuantity()); } /** @@ -54,8 +55,8 @@ void testGetQuantity() { */ @Test void testGetPurchasePrice() { - Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); - assertEquals(new BigDecimal("140"), share.getPurchasePrice()); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + assertEquals(new BigDecimal("140"), share.getPurchasePrice()); } /** @@ -63,9 +64,9 @@ void testGetPurchasePrice() { */ @Test 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()); + // 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()); } // ---- Negative tests ---- @@ -75,9 +76,9 @@ void testPurchasePriceZeroAllowed() { */ @Test void testNullStockThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Share(null, new BigDecimal("10"), new BigDecimal("100")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Share(null, new BigDecimal("10"), new BigDecimal("100")) + ); } /** @@ -85,9 +86,9 @@ void testNullStockThrows() { */ @Test void testNullQuantityThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Share(stock, null, new BigDecimal("100")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Share(stock, null, new BigDecimal("100")) + ); } /** @@ -95,9 +96,9 @@ void testNullQuantityThrows() { */ @Test void testZeroQuantityThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Share(stock, BigDecimal.ZERO, new BigDecimal("100")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Share(stock, BigDecimal.ZERO, new BigDecimal("100")) + ); } /** @@ -105,9 +106,9 @@ void testZeroQuantityThrows() { */ @Test void testNegativeQuantityThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Share(stock, new BigDecimal("-5"), new BigDecimal("100")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Share(stock, new BigDecimal("-5"), new BigDecimal("100")) + ); } /** @@ -115,9 +116,9 @@ void testNegativeQuantityThrows() { */ @Test void testNullPurchasePriceThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Share(stock, new BigDecimal("10"), null) - ); + assertThrows(IllegalArgumentException.class, () -> + new Share(stock, new BigDecimal("10"), null) + ); } /** @@ -125,9 +126,9 @@ void testNullPurchasePriceThrows() { */ @Test void testNegativePurchasePriceThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Share(stock, new BigDecimal("10"), new BigDecimal("-50")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Share(stock, new BigDecimal("10"), new BigDecimal("-50")) + ); } } diff --git a/src/test/java/StockTest.java b/src/test/java/StockTest.java index 5addd52..c07c75b 100644 --- a/src/test/java/StockTest.java +++ b/src/test/java/StockTest.java @@ -17,7 +17,7 @@ public class StockTest { @BeforeEach void setUp() { - stock = new Stock("AAPL", "Apple", new BigDecimal("1000")); + stock = new Stock("AAPL", "Apple", new BigDecimal("1000")); } // ---- Positive tests ---- @@ -27,7 +27,7 @@ void setUp() { */ @Test void testGetSymbol() { - assertEquals("AAPL", stock.getSymbol()); + assertEquals("AAPL", stock.getSymbol()); } /** @@ -35,7 +35,7 @@ void testGetSymbol() { */ @Test void testGetCompany() { - assertEquals("Apple", stock.getCompany()); + assertEquals("Apple", stock.getCompany()); } /** @@ -43,7 +43,7 @@ void testGetCompany() { */ @Test void testGetSalesPrice() { - assertEquals(new BigDecimal("1000"), stock.getSalesPrice()); + assertEquals(new BigDecimal("1000"), stock.getSalesPrice()); } /** @@ -51,8 +51,8 @@ void testGetSalesPrice() { */ @Test void testGetSalesPriceZero() { - Stock zeroStock = new Stock("ZERO", "ZeroCorp", new BigDecimal("0")); - assertEquals(new BigDecimal("0"), zeroStock.getSalesPrice()); + Stock zeroStock = new Stock("ZERO", "ZeroCorp", new BigDecimal("0")); + assertEquals(new BigDecimal("0"), zeroStock.getSalesPrice()); } /** @@ -60,8 +60,8 @@ void testGetSalesPriceZero() { */ @Test void testAddNewSalesPrice() { - stock.addNewSalesPrice(new BigDecimal("1200")); - assertEquals(new BigDecimal("1200"), stock.getSalesPrice()); + stock.addNewSalesPrice(new BigDecimal("1200")); + assertEquals(new BigDecimal("1200"), stock.getSalesPrice()); } /** @@ -69,8 +69,8 @@ void testAddNewSalesPrice() { */ @Test void testAddNewSalesPriceZero() { - stock.addNewSalesPrice(new BigDecimal("0")); - assertEquals(new BigDecimal("0"), stock.getSalesPrice()); + stock.addNewSalesPrice(new BigDecimal("0")); + assertEquals(new BigDecimal("0"), stock.getSalesPrice()); } /** @@ -78,9 +78,9 @@ void testAddNewSalesPriceZero() { */ @Test void testGetHistoricalPricesInitial() { - List history = stock.getHistoricalPrices(); - assertEquals(1, history.size()); - assertEquals(new BigDecimal("1000"), history.get(0)); + List history = stock.getHistoricalPrices(); + assertEquals(1, history.size()); + assertEquals(new BigDecimal("1000"), history.get(0)); } /** @@ -88,9 +88,9 @@ void testGetHistoricalPricesInitial() { */ @Test void testGetHistoricalPricesAfterUpdates() { - stock.addNewSalesPrice(new BigDecimal("1100")); - stock.addNewSalesPrice(new BigDecimal("1200")); - assertEquals(3, stock.getHistoricalPrices().size()); + stock.addNewSalesPrice(new BigDecimal("1100")); + stock.addNewSalesPrice(new BigDecimal("1200")); + assertEquals(3, stock.getHistoricalPrices().size()); } /** @@ -98,9 +98,9 @@ void testGetHistoricalPricesAfterUpdates() { */ @Test void testGetHighestPrice() { - stock.addNewSalesPrice(new BigDecimal("1500")); - stock.addNewSalesPrice(new BigDecimal("800")); - assertEquals(new BigDecimal("1500"), stock.getHighestPrice()); + stock.addNewSalesPrice(new BigDecimal("1500")); + stock.addNewSalesPrice(new BigDecimal("800")); + assertEquals(new BigDecimal("1500"), stock.getHighestPrice()); } /** @@ -108,9 +108,9 @@ void testGetHighestPrice() { */ @Test void testGetLowestPrice() { - stock.addNewSalesPrice(new BigDecimal("1500")); - stock.addNewSalesPrice(new BigDecimal("800")); - assertEquals(new BigDecimal("800"), stock.getLowestPrice()); + stock.addNewSalesPrice(new BigDecimal("1500")); + stock.addNewSalesPrice(new BigDecimal("800")); + assertEquals(new BigDecimal("800"), stock.getLowestPrice()); } /** @@ -118,8 +118,8 @@ void testGetLowestPrice() { */ @Test void testGetLatestPriceChangePositive() { - stock.addNewSalesPrice(new BigDecimal("1100")); - assertEquals(new BigDecimal("100"), stock.getLatestPriceChange()); + stock.addNewSalesPrice(new BigDecimal("1100")); + assertEquals(new BigDecimal("100"), stock.getLatestPriceChange()); } /** @@ -127,8 +127,8 @@ void testGetLatestPriceChangePositive() { */ @Test void testGetLatestPriceChangeNegative() { - stock.addNewSalesPrice(new BigDecimal("900")); - assertEquals(new BigDecimal("-100"), stock.getLatestPriceChange()); + stock.addNewSalesPrice(new BigDecimal("900")); + assertEquals(new BigDecimal("-100"), stock.getLatestPriceChange()); } /** @@ -136,7 +136,7 @@ void testGetLatestPriceChangeNegative() { */ @Test void testGetLatestPriceChangeOnlyOnePrice() { - assertEquals(BigDecimal.ZERO, stock.getLatestPriceChange()); + assertEquals(BigDecimal.ZERO, stock.getLatestPriceChange()); } /** @@ -144,9 +144,9 @@ void testGetLatestPriceChangeOnlyOnePrice() { */ @Test void testHistoricalPricesIsDefensiveCopy() { - List history = stock.getHistoricalPrices(); - history.add(new BigDecimal("9999")); - assertEquals(1, stock.getHistoricalPrices().size()); + List history = stock.getHistoricalPrices(); + history.add(new BigDecimal("9999")); + assertEquals(1, stock.getHistoricalPrices().size()); } // ---- Negative tests ---- @@ -156,9 +156,9 @@ void testHistoricalPricesIsDefensiveCopy() { */ @Test void testNullSymbolThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Stock(null, "Apple", new BigDecimal("100")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Stock(null, "Apple", new BigDecimal("100")) + ); } /** @@ -166,9 +166,9 @@ void testNullSymbolThrows() { */ @Test void testBlankSymbolThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Stock(" ", "Apple", new BigDecimal("100")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Stock(" ", "Apple", new BigDecimal("100")) + ); } /** @@ -176,9 +176,9 @@ void testBlankSymbolThrows() { */ @Test void testNullCompanyThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Stock("AAPL", null, new BigDecimal("100")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Stock("AAPL", null, new BigDecimal("100")) + ); } /** @@ -186,9 +186,9 @@ void testNullCompanyThrows() { */ @Test void testBlankCompanyThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Stock("AAPL", " ", new BigDecimal("100")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Stock("AAPL", " ", new BigDecimal("100")) + ); } /** @@ -196,9 +196,9 @@ void testBlankCompanyThrows() { */ @Test void testNullInitialPriceThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Stock("AAPL", "Apple", null) - ); + assertThrows(IllegalArgumentException.class, () -> + new Stock("AAPL", "Apple", null) + ); } /** @@ -206,9 +206,9 @@ void testNullInitialPriceThrows() { */ @Test void testNegativeInitialPriceThrows() { - assertThrows(IllegalArgumentException.class, () -> - new Stock("AAPL", "Apple", new BigDecimal("-1")) - ); + assertThrows(IllegalArgumentException.class, () -> + new Stock("AAPL", "Apple", new BigDecimal("-1")) + ); } /** @@ -216,9 +216,9 @@ void testNegativeInitialPriceThrows() { */ @Test void testAddNullPriceThrows() { - assertThrows(IllegalArgumentException.class, () -> - stock.addNewSalesPrice(null) - ); + assertThrows(IllegalArgumentException.class, () -> + stock.addNewSalesPrice(null) + ); } /** @@ -226,9 +226,9 @@ void testAddNullPriceThrows() { */ @Test void testAddNegativePriceThrows() { - assertThrows(IllegalArgumentException.class, () -> - stock.addNewSalesPrice(new BigDecimal("-10")) - ); + assertThrows(IllegalArgumentException.class, () -> + stock.addNewSalesPrice(new BigDecimal("-10")) + ); } } diff --git a/src/test/java/TransactionArchiveTest.java b/src/test/java/TransactionArchiveTest.java index c3a1fa1..df7ed0c 100644 --- a/src/test/java/TransactionArchiveTest.java +++ b/src/test/java/TransactionArchiveTest.java @@ -25,11 +25,11 @@ public class TransactionArchiveTest { @BeforeEach void setUp() { - archive = new TransactionArchive(); - stock = new Stock("AAPL", "Apple", new BigDecimal("100")); - share = new Share(stock, new BigDecimal("10"), new BigDecimal("90")); - purchase = new Purchase(share, 1); - sale = new Sale(share, 2); + archive = new TransactionArchive(); + stock = new Stock("AAPL", "Apple", new BigDecimal("100")); + share = new Share(stock, new BigDecimal("10"), new BigDecimal("90")); + purchase = new Purchase(share, 1); + sale = new Sale(share, 2); } // ---- Positive tests ---- @@ -39,7 +39,7 @@ void setUp() { */ @Test void testIsEmptyOnCreation() { - assertTrue(archive.isEmpty()); + assertTrue(archive.isEmpty()); } /** @@ -47,8 +47,8 @@ void testIsEmptyOnCreation() { */ @Test void testIsEmptyAfterAdd() { - archive.add(purchase); - assertFalse(archive.isEmpty()); + archive.add(purchase); + assertFalse(archive.isEmpty()); } /** @@ -56,7 +56,7 @@ void testIsEmptyAfterAdd() { */ @Test void testAddReturnsTrue() { - assertTrue(archive.add(purchase)); + assertTrue(archive.add(purchase)); } /** @@ -64,9 +64,9 @@ void testAddReturnsTrue() { */ @Test void testGetAllTransactions() { - archive.add(purchase); - archive.add(sale); - assertEquals(2, archive.getAllTransactions().size()); + archive.add(purchase); + archive.add(sale); + assertEquals(2, archive.getAllTransactions().size()); } /** @@ -74,10 +74,10 @@ void testGetAllTransactions() { */ @Test void testGetAllTransactionsIsDefensiveCopy() { - archive.add(purchase); - List copy = archive.getAllTransactions(); - copy.clear(); - assertEquals(1, archive.getAllTransactions().size()); + archive.add(purchase); + List copy = archive.getAllTransactions(); + copy.clear(); + assertEquals(1, archive.getAllTransactions().size()); } /** @@ -85,12 +85,12 @@ void testGetAllTransactionsIsDefensiveCopy() { */ @Test void testGetTransactionsByWeek() { - archive.add(purchase); // week 1 - archive.add(sale); // week 2 + archive.add(purchase); // week 1 + archive.add(sale); // week 2 - List week1 = archive.getTransactions(1); - assertEquals(1, week1.size()); - assertTrue(week1.contains(purchase)); + List week1 = archive.getTransactions(1); + assertEquals(1, week1.size()); + assertTrue(week1.contains(purchase)); } /** @@ -98,8 +98,8 @@ void testGetTransactionsByWeek() { */ @Test void testGetTransactionsByWeekNoMatch() { - archive.add(purchase); // week 1 - assertTrue(archive.getTransactions(99).isEmpty()); + archive.add(purchase); // week 1 + assertTrue(archive.getTransactions(99).isEmpty()); } /** @@ -107,12 +107,12 @@ void testGetTransactionsByWeekNoMatch() { */ @Test void testGetPurchaseByWeek() { - archive.add(purchase); // week 1 - archive.add(sale); // week 2 + archive.add(purchase); // week 1 + archive.add(sale); // week 2 - List purchases = archive.getPurchase(1); - assertEquals(1, purchases.size()); - assertTrue(purchases.contains(purchase)); + List purchases = archive.getPurchase(1); + assertEquals(1, purchases.size()); + assertTrue(purchases.contains(purchase)); } /** @@ -120,11 +120,11 @@ void testGetPurchaseByWeek() { */ @Test void testGetPurchaseByWeekExcludesSales() { - // Add a sale at week 1 — should not appear in getPurchase(1) - Sale saleWeek1 = new Sale(share, 1); - archive.add(saleWeek1); + // Add a sale at week 1 — should not appear in getPurchase(1) + Sale saleWeek1 = new Sale(share, 1); + archive.add(saleWeek1); - assertTrue(archive.getPurchase(1).isEmpty()); + assertTrue(archive.getPurchase(1).isEmpty()); } /** @@ -132,12 +132,12 @@ void testGetPurchaseByWeekExcludesSales() { */ @Test void testGetSaleByWeek() { - archive.add(purchase); // week 1 - archive.add(sale); // week 2 + archive.add(purchase); // week 1 + archive.add(sale); // week 2 - List sales = archive.getSale(2); - assertEquals(1, sales.size()); - assertTrue(sales.contains(sale)); + List sales = archive.getSale(2); + assertEquals(1, sales.size()); + assertTrue(sales.contains(sale)); } /** @@ -145,11 +145,11 @@ void testGetSaleByWeek() { */ @Test void testGetSaleByWeekExcludesPurchases() { - // Add a purchase at week 2 — should not appear in getSale(2) - Purchase purchaseWeek2 = new Purchase(share, 2); - archive.add(purchaseWeek2); + // Add a purchase at week 2 — should not appear in getSale(2) + Purchase purchaseWeek2 = new Purchase(share, 2); + archive.add(purchaseWeek2); - assertTrue(archive.getSale(2).isEmpty()); + assertTrue(archive.getSale(2).isEmpty()); } /** @@ -157,7 +157,7 @@ void testGetSaleByWeekExcludesPurchases() { */ @Test void testCountDistinctWeeksEmpty() { - assertEquals(0, archive.countDistinctWeeks()); + assertEquals(0, archive.countDistinctWeeks()); } /** @@ -165,10 +165,10 @@ void testCountDistinctWeeksEmpty() { */ @Test void testCountDistinctWeeksMultipleTransactionsSameWeek() { - Purchase purchase2 = new Purchase(share, 1); - archive.add(purchase); - archive.add(purchase2); - assertEquals(1, archive.countDistinctWeeks()); + Purchase purchase2 = new Purchase(share, 1); + archive.add(purchase); + archive.add(purchase2); + assertEquals(1, archive.countDistinctWeeks()); } /** @@ -176,9 +176,9 @@ void testCountDistinctWeeksMultipleTransactionsSameWeek() { */ @Test void testCountDistinctWeeksAcrossWeeks() { - archive.add(purchase); // week 1 - archive.add(sale); // week 2 - assertEquals(2, archive.countDistinctWeeks()); + archive.add(purchase); // week 1 + archive.add(sale); // week 2 + assertEquals(2, archive.countDistinctWeeks()); } // ---- Negative tests ---- @@ -188,8 +188,8 @@ void testCountDistinctWeeksAcrossWeeks() { */ @Test void testAddNullThrows() { - assertThrows(IllegalArgumentException.class, () -> - archive.add(null) + assertThrows(IllegalArgumentException.class, () -> + archive.add(null) ); } } diff --git a/target/test-classes/ExchangeTest.class b/target/test-classes/ExchangeTest.class index c9e32fd89c87350a4ead3475fed0f9295f726766..c301cc2bbe7c95b0d8949da3ce9eb1513c14c45e 100644 GIT binary patch literal 10397 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 diff --git a/target/test-classes/PortfolioTest.class b/target/test-classes/PortfolioTest.class index 6b62be54f6a640c947ba2b422f49ac89d83264c0..69298632699854eac962578599797b25f07ecf7b 100644 GIT binary patch delta 358 zcmW-aJugE67=_Or?$ETi?rnRe>N|>r##hv$v=O4ZXp2EmVrUyuY_t=#NNbS3n`jIY z!c;Lxh^<(JnEiwP365^(dGfyJlznAirD#=jIklc>ZdlQTE_g7FX6dwTYF^mT4IMpb zL$93KuFL_L7{m~U5x@v$Fp4GkC9LI*0BP$&@{7L`gBY z5NF>4`mrb<_JXlWyGEPf@;W~^B-QZNn&MKLOIuvp=28ap*ugS(k;I-vbkX+tcYsD@ z(T<$d^ql30CeM~*$ry3906U6OHDYQB8bmyfwB?)^7x1DiMaPPIO}dqk(=0j1)e7N( z5LKU;UjDV*(N{_Db^0ZJlD;MAiYPbIVVZL3@+v_3PP7L4orK09 zL@XMM5SykGV)q~PpWtYI%lVvq&pG*(ePv&zXjL3?YCYDPVMPnPXvHi%(rsJUys)7M zI(pH8J~^}9n1e7egkin_Mlgp_EMZJSTHf&UHo*KO+AxKF1m#CdTIT64upuNf_N);h zMd3z_eQ^w6Q9kSiBSCkC?kYS;GPx#cN3A`@r8IXo*}BE0ZA6g4GIo%{u7q{b_L$p8 z6AsXctkm^GOODPFTk?`I;_30vB{^?4J&V+hPx|eB}S#tT+ zN5T^!s=iRY{oC?D|D9B8&@bte^esVmShb#Zx#Z^XAKY_ug-P`RkwCe*!pxpF=2Ps2-V7O+L!= zRtOagb+hWc8q?KmIyN{t%TpFZW!^GUa||`f3&s@JV8rtSg)2o%~M)N)x+3H?sau{M$m+2;nyyP zZLLW!NF$c1Wz+Gtu?Xt1N9@?ka3WyG>NB=w1tTFnlIuqZJyFn#2+WfoGF zVGbD9Ktb0TcCHZtkxlZw)$?8CIE;3NvaZfB?iWrSC8t_&NJx$`^t6^_H&|P+Rrub8 zBOx4S*d3gbL_W_=nKlJS(M`3aN{j1BNlfj+qezH45XybECtj&O6cLxR+>*5@{5Y;4 zjvj_^+A&i7wYHV`BvhVM@Gwr%d7HogdO_8xlv?}=bLf2u^9ibTh%XjYDokrhaQ7)V zjeZI?aTo0jjYJ<*Q>1>Y12R-FQ!{Fw51CquTBil)6r2}Gb%a#%CFNS2DX~p((@5yL zvB0OoNHVbQYO2x!1%nu(BA@6V9%N`(OGCZD6J;brI67k*3;7U6sI9!>KCkOMt?CIg zUC8jP)xVhHIg!OE&5uh8#&DS-#20z0U{Q`b$l>7hPZzQ&aW2*`_lo9^i)@T5n84$1 zHf#|LBmQjk>6EJYT>v{#mm^FfN;--}(cxl>Y`Q3Q+g0JqHHKrYz9Dos&N%2IBP-F% zaFt=ZLB;2)QWV6 z#cQkZR2{+*s>>G@%pgpLn`CfouPMlqEreG++uI5ZX?x4FeV`yGZSQ-wPZi{)?Gw-T zl>$rJz9bv9;`wZro3iOR70vey2fU&w2|{UTL->)QdHt>Qlfljd_Kn-yO7! zxBn)dgx^N^a&b@+btDhoLZ?TySvtQ9&Df2-6b#`{gAL=*HB(p~z=P7qV}Zoe4ly~l z94+dQz(5C`Hr#Aqa z4hFqJpf9Zkt&4~&fRdt7qAMufvvRJ*sr$s=4$*zgZ8Evg?V00Mf;~2eBsdjnU75H+ zRzaR3NKs7<#fG+F*Fc-_No}yxPq=got-|efa2t!b)DG+Eobn+zy2!Zz zUMKh0!_WHgn_Yam7gs4ili>BDz) z(>1a{87spgmgsqs^u9p08&pUy%hfA*9dF3hn|KHB%GG=L5Fg3a$M_7N%heb78sFes P!Vo_@zQYgr2~Gb3NajXU literal 4255 zcmbVO3s)0I7`=l)LRb(Zq9}p_mVm{8l~#?~21KQefPyI6)-GX47B<Q7v_rC$)^K2hl=6!y`i>G$AZVcQWjXB#N{%mZ@b^vHrOb z0@x)+v@x9a8L@ee^QMfEkQ%TD?E&mnun!#!4Kr!gu3vMKClaq&39?=q#>M z3=ZM|L(T9|5ZyxlF_OO@y+Yg}hEtJ}$^I(*--=cCAre5pf&m<6IAEBm=yHJ)PS2cX zaWkssv}in^=cc6@**r;A?O@WdCJVY=mOW?F?CkBwpn@ZaG6YlHvNwxid!)Zate_uO za1_rlC=T%Wt%9l(PoJD~7gx%83DbyzXYm~6jF>JJ)U2ghcNq2%nV$(_B6}wkoD@@9 zXv%cKOs3U5pEk85<@yu@8)+beoKf&RULb#6AHO`s(B_X8z$im^(Locs&Qq!$H&cZS z&syWRlRPJK7beG_RWOco3;}+dCkqy57$lMYNna{tlVVBYGxh|)Zl>(Yvk`5&Fc=a-@#EG)v)|DJX`{e?8A;agiyhc;v*{oryu8+GbWM`Bw873cBlj#`4K8woKUiKK7 z-!cnH%P>9b*X2cVO4Tbun$=MOTGTvsD+2Up_Yi+|8Z5wYl;7d9LKzYYrdj?t9(pGtSr=1W%Qleu6vrC@pJ0ha1nT18Q zcZ-3&_EB6^^}vZMDz^uB_;9epUGj}(}8^ofW*Rgk5q9-oKs1-=a6D+OQUo01bu%dQ$L zJesh#iiD_3s_;D>sf`&q`ddD7+)0k^3u<;z=lR}*VXPE#G3nfP?^o$f$;8<^IW78;FP4nUH>)5f5*59$a2q?b1fL2noO9E|oL0_dlL3vZ)<28@q zCVdr&c|DJ@e}3RM?6&c{2;XiTw268WhacjpB2_aT{y-=Fb)g#vY`QiF#-;0|1gKab z!VTi2;KiaxyyOzo!m1GqNr(Ty(+@FJ&fiD;5%kla$f3hO;PETI{M_STarvXw`Mq?I zh+{q?hDgLPeHI;+L_|FiJA6ef{Vx$>D@ep~9}y==#7Pnndjb(DPsB~TRc?V8(fx|k z>*z_)PX*#Ja@$$5z_>)*!#$3#%aD3nqUh)UMMiqBM0&VgIU9JE+=?}Uo0Mi9rRrxFlwhxQB3d%DQfuC}^ z?_Gj1H#O}W%BcXWLMJ8YjRRj!3Vm33NpZ67C52T5o|k|(CnY4lUtHj0q*?sy5SkrO z?-G$S!lcV@imdJK99<}D)ULs8awc$wa6hAWuj38+@3h|bTKB!yyI$)9uk|stz9ozh M?f!T80Y9PrUo#V+wg3PC diff --git a/target/test-classes/StockTest.class b/target/test-classes/StockTest.class index 086bf5b8c9ecf660b77db09a000cb1607902004b..c71a54dd84e2404fb2664bd285e6e436ff4ece4a 100644 GIT binary patch literal 6116 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 F`!8O2Q-uHk