diff --git a/.gitignore b/.gitignore
index 480bdf5..9bf95a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,7 +33,8 @@ build/
!**/src/test/**/build/
### VS Code ###
-.vscode/
+#.vscode/
+!.vscode/settings.json
### Mac OS ###
-.DS_Store
\ No newline at end of file
+.DS_Store
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..ed34fc0
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,6 @@
+{
+ "java.configuration.updateBuildConfiguration": "interactive",
+ "java.format.settings.profile": "GoogleStyle",
+ "editor.formatOnSave": true,
+ "editor.defaultFormatter": "redhat.java",
+}
diff --git a/pom.xml b/pom.xml
index 44b6f4e..5a5267a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,6 +56,15 @@
maven-javadoc-plugin
3.12.0
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ 3.3.1
+
+ google_checks.xml
+ true
+
+
diff --git a/src/main/java/Main.java b/src/main/java/Main.java
index 7046417..6029b2a 100644
--- a/src/main/java/Main.java
+++ b/src/main/java/Main.java
@@ -1,2 +1 @@
-public class Main {
-}
+public class Main {}
diff --git a/src/main/java/millions/Exchange.java b/src/main/java/millions/Exchange.java
new file mode 100644
index 0000000..98584f2
--- /dev/null
+++ b/src/main/java/millions/Exchange.java
@@ -0,0 +1,68 @@
+package millions;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+public class Exchange {
+ private String name;
+ private Map stocks;
+ private int weekNumber;
+ private Random random = new Random();
+
+ public Exchange(String name, List stockList) {
+ this.name = name;
+ this.stocks = new HashMap<>();
+ this.weekNumber = 1;
+
+ // Populate the stocks map to get ticker -> stock
+ for (Stock stock : stockList) {
+ this.stocks.put(stock.getSymbol(), stock);
+ }
+ }
+
+ public void buy(Player player, Stock stock, BigDecimal quantity) {
+ Share shareToBuy = new Share(stock, quantity, stock.getSalesPrice());
+ Purchase purchase = new Purchase(shareToBuy, this.weekNumber);
+ purchase.commit(player);
+ }
+
+ public void sell(Player player, Share share) {
+ Sale sale = new Sale(share, weekNumber);
+ sale.commit(player);
+ }
+
+ public Map getStocks() {
+ return this.stocks;
+ }
+
+ public Stock getStock(String symbol) {
+ return this.stocks.get(symbol);
+ }
+
+ public boolean hasStock(String symbol) {
+ return this.stocks.containsKey(symbol);
+ }
+
+ public List findStocks(String searchTerm) {
+ return this.stocks.values().stream()
+ .filter(s -> s.getSymbol().contains(searchTerm) || s.getCompany().contains(searchTerm))
+ .toList();
+ }
+
+ public void advance() {
+ this.weekNumber++;
+ for (Stock stock : this.stocks.values()) {
+ double change = 0.9 + random.nextDouble() * 0.2;
+ stock.addNewSalesPrice(
+ stock
+ .getSalesPrice()
+ .multiply(BigDecimal.valueOf(change))
+ .setScale(2, RoundingMode.HALF_UP));
+ // RoundingMode from AI suggestion
+ }
+ }
+}
diff --git a/src/main/java/millions/Player.java b/src/main/java/millions/Player.java
new file mode 100644
index 0000000..747c8d0
--- /dev/null
+++ b/src/main/java/millions/Player.java
@@ -0,0 +1,43 @@
+package millions;
+
+import java.math.BigDecimal;
+
+public class Player {
+ private String name;
+ private BigDecimal startingMoney;
+ private BigDecimal money;
+ private Portfolio portfolio;
+ private TransactionArchive transactionArchive;
+
+ public Player(String name, BigDecimal startingMoney) {
+ this.name = name;
+ this.startingMoney = startingMoney;
+ this.money = startingMoney;
+ this.portfolio = new Portfolio();
+ this.transactionArchive = new TransactionArchive();
+ }
+
+ public void addMoney(BigDecimal amount) {
+ this.money = this.money.add(amount);
+ }
+
+ public void withdrawMoney(BigDecimal amount) {
+ this.money = this.money.subtract(amount);
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public BigDecimal getMoney() {
+ return this.money;
+ }
+
+ public Portfolio getPortfolio() {
+ return this.portfolio;
+ }
+
+ public TransactionArchive getTransactionArchive() {
+ return this.transactionArchive;
+ }
+}
diff --git a/src/main/java/temppackage/Portfolio.java b/src/main/java/millions/Portfolio.java
similarity index 70%
rename from src/main/java/temppackage/Portfolio.java
rename to src/main/java/millions/Portfolio.java
index adc4af0..e6fe889 100644
--- a/src/main/java/temppackage/Portfolio.java
+++ b/src/main/java/millions/Portfolio.java
@@ -1,22 +1,33 @@
-package temppackage;
+package millions;
import java.util.ArrayList;
import java.util.List;
public class Portfolio {
List shares;
+
public Portfolio() {
shares = new ArrayList<>();
}
+
public boolean addShare(Share share) {
return this.shares.add(share);
}
+
public boolean removeShare(Share share) {
return this.shares.remove(share);
}
+
public List getShares() {
return this.shares;
}
+
+ public List getShares(String symbol) {
+ return this.shares.stream()
+ .filter(share -> share.getStock().getSymbol().equals(symbol))
+ .toList();
+ }
+
public boolean contains(Share share) {
return this.shares.contains(share);
}
diff --git a/src/main/java/millions/Purchase.java b/src/main/java/millions/Purchase.java
new file mode 100644
index 0000000..72f02ad
--- /dev/null
+++ b/src/main/java/millions/Purchase.java
@@ -0,0 +1,25 @@
+package millions;
+
+import millions.calculators.PurchaseCalculator;
+
+public class Purchase extends Transaction {
+
+ public Purchase(Share share, int week) {
+ super(share, week, new PurchaseCalculator(share));
+ }
+
+ @Override
+ public void commit(Player player) {
+ if (isCommitted()) {
+ throw new IllegalStateException("Already committed");
+ }
+
+ if (player.getMoney().compareTo(getCalculator().calculateTotal()) < 0) {
+ throw new IllegalStateException("Not enought money");
+ }
+ player.withdrawMoney(getCalculator().calculateTotal());
+ player.getPortfolio().addShare(getShare());
+ player.getTransactionArchive().add(this);
+ setCommitted(true);
+ }
+}
diff --git a/src/main/java/millions/Sale.java b/src/main/java/millions/Sale.java
new file mode 100644
index 0000000..25f2919
--- /dev/null
+++ b/src/main/java/millions/Sale.java
@@ -0,0 +1,25 @@
+package millions;
+
+import millions.calculators.SaleCalculator;
+
+public class Sale extends Transaction {
+
+ public Sale(Share share, int week) {
+ super(share, week, new SaleCalculator(share));
+ }
+
+ @Override
+ public void commit(Player player) {
+ if (isCommitted()) {
+ throw new IllegalStateException("Already committed");
+ }
+
+ if (!player.getPortfolio().contains(getShare())) {
+ throw new IllegalStateException("Does not own the share");
+ }
+ player.addMoney(getCalculator().calculateTotal());
+ player.getPortfolio().removeShare(getShare());
+ player.getTransactionArchive().add(this);
+ setCommitted(true);
+ }
+}
diff --git a/src/main/java/temppackage/Share.java b/src/main/java/millions/Share.java
similarity index 95%
rename from src/main/java/temppackage/Share.java
rename to src/main/java/millions/Share.java
index 8055c3f..6eddada 100644
--- a/src/main/java/temppackage/Share.java
+++ b/src/main/java/millions/Share.java
@@ -1,4 +1,4 @@
-package temppackage;
+package millions;
import java.math.BigDecimal;
@@ -12,12 +12,15 @@ public Share(Stock stock, BigDecimal quantity, BigDecimal purchasePrice) {
this.quantity = quantity;
this.purchasePrice = purchasePrice;
}
+
public Stock getStock() {
return this.stock;
}
+
public BigDecimal getQuantity() {
return this.quantity;
}
+
public BigDecimal getPurchasePrice() {
return this.purchasePrice;
}
diff --git a/src/main/java/temppackage/Stock.java b/src/main/java/millions/Stock.java
similarity index 88%
rename from src/main/java/temppackage/Stock.java
rename to src/main/java/millions/Stock.java
index dfa2c23..886ecba 100644
--- a/src/main/java/temppackage/Stock.java
+++ b/src/main/java/millions/Stock.java
@@ -1,4 +1,4 @@
-package temppackage;
+package millions;
import java.math.BigDecimal;
import java.util.List;
@@ -7,20 +7,25 @@ public class Stock {
String symbol;
String company;
List prices;
- public Stock(String symbol, String company, List prices){
+
+ public Stock(String symbol, String company, List prices) {
this.symbol = symbol;
this.company = company;
this.prices = prices;
}
+
public String getSymbol() {
return this.symbol;
}
+
public String getCompany() {
return this.company;
}
- public BigDecimal getPrice() {
+
+ public BigDecimal getSalesPrice() {
return this.prices.getLast();
}
+
public void addNewSalesPrice(BigDecimal price) {
this.prices.add(price);
}
diff --git a/src/main/java/millions/Transaction.java b/src/main/java/millions/Transaction.java
new file mode 100644
index 0000000..b4b4022
--- /dev/null
+++ b/src/main/java/millions/Transaction.java
@@ -0,0 +1,40 @@
+package millions;
+
+import millions.calculators.TransactionCalculator;
+
+public abstract class Transaction {
+
+ private Share share;
+ private int week;
+ private TransactionCalculator transactionCalculator;
+ private boolean committed;
+
+ protected Transaction(Share share, int week, TransactionCalculator transactionCalculator) {
+ this.share = share;
+ this.week = week;
+ this.transactionCalculator = transactionCalculator;
+ this.committed = false;
+ }
+
+ public Share getShare() {
+ return this.share;
+ }
+
+ public int getWeek() {
+ return this.week;
+ }
+
+ public TransactionCalculator getCalculator() {
+ return this.transactionCalculator;
+ }
+
+ public boolean isCommitted() {
+ return this.committed;
+ }
+
+ protected void setCommitted(boolean committed) {
+ this.committed = committed;
+ }
+
+ public abstract void commit(Player player);
+}
diff --git a/src/main/java/millions/TransactionArchive.java b/src/main/java/millions/TransactionArchive.java
new file mode 100644
index 0000000..0a83e92
--- /dev/null
+++ b/src/main/java/millions/TransactionArchive.java
@@ -0,0 +1,48 @@
+package millions;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class TransactionArchive {
+
+ List transactions;
+
+ public TransactionArchive() {
+ this.transactions = new ArrayList<>();
+ }
+
+ public boolean add(Transaction transaction) {
+ if (transactions.contains(transaction)) {
+ return false;
+ }
+ this.transactions.add(transaction);
+ return true;
+ }
+
+ public boolean isEmpty() {
+ return transactions.isEmpty();
+ }
+
+ public List getTransactions(int week) {
+ return transactions.stream().filter(x -> x.getWeek() == week).collect(Collectors.toList());
+ }
+
+ public List getPurchases(int week) {
+ return transactions.stream()
+ .filter(t -> t.getWeek() == week && t instanceof Purchase)
+ .map(t -> (Purchase) t)
+ .collect(Collectors.toList());
+ }
+
+ public List getSales(int week) {
+ return transactions.stream()
+ .filter(t -> t.getWeek() == week && t instanceof Sale)
+ .map(t -> (Sale) t)
+ .collect(Collectors.toList());
+ }
+
+ public int countDistinctWeeks() {
+ return (int) transactions.stream().map(Transaction::getWeek).distinct().count();
+ }
+}
diff --git a/src/main/java/temppackage/calculators/PurchaseCalculator.java b/src/main/java/millions/calculators/PurchaseCalculator.java
similarity index 84%
rename from src/main/java/temppackage/calculators/PurchaseCalculator.java
rename to src/main/java/millions/calculators/PurchaseCalculator.java
index 9f6dc06..e23293c 100644
--- a/src/main/java/temppackage/calculators/PurchaseCalculator.java
+++ b/src/main/java/millions/calculators/PurchaseCalculator.java
@@ -1,31 +1,35 @@
-package temppackage.calculators;
-
-import temppackage.Share;
+package millions.calculators;
import java.math.BigDecimal;
+import millions.Share;
public class PurchaseCalculator implements TransactionCalculator {
BigDecimal purchasePrice;
BigDecimal quantity;
+
public PurchaseCalculator(Share share) {
super();
this.purchasePrice = share.getPurchasePrice();
this.quantity = share.getQuantity();
}
+
@Override
public BigDecimal calculateGross() {
return this.purchasePrice.multiply(this.quantity);
}
+
@Override
- public BigDecimal calculateComission() {
+ public BigDecimal calculateCommission() {
return this.calculateGross().multiply(new BigDecimal("0.05"));
}
+
@Override
public BigDecimal calculateTax() {
return new BigDecimal("0");
}
+
@Override
public BigDecimal calculateTotal() {
- return this.calculateGross().add(this.calculateTax().add(this.calculateComission())) ;
+ return this.calculateGross().add(this.calculateTax().add(this.calculateCommission()));
}
}
diff --git a/src/main/java/temppackage/calculators/SaleCalculator.java b/src/main/java/millions/calculators/SaleCalculator.java
similarity index 55%
rename from src/main/java/temppackage/calculators/SaleCalculator.java
rename to src/main/java/millions/calculators/SaleCalculator.java
index af66c97..2bddf30 100644
--- a/src/main/java/temppackage/calculators/SaleCalculator.java
+++ b/src/main/java/millions/calculators/SaleCalculator.java
@@ -1,37 +1,41 @@
-package temppackage.calculators;
+package millions.calculators;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import millions.Share;
-import temppackage.Share;
-
-public class SaleCalculator implements TransactionCalculator{
+public class SaleCalculator implements TransactionCalculator {
BigDecimal purchasePrice;
BigDecimal salesPrice;
BigDecimal quantity;
+
public SaleCalculator(Share share) {
super();
this.purchasePrice = share.getPurchasePrice();
}
+
@Override
public BigDecimal calculateGross() {
return salesPrice.multiply(quantity);
}
@Override
- public BigDecimal calculateComission() {
+ public BigDecimal calculateCommission() {
return this.calculateGross().divide(new BigDecimal("100"), RoundingMode.HALF_UP);
}
@Override
public BigDecimal calculateTax() {
BigDecimal purchaseCosts = this.purchasePrice.multiply(this.quantity);
- BigDecimal earnings = this.calculateGross().subtract(this.calculateComission()).subtract(purchaseCosts);
- return earnings.multiply(new BigDecimal("30")).divide(new BigDecimal("100"), RoundingMode.HALF_UP);
+ BigDecimal earnings =
+ this.calculateGross().subtract(this.calculateCommission()).subtract(purchaseCosts);
+ return earnings
+ .multiply(new BigDecimal("30"))
+ .divide(new BigDecimal("100"), RoundingMode.HALF_UP);
}
@Override
public BigDecimal calculateTotal() {
- return this.calculateGross().subtract(this.calculateComission()).subtract(this.calculateTax());
+ return this.calculateGross().subtract(this.calculateCommission()).subtract(this.calculateTax());
}
}
diff --git a/src/main/java/temppackage/calculators/TransactionCalculator.java b/src/main/java/millions/calculators/TransactionCalculator.java
similarity index 70%
rename from src/main/java/temppackage/calculators/TransactionCalculator.java
rename to src/main/java/millions/calculators/TransactionCalculator.java
index de2e179..8b85c6a 100644
--- a/src/main/java/temppackage/calculators/TransactionCalculator.java
+++ b/src/main/java/millions/calculators/TransactionCalculator.java
@@ -1,10 +1,13 @@
-package temppackage.calculators;
+package millions.calculators;
import java.math.BigDecimal;
public interface TransactionCalculator {
public BigDecimal calculateGross();
- public BigDecimal calculateComission();
+
+ public BigDecimal calculateCommission();
+
public BigDecimal calculateTax();
+
public BigDecimal calculateTotal();
}
diff --git a/src/main/java/temppackage/Exchange.java b/src/main/java/temppackage/Exchange.java
deleted file mode 100644
index ea8eef2..0000000
--- a/src/main/java/temppackage/Exchange.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package temppackage;
-
-import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-public class Exchange {
- private String name;
- private Map stocks;
- private int weekNumber;
- private Random random = new Random();
-
- public Exchange(String name, List stockList){
- this.name = name;
- this.stocks = new HashMap<>();
- this.weekNumber = 1;
- }
-
- public void buy(Player player, Stock stock, BigDecimal quantity){
- Share shareToBuy = new Share(stock, quantity, stock.getPrice());
- Purchase purchase = new Purchase(shareToBuy, this.weekNumber);
- purchase.commit(player);
- }
-
- public void sell(Player player, Share share){
- Sale sale = new Sale(share, weekNumber);
- sale.commit(player);
- }
-
- public void advance(){
- this.weekNumber++;
- }
-
-
- public Map getStocks(){
- return this.stocks;
- }
-
- public Stock geStock(String symbol){
- // filter med symbol eller company name
- }
-
-
-
-
-}
diff --git a/src/main/java/temppackage/Player.java b/src/main/java/temppackage/Player.java
deleted file mode 100644
index b1b2757..0000000
--- a/src/main/java/temppackage/Player.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package temppackage;
-
-import java.math.BigDecimal;
-
-public class Player {
- private String name;
- private BigDecimal startingMoney;
- private BigDecimal money;
- private Portfolio portfolio;
- private TransactionArchive transactionArchive;
-
-
-}
diff --git a/src/main/java/temppackage/Purchase.java b/src/main/java/temppackage/Purchase.java
deleted file mode 100644
index 6ff7a17..0000000
--- a/src/main/java/temppackage/Purchase.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package temppackage;
-
-public class Purchase extends Transaction{
-
-
- public Purchase(Share share, int week){
-
-
- }
-
- @Override
- public void commit(Player player) {
- // TODO Auto-generated method stub
- super.commit(player);
- }
-
-}
diff --git a/src/main/java/temppackage/Sale.java b/src/main/java/temppackage/Sale.java
deleted file mode 100644
index 7173e34..0000000
--- a/src/main/java/temppackage/Sale.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package temppackage;
-
-public class Sale extends Transaction{
- public Sale(Share share, int week){
-
- }
-
- @Override
- public void commit(Player player) {
- // TODO Auto-generated method stub
- super.commit(player);
- }
-
-}
diff --git a/src/main/java/temppackage/Transaction.java b/src/main/java/temppackage/Transaction.java
deleted file mode 100644
index 3c741a8..0000000
--- a/src/main/java/temppackage/Transaction.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package temppackage;
-
-import temppackage.calculators.TransactionCalculator;
-
-public abstract class Transaction {
- private Share share;
- private int week;
- private TransactionCalculator transactionCalculator;
- private boolean commited;
-
- protected Transaction(Share share, int week, TransactionCalculator transactionCalculator){
- this.share = share;
- this.week = week;
- this.transactionCalculator = transactionCalculator;
- this.commited = commited;
- }
-
- public Share getShare(){
- return this.share;
- }
-
- public int getWeeek(){
- return this.week;
- }
-
- public TransactionCalculator getCalculator(){
- return this.transactionCalculator;
- }
-
- public boolean isCommitted(){
- return this.commited;
- }
-
- public void commit(Player player){
- //TODO
- this.commited = true;
- }
-
-
-
-
-}
diff --git a/src/main/java/temppackage/TransactionArchive.java b/src/main/java/temppackage/TransactionArchive.java
deleted file mode 100644
index a6d5c6e..0000000
--- a/src/main/java/temppackage/TransactionArchive.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package temppackage;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class TransactionArchive {
- List transactions;
-
-
- public TransactionArchive() {
- this.transactions = new ArrayList<>();
- }
-
- public boolean add(Transaction transaction){
- if (transactions.contains(transaction)){
- return false;
- }
- this.transactions.add(transaction);
- return true;
- }
-
- public boolean isEmpty(){
- return transactions.isEmpty();
- }
-
- public List getTransactions(int week){
- //TODO
- return null;
- }
-
- public List getPurchases(int week){
- //TODO
- return null;
- }
-
- public List getSales(int week){
- //TODO
- return null;
- }
-
- public int countDistinctWeeks(){
- //TODO
- return 0;
- }
-
-
-}
diff --git a/src/test/java/millions/ExchangeTest.java b/src/test/java/millions/ExchangeTest.java
new file mode 100644
index 0000000..a852a0d
--- /dev/null
+++ b/src/test/java/millions/ExchangeTest.java
@@ -0,0 +1,5 @@
+package millions;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class ExchangeTest {}
diff --git a/src/test/java/temppackage/PlayerTest.java b/src/test/java/millions/PlayerTest.java
similarity index 55%
rename from src/test/java/temppackage/PlayerTest.java
rename to src/test/java/millions/PlayerTest.java
index 813e09c..62a3263 100644
--- a/src/test/java/temppackage/PlayerTest.java
+++ b/src/test/java/millions/PlayerTest.java
@@ -1,7 +1,5 @@
-package temppackage;
+package millions;
import static org.junit.jupiter.api.Assertions.*;
-class PlayerTest {
-
-}
\ No newline at end of file
+class PlayerTest {}
diff --git a/src/test/java/millions/PortfolioTest.java b/src/test/java/millions/PortfolioTest.java
new file mode 100644
index 0000000..3fb1019
--- /dev/null
+++ b/src/test/java/millions/PortfolioTest.java
@@ -0,0 +1,5 @@
+package millions;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class PortfolioTest {}
diff --git a/src/test/java/millions/PurchaseTest.java b/src/test/java/millions/PurchaseTest.java
new file mode 100644
index 0000000..a67c37a
--- /dev/null
+++ b/src/test/java/millions/PurchaseTest.java
@@ -0,0 +1,5 @@
+package millions;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class PurchaseTest {}
diff --git a/src/test/java/temppackage/SaleTest.java b/src/test/java/millions/SaleTest.java
similarity index 56%
rename from src/test/java/temppackage/SaleTest.java
rename to src/test/java/millions/SaleTest.java
index ddd72ae..b808f7a 100644
--- a/src/test/java/temppackage/SaleTest.java
+++ b/src/test/java/millions/SaleTest.java
@@ -1,7 +1,5 @@
-package temppackage;
+package millions;
import static org.junit.jupiter.api.Assertions.*;
-class SaleTest {
-
-}
\ No newline at end of file
+class SaleTest {}
diff --git a/src/test/java/temppackage/ShareTest.java b/src/test/java/millions/ShareTest.java
similarity index 55%
rename from src/test/java/temppackage/ShareTest.java
rename to src/test/java/millions/ShareTest.java
index f70aa16..cf3d676 100644
--- a/src/test/java/temppackage/ShareTest.java
+++ b/src/test/java/millions/ShareTest.java
@@ -1,7 +1,5 @@
-package temppackage;
+package millions;
import static org.junit.jupiter.api.Assertions.*;
-class ShareTest {
-
-}
\ No newline at end of file
+class ShareTest {}
diff --git a/src/test/java/temppackage/StockTest.java b/src/test/java/millions/StockTest.java
similarity index 55%
rename from src/test/java/temppackage/StockTest.java
rename to src/test/java/millions/StockTest.java
index 79d647a..eda8962 100644
--- a/src/test/java/temppackage/StockTest.java
+++ b/src/test/java/millions/StockTest.java
@@ -1,7 +1,5 @@
-package temppackage;
+package millions;
import static org.junit.jupiter.api.Assertions.*;
-class StockTest {
-
-}
\ No newline at end of file
+class StockTest {}
diff --git a/src/test/java/temppackage/ExchangeTest.java b/src/test/java/millions/TransactionArchiveTest.java
similarity index 50%
rename from src/test/java/temppackage/ExchangeTest.java
rename to src/test/java/millions/TransactionArchiveTest.java
index b556dd5..bdc9ca8 100644
--- a/src/test/java/temppackage/ExchangeTest.java
+++ b/src/test/java/millions/TransactionArchiveTest.java
@@ -1,7 +1,5 @@
-package temppackage;
+package millions;
import static org.junit.jupiter.api.Assertions.*;
-class ExchangeTest {
-
-}
\ No newline at end of file
+class TransactionArchiveTest {}
diff --git a/src/test/java/millions/TransactionTest.java b/src/test/java/millions/TransactionTest.java
new file mode 100644
index 0000000..9074225
--- /dev/null
+++ b/src/test/java/millions/TransactionTest.java
@@ -0,0 +1,5 @@
+package millions;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class TransactionTest {}
diff --git a/src/test/java/millions/calculators/PurchaseCalculatorTest.java b/src/test/java/millions/calculators/PurchaseCalculatorTest.java
new file mode 100644
index 0000000..2915b5e
--- /dev/null
+++ b/src/test/java/millions/calculators/PurchaseCalculatorTest.java
@@ -0,0 +1,5 @@
+package millions.calculators;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class PurchaseCalculatorTest {}
diff --git a/src/test/java/millions/calculators/SaleCalculatorTest.java b/src/test/java/millions/calculators/SaleCalculatorTest.java
new file mode 100644
index 0000000..3d7cebb
--- /dev/null
+++ b/src/test/java/millions/calculators/SaleCalculatorTest.java
@@ -0,0 +1,5 @@
+package millions.calculators;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class SaleCalculatorTest {}
diff --git a/src/test/java/millions/calculators/TransactionCalculatorTest.java b/src/test/java/millions/calculators/TransactionCalculatorTest.java
new file mode 100644
index 0000000..ad398f8
--- /dev/null
+++ b/src/test/java/millions/calculators/TransactionCalculatorTest.java
@@ -0,0 +1,5 @@
+package millions.calculators;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class TransactionCalculatorTest {}
diff --git a/src/test/java/temppackage/PortfolioTest.java b/src/test/java/temppackage/PortfolioTest.java
deleted file mode 100644
index 7448406..0000000
--- a/src/test/java/temppackage/PortfolioTest.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package temppackage;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class PortfolioTest {
-
-}
\ No newline at end of file
diff --git a/src/test/java/temppackage/PurchaseTest.java b/src/test/java/temppackage/PurchaseTest.java
deleted file mode 100644
index b6dc786..0000000
--- a/src/test/java/temppackage/PurchaseTest.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package temppackage;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class PurchaseTest {
-
-}
\ No newline at end of file
diff --git a/src/test/java/temppackage/TransactionArchiveTest.java b/src/test/java/temppackage/TransactionArchiveTest.java
deleted file mode 100644
index d3b2726..0000000
--- a/src/test/java/temppackage/TransactionArchiveTest.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package temppackage;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class TransactionArchiveTest {
-
-}
\ No newline at end of file
diff --git a/src/test/java/temppackage/TransactionTest.java b/src/test/java/temppackage/TransactionTest.java
deleted file mode 100644
index 3d786a4..0000000
--- a/src/test/java/temppackage/TransactionTest.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package temppackage;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class TransactionTest {
-
-}
\ No newline at end of file
diff --git a/src/test/java/temppackage/calculators/PurchaseCalculatorTest.java b/src/test/java/temppackage/calculators/PurchaseCalculatorTest.java
deleted file mode 100644
index cdab551..0000000
--- a/src/test/java/temppackage/calculators/PurchaseCalculatorTest.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package temppackage.calculators;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class PurchaseCalculatorTest {
-
-}
\ No newline at end of file
diff --git a/src/test/java/temppackage/calculators/SaleCalculatorTest.java b/src/test/java/temppackage/calculators/SaleCalculatorTest.java
deleted file mode 100644
index 3a140ce..0000000
--- a/src/test/java/temppackage/calculators/SaleCalculatorTest.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package temppackage.calculators;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class SaleCalculatorTest {
-
-}
\ No newline at end of file
diff --git a/src/test/java/temppackage/calculators/TransactionCalculatorTest.java b/src/test/java/temppackage/calculators/TransactionCalculatorTest.java
deleted file mode 100644
index 6307192..0000000
--- a/src/test/java/temppackage/calculators/TransactionCalculatorTest.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package temppackage.calculators;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class TransactionCalculatorTest {
-
-}
\ No newline at end of file