Skip to content

Commit

Permalink
Merge pull request #57 from IDATT2003-gruppe06/fix-unit-tests
Browse files Browse the repository at this point in the history
Fixed unit tests
  • Loading branch information
nolydvo authored May 26, 2026
2 parents 810c2fd + 25adf49 commit 5675cd0
Show file tree
Hide file tree
Showing 11 changed files with 150 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ public void setUpTestString() {
exampleString = "# Top 500 US Stocks by Market Cap\n";
exampleString += "# Ticker,Name,Price\n";
exampleString += "\n";
exampleString += "NVDA,Nvidia,191.27\n";
exampleString += "AAPL,Apple Inc.,276.43\n";
exampleString += "MSFT,Microsoft,404.68\n";
exampleString += "NVDA,Nvidia,191.27,1;1;1;1;1;1\n";
exampleString += "AAPL,Apple Inc.,276.43,1;1;1;1;1;1\n";
exampleString += "MSFT,Microsoft,404.68,1;1;1;1;1;1\n";

}

Expand All @@ -45,29 +45,29 @@ public void InvalidFormatExceptionTest() {

@Test
public void NumberConversionExceptionTest() {
exampleString += "Company, Company Inc., NotANumber";
exampleString += "Company, Company Inc., NotANumber,1;1;1;1;1;1";
List<String> testList = List.of(exampleString.split("\n"));
Exception e = assertThrows(InvalidFormatException.class, () -> {parser.parse(testList);});
String expectedMessage = "Error with number conversion on line: Company, Company Inc., NotANumber\n" +
"Last field must be a number";
String expectedMessage = "Error with number conversion on line: Company, Company Inc., NotANumber,1;1;1;1;1;1\n" +
"ensure all number fields are actually numbers";
assertEquals(expectedMessage, e.getMessage());
}

@Test
public void EmptySymbolFieldExceptionTest() {
exampleString += ",test,1";
exampleString += ",test,1,1;1;1;1;1;1";
List<String> testList = List.of(exampleString.split("\n"));
Exception e = assertThrows(InvalidFormatException.class, () -> {parser.parse(testList);});
String expectedMessage = "Illegal argument on line: ,test,1\n" +
String expectedMessage = "Illegal argument on line: ,test,1,1;1;1;1;1;1\n" +
"Symbol cannot be null or blank";
assertEquals(expectedMessage, e.getMessage());
}
@Test
public void EmptyCompanyNameFieldExceptionTest() {
exampleString += "test,,1";
exampleString += "test,,1,1;1;1;1;1;1";
List<String> testList = List.of(exampleString.split("\n"));
Exception e = assertThrows(InvalidFormatException.class, () -> {parser.parse(testList);});
String expectedMessage = "Illegal argument on line: test,,1\n" +
String expectedMessage = "Illegal argument on line: test,,1,1;1;1;1;1;1\n" +
"Company cannot be null or blank";
assertEquals(expectedMessage, e.getMessage());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

Expand All @@ -21,14 +22,14 @@ public static void setUpTestFile() throws Exception {
String string = "# Top 500 US Stocks by Market Cap\n";
string += "# Ticker,Name,Price\n";
string += "\n";
string += "NVDA,Nvidia,191.27\n";
string += "AAPL,Apple Inc.,276.43\n";
string += "MSFT,Microsoft,404.68\n";
string += "NVDA,Nvidia,191.27,1;1;1;1;1;1\n";
string += "AAPL,Apple Inc.,276.43,1;1;1;1;1;1\n";
string += "MSFT,Microsoft,404.68,1;1;1;1;1;1\n";
Files.writeString(sharedFile, string);
}

@Test
public void testReadStockFile() {
public void testReadStockFile() throws IOException {
StockFileReader stockFileReader = new StockFileReader();
assertEquals(6, stockFileReader.readFile(sharedFile).size());
}
Expand Down
17 changes: 12 additions & 5 deletions src/test/java/millions/model/ExchangeListenerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.util.ArrayList;
import java.util.List;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

Expand All @@ -29,16 +30,22 @@ public void onTransactionCompleted(Transaction transaction) {
}

class ExchangeListenerTest {

static List<BigDecimal> dummyVolatilityParams;
private Exchange exchange;
private Player player;
private TestExchangeListener listener;

@BeforeAll
static void setUpVolatilityParams() {
dummyVolatilityParams = new ArrayList<>();
for (int i = 0; i < 6; i++) {
dummyVolatilityParams.add(BigDecimal.valueOf(1));
}
}
@BeforeEach
void setUp() {
Stock s1 = new Stock("AAPL", "Apple Inc.", BigDecimal.valueOf(100));
Stock s2 = new Stock("GOOG", "Alphabet Inc.", BigDecimal.valueOf(200));
Stock s3 = new Stock("NVDA", "NVidia Inc.", BigDecimal.valueOf(200));
Stock s1 = new Stock("AAPL", "Apple Inc.", BigDecimal.valueOf(100),dummyVolatilityParams);
Stock s2 = new Stock("GOOG", "Alphabet Inc.", BigDecimal.valueOf(200),dummyVolatilityParams);
Stock s3 = new Stock("NVDA", "NVidia Inc.", BigDecimal.valueOf(200),dummyVolatilityParams);
exchange = new Exchange("NASDAQ", List.of(s1, s2, s3));
player = new Player("TestPlayer", BigDecimal.valueOf(10000));

Expand Down
41 changes: 26 additions & 15 deletions src/test/java/millions/model/ExchangeTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,28 @@
import static org.junit.jupiter.api.Assertions.*;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

class ExchangeTest {
static List<BigDecimal> dummyVolatilityParams;
@BeforeAll
static void setUpVolatilityParams() {
dummyVolatilityParams = new ArrayList<>();
for (int i = 0; i < 6; i++) {
dummyVolatilityParams.add(BigDecimal.valueOf(1));
}
}
@Test
public void testGetters() {
Stock s1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300));
Stock s2 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00));
Stock s3 = new Stock("MSFT", "EpsteinSoft Inc.", BigDecimal.valueOf(0.02));

Stock s1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300), dummyVolatilityParams);
Stock s2 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00), dummyVolatilityParams);
Stock s3 = new Stock("MSFT", "EpsteinSoft Inc.", BigDecimal.valueOf(0.02), dummyVolatilityParams);

