From 3a96abbf4f36a72b3df4a502ede11348c78aaf85 Mon Sep 17 00:00:00 2001 From: Nikollai Date: Sun, 24 May 2026 15:04:29 +0200 Subject: [PATCH 1/3] Refactored test packagestructure to match project structure --- .../fileIO/CSV}/CSVStockFileParserTest.java | 4 +--- .../fileIO/CSV}/StockFileReaderTest.java | 2 +- .../millions/{ => model}/ExchangeListenerTest.java | 11 ++--------- src/test/java/millions/{ => model}/ExchangeTest.java | 4 ++-- .../java/millions/{ => model}/PlayerListenerTest.java | 4 ++-- src/test/java/millions/{ => model}/PlayerTest.java | 4 ++-- src/test/java/millions/{ => model}/PortfolioTest.java | 6 ++---- src/test/java/millions/{ => model}/PurchaseTest.java | 6 +----- src/test/java/millions/{ => model}/SaleTest.java | 6 +----- src/test/java/millions/{ => model}/ShareTest.java | 4 +--- src/test/java/millions/{ => model}/StockTest.java | 4 ++-- .../millions/{ => model}/TransactionArchiveTest.java | 3 +-- 12 files changed, 18 insertions(+), 40 deletions(-) rename src/test/java/millions/{ => controller/fileIO/CSV}/CSVStockFileParserTest.java (96%) rename src/test/java/millions/{ => controller/fileIO/CSV}/StockFileReaderTest.java (96%) rename src/test/java/millions/{ => model}/ExchangeListenerTest.java (90%) rename src/test/java/millions/{ => model}/ExchangeTest.java (99%) rename src/test/java/millions/{ => model}/PlayerListenerTest.java (98%) rename src/test/java/millions/{ => model}/PlayerTest.java (97%) rename src/test/java/millions/{ => model}/PortfolioTest.java (95%) rename src/test/java/millions/{ => model}/PurchaseTest.java (90%) rename src/test/java/millions/{ => model}/SaleTest.java (88%) rename src/test/java/millions/{ => model}/ShareTest.java (93%) rename src/test/java/millions/{ => model}/StockTest.java (97%) rename src/test/java/millions/{ => model}/TransactionArchiveTest.java (96%) diff --git a/src/test/java/millions/CSVStockFileParserTest.java b/src/test/java/millions/controller/fileIO/CSV/CSVStockFileParserTest.java similarity index 96% rename from src/test/java/millions/CSVStockFileParserTest.java rename to src/test/java/millions/controller/fileIO/CSV/CSVStockFileParserTest.java index 8266d35..512cfc9 100644 --- a/src/test/java/millions/CSVStockFileParserTest.java +++ b/src/test/java/millions/controller/fileIO/CSV/CSVStockFileParserTest.java @@ -1,12 +1,10 @@ -package millions; +package millions.controller.fileIO.CSV; -import millions.controller.fileIO.CSV.CSVStockFileParser; import millions.controller.fileIO.InvalidFormatException; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import java.util.ArrayList; import java.util.List; diff --git a/src/test/java/millions/StockFileReaderTest.java b/src/test/java/millions/controller/fileIO/CSV/StockFileReaderTest.java similarity index 96% rename from src/test/java/millions/StockFileReaderTest.java rename to src/test/java/millions/controller/fileIO/CSV/StockFileReaderTest.java index 2bc8970..159c948 100644 --- a/src/test/java/millions/StockFileReaderTest.java +++ b/src/test/java/millions/controller/fileIO/CSV/StockFileReaderTest.java @@ -1,4 +1,4 @@ -package millions; +package millions.controller.fileIO.CSV; import millions.controller.fileIO.StockFileReader; import org.junit.jupiter.api.BeforeAll; diff --git a/src/test/java/millions/ExchangeListenerTest.java b/src/test/java/millions/model/ExchangeListenerTest.java similarity index 90% rename from src/test/java/millions/ExchangeListenerTest.java rename to src/test/java/millions/model/ExchangeListenerTest.java index c47c9e8..935ab43 100644 --- a/src/test/java/millions/ExchangeListenerTest.java +++ b/src/test/java/millions/model/ExchangeListenerTest.java @@ -1,4 +1,4 @@ -package millions; +package millions.model; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -6,14 +6,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; -import millions.model.Exchange; -import millions.model.ExchangeListener; -import millions.model.Player; -import millions.model.Purchase; -import millions.model.Sale; -import millions.model.Share; -import millions.model.Stock; -import millions.model.Transaction; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/src/test/java/millions/ExchangeTest.java b/src/test/java/millions/model/ExchangeTest.java similarity index 99% rename from src/test/java/millions/ExchangeTest.java rename to src/test/java/millions/model/ExchangeTest.java index a17bb50..2e689a6 100644 --- a/src/test/java/millions/ExchangeTest.java +++ b/src/test/java/millions/model/ExchangeTest.java @@ -1,11 +1,11 @@ -package millions; +package millions.model; import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; import java.util.List; import java.util.stream.IntStream; -import millions.model.*; + import org.junit.jupiter.api.Test; class ExchangeTest { diff --git a/src/test/java/millions/PlayerListenerTest.java b/src/test/java/millions/model/PlayerListenerTest.java similarity index 98% rename from src/test/java/millions/PlayerListenerTest.java rename to src/test/java/millions/model/PlayerListenerTest.java index 5e2008a..71c94d6 100644 --- a/src/test/java/millions/PlayerListenerTest.java +++ b/src/test/java/millions/model/PlayerListenerTest.java @@ -1,11 +1,11 @@ -package millions; +package millions.model; import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; -import millions.model.*; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/src/test/java/millions/PlayerTest.java b/src/test/java/millions/model/PlayerTest.java similarity index 97% rename from src/test/java/millions/PlayerTest.java rename to src/test/java/millions/model/PlayerTest.java index 011a6fb..2cefd2d 100644 --- a/src/test/java/millions/PlayerTest.java +++ b/src/test/java/millions/model/PlayerTest.java @@ -1,9 +1,9 @@ -package millions; +package millions.model; import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; -import millions.model.Player; + import org.junit.jupiter.api.Test; class PlayerTest { diff --git a/src/test/java/millions/PortfolioTest.java b/src/test/java/millions/model/PortfolioTest.java similarity index 95% rename from src/test/java/millions/PortfolioTest.java rename to src/test/java/millions/model/PortfolioTest.java index b151f94..a208066 100644 --- a/src/test/java/millions/PortfolioTest.java +++ b/src/test/java/millions/model/PortfolioTest.java @@ -1,11 +1,9 @@ -package millions; +package millions.model; import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; -import millions.model.Portfolio; -import millions.model.Share; -import millions.model.Stock; + import org.junit.jupiter.api.Test; class PortfolioTest { diff --git a/src/test/java/millions/PurchaseTest.java b/src/test/java/millions/model/PurchaseTest.java similarity index 90% rename from src/test/java/millions/PurchaseTest.java rename to src/test/java/millions/model/PurchaseTest.java index 941ac87..3c76e85 100644 --- a/src/test/java/millions/PurchaseTest.java +++ b/src/test/java/millions/model/PurchaseTest.java @@ -1,13 +1,9 @@ -package millions; +package millions.model; import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; -import millions.model.Player; -import millions.model.Purchase; -import millions.model.Share; -import millions.model.Stock; import org.junit.jupiter.api.Test; class PurchaseTest { diff --git a/src/test/java/millions/SaleTest.java b/src/test/java/millions/model/SaleTest.java similarity index 88% rename from src/test/java/millions/SaleTest.java rename to src/test/java/millions/model/SaleTest.java index 2d725f4..4a8a4d1 100644 --- a/src/test/java/millions/SaleTest.java +++ b/src/test/java/millions/model/SaleTest.java @@ -1,13 +1,9 @@ -package millions; +package millions.model; import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; -import millions.model.Player; -import millions.model.Sale; -import millions.model.Share; -import millions.model.Stock; import org.junit.jupiter.api.Test; class SaleTest { diff --git a/src/test/java/millions/ShareTest.java b/src/test/java/millions/model/ShareTest.java similarity index 93% rename from src/test/java/millions/ShareTest.java rename to src/test/java/millions/model/ShareTest.java index 25862ee..3f82181 100644 --- a/src/test/java/millions/ShareTest.java +++ b/src/test/java/millions/model/ShareTest.java @@ -1,11 +1,9 @@ -package millions; +package millions.model; import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; -import millions.model.Share; -import millions.model.Stock; import org.junit.jupiter.api.Test; class ShareTest { diff --git a/src/test/java/millions/StockTest.java b/src/test/java/millions/model/StockTest.java similarity index 97% rename from src/test/java/millions/StockTest.java rename to src/test/java/millions/model/StockTest.java index 452db31..c28a6bd 100644 --- a/src/test/java/millions/StockTest.java +++ b/src/test/java/millions/model/StockTest.java @@ -1,4 +1,4 @@ -package millions; +package millions.model; import static org.junit.jupiter.api.Assertions.*; @@ -6,7 +6,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import millions.model.Stock; + import org.junit.jupiter.api.Test; class StockTest { diff --git a/src/test/java/millions/TransactionArchiveTest.java b/src/test/java/millions/model/TransactionArchiveTest.java similarity index 96% rename from src/test/java/millions/TransactionArchiveTest.java rename to src/test/java/millions/model/TransactionArchiveTest.java index c87ef93..426ed5b 100644 --- a/src/test/java/millions/TransactionArchiveTest.java +++ b/src/test/java/millions/model/TransactionArchiveTest.java @@ -1,11 +1,10 @@ -package millions; +package millions.model; import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; import java.util.List; -import millions.model.*; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; From 4079e92cac47d35f481e5af27334326ad8fbc650 Mon Sep 17 00:00:00 2001 From: Nikollai Date: Mon, 25 May 2026 13:04:09 +0200 Subject: [PATCH 2/3] Deleted unused duplicate files, continued javadoc documentation --- .../TransactionCalculatorFactory.java | 22 --------------- src/main/java/millions/model/Share.java | 16 ++++++----- src/main/java/millions/model/Stock.java | 18 ++++++------- src/main/java/millions/model/Transaction.java | 12 +++++++++ .../millions/model/TransactionArchive.java | 27 ++++++++++++++++++- 5 files changed, 56 insertions(+), 39 deletions(-) delete mode 100644 src/main/java/millions/calculators/TransactionCalculatorFactory.java diff --git a/src/main/java/millions/calculators/TransactionCalculatorFactory.java b/src/main/java/millions/calculators/TransactionCalculatorFactory.java deleted file mode 100644 index 36a71c0..0000000 --- a/src/main/java/millions/calculators/TransactionCalculatorFactory.java +++ /dev/null @@ -1,22 +0,0 @@ -package millions.calculators; - -import millions.model.Share; -import millions.model.calculators.PurchaseCalculator; -import millions.model.calculators.SaleCalculator; -import millions.model.calculators.TransactionCalculator; - -/** - * Factory for creating transaction calculators. - */ -public class TransactionCalculatorFactory { - - private TransactionCalculatorFactory() {} - - public TransactionCalculator createPurchaseCalculator(Share share) { - return new PurchaseCalculator(share); - } - - public TransactionCalculator createSaleCalculator(Share share) { - return new SaleCalculator(share); - } -} diff --git a/src/main/java/millions/model/Share.java b/src/main/java/millions/model/Share.java index 7967b95..5a7a726 100644 --- a/src/main/java/millions/model/Share.java +++ b/src/main/java/millions/model/Share.java @@ -10,9 +10,11 @@ public class Share { /** * @param stock Which stock the share is for. - * @param quantity How many stocks - * @param purchasePrice Purchase price of the share - * @throws IllegalArgumentException + * @param quantity How many stocks. + * @param purchasePrice Purchase price of the share. + * @throws IllegalArgumentException if stock is null. + * @throws IllegalArgumentException if quantity is null. + * @throws IllegalArgumentException if purchasePrice is null. */ public Share(Stock stock, BigDecimal quantity, BigDecimal purchasePrice) { this.stock = stock; @@ -30,27 +32,27 @@ public Share(Stock stock, BigDecimal quantity, BigDecimal purchasePrice) { } } - /** Share() with int quantity */ + /** Share() with int quantity. */ public Share(Stock stock, int quantity, BigDecimal purchasePrice) { this(stock, BigDecimal.valueOf(quantity), purchasePrice); } /** - * @return + * @return Stock object. */ public Stock getStock() { return this.stock; } /** - * @return + * @return BigDecimal: quantity. */ public BigDecimal getQuantity() { return this.quantity; } /** - * @return + * @return BigDecimal PurchasePrice. */ public BigDecimal getPurchasePrice() { return this.purchasePrice; diff --git a/src/main/java/millions/model/Stock.java b/src/main/java/millions/model/Stock.java index cc1a23f..e21fb9e 100644 --- a/src/main/java/millions/model/Stock.java +++ b/src/main/java/millions/model/Stock.java @@ -30,48 +30,48 @@ public Stock(String symbol, String company, List prices) { } } - /** Stock() with single price instead of list */ + /** Stock() with single price instead of list. */ public Stock(String symbol, String company, BigDecimal initialPrice) { this(symbol, company, new ArrayList<>(List.of(initialPrice))); } /** - * @return + * @return String: symbol. */ public String getSymbol() { return this.symbol; } /** - * @return + * @return String: company. */ public String getCompany() { return this.company; } /** - * @return + * @return BigDecimal: price. */ public BigDecimal getSalesPrice() { return this.prices.getLast(); } /** - * @param price Sales price + * @param price Sales price. */ public void addNewSalesPrice(BigDecimal price) { this.prices.add(price); } /** - * @return + * @return BigDecimal list of prices. */ public List getHistoricalPrices() { return this.prices; } /** - * @return + * @return BigDecimal highest recorded price. */ public BigDecimal getHighestPrice() { BigDecimal highestPrice = this.prices.get(0); @@ -84,7 +84,7 @@ public BigDecimal getHighestPrice() { } /** - * @return + * @return BigDecimal lowest recorded price. */ public BigDecimal getLowestPrice() { BigDecimal lowestPrice = this.prices.get(0); @@ -97,7 +97,7 @@ public BigDecimal getLowestPrice() { } /** - * @return + * @return BigDecimal price difference from last week */ public BigDecimal getLatestPriceChange() { if (this.prices.size() < 2) { diff --git a/src/main/java/millions/model/Transaction.java b/src/main/java/millions/model/Transaction.java index 6e1e8b1..69c1167 100644 --- a/src/main/java/millions/model/Transaction.java +++ b/src/main/java/millions/model/Transaction.java @@ -17,18 +17,30 @@ protected Transaction(Share share, int week, TransactionCalculator transactionCa this.committed = false; } + /** + * @return Share object + */ public Share getShare() { return this.share; } + /** + * @return int: week + */ public int getWeek() { return this.week; } + /** + * @return TransactionCalculator object + */ public TransactionCalculator getCalculator() { return this.transactionCalculator; } + /** + * @return Boolean: status + */ public boolean isCommitted() { return this.committed; } diff --git a/src/main/java/millions/model/TransactionArchive.java b/src/main/java/millions/model/TransactionArchive.java index 6910a6c..20b7e7a 100644 --- a/src/main/java/millions/model/TransactionArchive.java +++ b/src/main/java/millions/model/TransactionArchive.java @@ -13,6 +13,11 @@ public TransactionArchive() { this.transactions = new ArrayList<>(); } + /** + * Adds a transaction to the archive + * @param transaction transaction object + * @return Boolean for success + */ public boolean add(Transaction transaction) { if (transactions.contains(transaction)) { return false; @@ -21,25 +26,45 @@ public boolean add(Transaction transaction) { return true; } + /** + * @return Boolean + */ public boolean isEmpty() { return transactions.isEmpty(); } + /** + * @return List of transaction objects + */ public List getTransactions() { return new ArrayList<>(transactions); } + /** + * returns transaction processed in a given week + * @param week int + * @return List of transaction objects + */ public List getTransactions(int week) { return transactions.stream().filter(x -> x.getWeek() == week).collect(Collectors.toList()); } + /** + * Returns all purchase transactions in a given week + * @param week int + * @return List of transaction objects + */ public List getPurchases(int week) { return transactions.stream() .filter(t -> t.getWeek() == week && t instanceof Purchase) .map(t -> (Purchase) t) .collect(Collectors.toList()); } - + /** + * Returns all sale transactions in a given week + * @param week int + * @return List of transaction objects + */ public List getSales(int week) { return transactions.stream() .filter(t -> t.getWeek() == week && t instanceof Sale) From 18a74af007fd9b6cb124a4fa7de87cccdbdd3f61 Mon Sep 17 00:00:00 2001 From: Nikollai Date: Mon, 25 May 2026 13:14:17 +0200 Subject: [PATCH 3/3] Fixed CSVStockFileParserTest, moved calculatortests to model to match project structure --- .../controller/fileIO/CSV/CSVStockFileParserTest.java | 5 +++-- .../{ => model}/calculators/PurchaseCalculatorTest.java | 2 +- .../millions/{ => model}/calculators/SaleCalculatorTest.java | 2 +- .../{ => model}/calculators/TransactionCalculatorTest.java | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) rename src/test/java/millions/{ => model}/calculators/PurchaseCalculatorTest.java (70%) rename src/test/java/millions/{ => model}/calculators/SaleCalculatorTest.java (68%) rename src/test/java/millions/{ => model}/calculators/TransactionCalculatorTest.java (70%) diff --git a/src/test/java/millions/controller/fileIO/CSV/CSVStockFileParserTest.java b/src/test/java/millions/controller/fileIO/CSV/CSVStockFileParserTest.java index 512cfc9..efefb7d 100644 --- a/src/test/java/millions/controller/fileIO/CSV/CSVStockFileParserTest.java +++ b/src/test/java/millions/controller/fileIO/CSV/CSVStockFileParserTest.java @@ -2,6 +2,7 @@ import millions.controller.fileIO.InvalidFormatException; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -16,8 +17,8 @@ public class CSVStockFileParserTest { static String exampleString; final CSVStockFileParser parser = new CSVStockFileParser(); - @BeforeAll - public static void setUpTestString() { + @BeforeEach + public void setUpTestString() { exampleString = "# Top 500 US Stocks by Market Cap\n"; exampleString += "# Ticker,Name,Price\n"; exampleString += "\n"; diff --git a/src/test/java/millions/calculators/PurchaseCalculatorTest.java b/src/test/java/millions/model/calculators/PurchaseCalculatorTest.java similarity index 70% rename from src/test/java/millions/calculators/PurchaseCalculatorTest.java rename to src/test/java/millions/model/calculators/PurchaseCalculatorTest.java index 2915b5e..37d8cca 100644 --- a/src/test/java/millions/calculators/PurchaseCalculatorTest.java +++ b/src/test/java/millions/model/calculators/PurchaseCalculatorTest.java @@ -1,4 +1,4 @@ -package millions.calculators; +package millions.model.calculators; import static org.junit.jupiter.api.Assertions.*; diff --git a/src/test/java/millions/calculators/SaleCalculatorTest.java b/src/test/java/millions/model/calculators/SaleCalculatorTest.java similarity index 68% rename from src/test/java/millions/calculators/SaleCalculatorTest.java rename to src/test/java/millions/model/calculators/SaleCalculatorTest.java index 3d7cebb..ea19922 100644 --- a/src/test/java/millions/calculators/SaleCalculatorTest.java +++ b/src/test/java/millions/model/calculators/SaleCalculatorTest.java @@ -1,4 +1,4 @@ -package millions.calculators; +package millions.model.calculators; import static org.junit.jupiter.api.Assertions.*; diff --git a/src/test/java/millions/calculators/TransactionCalculatorTest.java b/src/test/java/millions/model/calculators/TransactionCalculatorTest.java similarity index 70% rename from src/test/java/millions/calculators/TransactionCalculatorTest.java rename to src/test/java/millions/model/calculators/TransactionCalculatorTest.java index ad398f8..b65dc0e 100644 --- a/src/test/java/millions/calculators/TransactionCalculatorTest.java +++ b/src/test/java/millions/model/calculators/TransactionCalculatorTest.java @@ -1,4 +1,4 @@ -package millions.calculators; +package millions.model.calculators; import static org.junit.jupiter.api.Assertions.*;