diff --git a/src/main/java/millions/Player.java b/src/main/java/millions/Player.java index e9f541a..c68f842 100644 --- a/src/main/java/millions/Player.java +++ b/src/main/java/millions/Player.java @@ -1,6 +1,7 @@ package millions; import java.math.BigDecimal; +import java.math.RoundingMode; public class Player { private String name; @@ -8,6 +9,8 @@ public class Player { private BigDecimal money; private Portfolio portfolio; private TransactionArchive transactionArchive; + //temporary attribute until a better solution is found + public int weeksTraded; public Player(String name, BigDecimal startingMoney) { this.name = name; @@ -45,6 +48,19 @@ public BigDecimal getNetWorth() { return netWorth; } + public String getStatus() { + String status = "Novice"; + BigDecimal netWorth = getNetWorth(); + BigDecimal netWorthChange = netWorth.divide(startingMoney, RoundingMode.DOWN); + if (netWorthChange.compareTo(BigDecimal.valueOf(0.20)) >= 0 && weeksTraded >= 10) { + status = "Investor"; + } + if (netWorthChange.compareTo(BigDecimal.valueOf(0.40)) >= 0 && weeksTraded >= 20) { + status = "Speculator"; + } + return status; + } + public String getName() { return this.name; } diff --git a/src/test/java/millions/PlayerTest.java b/src/test/java/millions/PlayerTest.java index 99cfb45..dc3fa3d 100644 --- a/src/test/java/millions/PlayerTest.java +++ b/src/test/java/millions/PlayerTest.java @@ -35,4 +35,22 @@ public void testNullsAndInvalid() { assertThrows(IllegalArgumentException.class, () -> new Player("name", null)); assertThrows(IllegalArgumentException.class, () -> new Player("name", BigDecimal.valueOf(-1))); } + + @Test + public void testStatus() { + Player player = new Player("name", BigDecimal.valueOf(1000)); + assertEquals("Novice", player.getStatus()); + + player.addMoney(BigDecimal.valueOf(200)); + assertEquals("Novice", player.getStatus()); + + player.weeksTraded = 10; + assertEquals("Investor", player.getStatus()); + + player.addMoney(BigDecimal.valueOf(200)); + assertEquals("Investor", player.getStatus()); + + player.weeksTraded = 20; + assertEquals("Speculator", player.getStatus()); + } }