Exchange exchange = new Exchange("exchange", List.of(s1, s2));

Expand All @@ -31,9 +42,9 @@ public void testGetters() {

@Test
public void happyPath() {
Stock s1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300));
Stock s2 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00));
Stock s3 = new Stock("MSFT", "EpsteinSoft Inc.", BigDecimal.valueOf(0.02));
Stock s1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300), dummyVolatilityParams);
Stock s2 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00), dummyVolatilityParams);
Stock s3 = new Stock("MSFT", "EpsteinSoft Inc.", BigDecimal.valueOf(0.02), dummyVolatilityParams);

Exchange exchange = new Exchange("exchange", List.of(s1, s2, s3));
Player player = new Player("name", BigDecimal.valueOf(1000));
Expand All @@ -56,7 +67,7 @@ public void happyPath() {

@Test
public void testNullsAndInvalid() {
Stock s1 = new Stock("MSFT", "EpsteinSoft Inc.", BigDecimal.valueOf(0.02));
Stock s1 = new Stock("MSFT", "EpsteinSoft Inc.", BigDecimal.valueOf(0.02), dummyVolatilityParams);

Exchange exchange = new Exchange("exchange", List.of(s1));
Player player = new Player("name", BigDecimal.valueOf(1000));
Expand All @@ -69,11 +80,11 @@ public void testNullsAndInvalid() {

assertThrows(
IllegalArgumentException.class,
() -> new Exchange("", List.of(new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300)))));
() -> new Exchange("", List.of(new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300), dummyVolatilityParams))));

assertThrows(
IllegalArgumentException.class,
() -> new Exchange(null, List.of(new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300)))));
() -> new Exchange(null, List.of(new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300), dummyVolatilityParams))));

assertThrows(IllegalArgumentException.class, () -> exchange.buy("DOGL", player, 2));

Expand All @@ -85,9 +96,9 @@ public void testNullsAndInvalid() {

@Test
public void testGetGainers() {
Stock s1 = new Stock("MSFT", "EpsteinSoft Inc.", BigDecimal.valueOf(0.02));
Stock s2 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300));
Stock s3 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00));
Stock s1 = new Stock("MSFT", "EpsteinSoft Inc.", BigDecimal.valueOf(0.02), dummyVolatilityParams);
Stock s2 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300), dummyVolatilityParams);
Stock s3 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00), dummyVolatilityParams);

Exchange exchange = new Exchange("exchange", List.of(s1, s2, s3));
exchange.advance();
Expand All @@ -109,9 +120,9 @@ public void testGetGainers() {

@Test
public void testGetLosers() {
Stock s1 = new Stock("MSFT", "EpsteinSoft Inc.", BigDecimal.valueOf(0.02));
Stock s2 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300));
Stock s3 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00));
Stock s1 = new Stock("MSFT", "EpsteinSoft Inc.", BigDecimal.valueOf(0.02), dummyVolatilityParams);
Stock s2 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300), dummyVolatilityParams);
Stock s3 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00), dummyVolatilityParams);

Exchange exchange = new Exchange("exchange", List.of(s1, s2, s3));

Expand Down
16 changes: 12 additions & 4 deletions src/test/java/millions/model/PlayerListenerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.ArrayList;
import java.util.List;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -35,10 +36,16 @@ public void onStatusChanged(String newStatus) {
}

class PlayerListenerTest {

static List<BigDecimal> dummyVolatilityParams;
private Player player;
private TestPlayerListener listener;

@BeforeAll
static void setUpVolatilityParams() {
dummyVolatilityParams = new ArrayList<>();
for (int i = 0; i < 6; i++) {
dummyVolatilityParams.add(BigDecimal.valueOf(1));
}
}
@BeforeEach
void setUp() {
player = new Player("TestPlayer", BigDecimal.valueOf(10000));
Expand All @@ -62,7 +69,8 @@ void withdrawMoneyNotifiesListener() {

@Test
void addShareNotifiesPortfolioAndStatus() {
Stock stock = new Stock("AAPL", "Apple Inc.", BigDecimal.valueOf(100));

Stock stock = new Stock("AAPL", "Apple Inc.", BigDecimal.valueOf(100), dummyVolatilityParams);
Share share = new Share(stock, BigDecimal.valueOf(1), BigDecimal.valueOf(100));

player.addShareToPortfolio(share);
Expand All @@ -72,7 +80,7 @@ void addShareNotifiesPortfolioAndStatus() {

@Test
void removeShareNotifiesPortfolioAndStatus() {
Stock stock = new Stock("AAPL", "Apple Inc.", BigDecimal.valueOf(100));
Stock stock = new Stock("AAPL", "Apple Inc.", BigDecimal.valueOf(100), dummyVolatilityParams);
Share share = new Share(stock, BigDecimal.valueOf(1), BigDecimal.valueOf(100));

player.addShareToPortfolio(share);
Expand Down
22 changes: 16 additions & 6 deletions src/test/java/millions/model/PortfolioTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,25 @@
import static org.junit.jupiter.api.Assertions.*;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

class PortfolioTest {

static List<BigDecimal> dummyVolatilityParams;
@BeforeAll
static void setUpVolatilityParams() {
dummyVolatilityParams = new ArrayList<>();
for (int i = 0; i < 6; i++) {
dummyVolatilityParams.add(BigDecimal.valueOf(1));
}
}
@Test
public void happyPath() {
Portfolio portfolio = new Portfolio();
Stock stock = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300));
Stock stock = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300), dummyVolatilityParams);
Share share = new Share(stock, 10, BigDecimal.valueOf(300));

assertTrue(portfolio.addShare(share));
Expand All @@ -27,8 +37,8 @@ public void happyPath() {
@Test
public void testGettersAndSetters() {
Portfolio portfolio = new Portfolio();
Stock stock1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300));
Stock stock2 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00));
Stock stock1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300), dummyVolatilityParams);
Stock stock2 = new Stock("DOGL", "DOOGLE Inc.", BigDecimal.valueOf(200.00), dummyVolatilityParams);
Share share1 = new Share(stock1, 10, BigDecimal.valueOf(300));
Share share2 = new Share(stock2, 5, BigDecimal.valueOf(200));

Expand Down Expand Up @@ -56,7 +66,7 @@ public void testGettersAndSetters() {
@Test
public void testGetNetWorth() {
Portfolio portfolio = new Portfolio();
Stock stock = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(100));
Stock stock = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(100), dummyVolatilityParams);
Share share = new Share(stock, 1, BigDecimal.valueOf(50));

portfolio.addShare(share);
Expand All @@ -66,7 +76,7 @@ public void testGetNetWorth() {

@Test
public void testNullsAndInvalid() {
Stock stock1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300));
Stock stock1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300), dummyVolatilityParams);
Share share1 = new Share(stock1, 10, BigDecimal.valueOf(300));
Portfolio portfolio = new Portfolio();
assertFalse(portfolio.removeShare(null));
Expand Down
16 changes: 14 additions & 2 deletions src/test/java/millions/model/PurchaseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,25 @@
import static org.junit.jupiter.api.Assertions.*;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class PurchaseTest {
static List<BigDecimal> dummyVolatilityParams;
@BeforeAll
static void setUpVolatilityParams() {
dummyVolatilityParams = new ArrayList<>();
for (int i = 0; i < 6; i++) {
dummyVolatilityParams.add(BigDecimal.valueOf(1));
}
}
@Test
public void testHappyPath() {
Stock stock = new Stock("TestStock", "TST", BigDecimal.valueOf(10));
Stock stock = new Stock("TestStock", "TST", BigDecimal.valueOf(10), dummyVolatilityParams);
Share share = new Share(stock, 2, BigDecimal.valueOf(10));
Player player = new Player("TestPlayer", BigDecimal.valueOf(100));
Purchase purchase = new Purchase(share, 1);
Expand All @@ -24,7 +36,7 @@ public void testHappyPath() {
@Test
public void testNullsAndInvalid() {

Stock stock = new Stock("TestStock", "TST", BigDecimal.valueOf(10));
Stock stock = new Stock("TestStock", "TST", BigDecimal.valueOf(10), dummyVolatilityParams);
Share share = new Share(stock, 2, BigDecimal.valueOf(10));
Player player = new Player("TestPlayer", BigDecimal.valueOf(100));
Purchase purchase = new Purchase(share, 1);
Expand Down
16 changes: 13 additions & 3 deletions src/test/java/millions/model/SaleTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,24 @@
import static org.junit.jupiter.api.Assertions.*;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

class SaleTest {

static List<BigDecimal> dummyVolatilityParams;
@BeforeAll
static void setUpVolatilityParams() {
dummyVolatilityParams = new ArrayList<>();
for (int i = 0; i < 6; i++) {
dummyVolatilityParams.add(BigDecimal.valueOf(1));
}
}
@Test
public void testHappyPath() {
Stock stock = new Stock("TestStock", "TST", BigDecimal.valueOf(10));
Stock stock = new Stock("TestStock", "TST", BigDecimal.valueOf(10), dummyVolatilityParams);
Share share = new Share(stock, 2, BigDecimal.valueOf(10));
Player player = new Player("TestPlayer", BigDecimal.valueOf(100));
player.getPortfolio().addShare(share);
Expand All @@ -24,7 +34,7 @@ public void testHappyPath() {

@Test
public void testNullsAndInvalid() {
Stock stock = new Stock("TestStock", "TST", BigDecimal.valueOf(10));
Stock stock = new Stock("TestStock", "TST", BigDecimal.valueOf(10), dummyVolatilityParams);
Share share = new Share(stock, 2, BigDecimal.valueOf(10));
Player player = new Player("TestPlayer", BigDecimal.valueOf(100));
Sale sale = new Sale(share, 1);
Expand Down
Loading

0 comments on commit 5675cd0

Please sign in to comment.