Files
oops/src/test/java/oving6/stock/StockIndexTest.java
Andreas Omholt Olsen 57adabe5be Add oving 6
2026-02-23 12:10:01 +01:00

117 lines
3.9 KiB
Java

package oving6.stock;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
public class StockIndexTest {
private static final double applePrice = 534.98;
private static final double facebookPrice = 67.80;
private static final double epsilon = 0.000001;
private Stock apple;
private Stock facebook;
private StockIndex index0;
private StockIndex index1;
private StockIndex indexN;
@BeforeEach
public void setUp() {
apple = new Stock("AAPL", applePrice);
facebook = new Stock("FB", facebookPrice);
index0 = new StockIndex("OSEBX");
index1 = new StockIndex("OSEBX", facebook);
indexN = new StockIndex("OSEBX", facebook, apple);
}
@Test
@DisplayName("Test constructor")
public void testConstructor() {
assertEquals(0.0, index0.getIndex(), epsilon, "Test the value of the index with 0 stocks");
assertEquals(facebookPrice, index1.getIndex(), epsilon,
"Test the value of the index with 1 stock");
assertEquals(facebookPrice + applePrice, indexN.getIndex(), epsilon,
"Test the value of the index with 2 stocks");
assertThrows(IllegalArgumentException.class, () -> {
new StockIndex(null);
}, "Test constructor with null name");
assertThrows(IllegalArgumentException.class, () -> {
new StockIndex("OSEBX", apple, null, facebook);
}, "Test constructor with null stocks");
}
@Test
@DisplayName("Add stock")
public void testAddStock() {
assertEquals(0.0, index0.getIndex(), epsilon, "Test the value of the index with 0 stocks");
index0.addStock(facebook);
assertEquals(facebookPrice, index0.getIndex(), epsilon,
"Test the value of the index after adding 1 stock");
assertThrows(IllegalArgumentException.class, () -> {
index0.addStock(null);
}, "Test adding null stock");
}
@Test
@DisplayName("Add the same stock twice")
public void testAddDuplicateStocks() {
assertEquals(0.0, index0.getIndex(), epsilon, "Test the value of the index with 0 stocks");
index0.addStock(facebook);
assertEquals(facebookPrice, index0.getIndex(), epsilon,
"Test the value of the index after adding 1 stock");
index0.addStock(facebook);
assertEquals(facebookPrice, index0.getIndex(), epsilon,
"Test the value of the index after adding a stock that is already in the index");
}
@Test
@DisplayName("Remove stock")
public void testRemoveStock() {
assertEquals(facebookPrice + applePrice, indexN.getIndex(), epsilon,
"Test the value of the index with 2 stocks");
indexN.removeStock(apple);
assertEquals(facebookPrice, indexN.getIndex(), epsilon,
"Test the value of the index after removing 1 stock");
indexN.removeStock(apple);
assertEquals(facebookPrice, indexN.getIndex(), epsilon,
"Test the value of the index after removing 1 stock that was not in the index");
indexN.removeStock(facebook);
assertEquals(0.0, indexN.getIndex(), epsilon,
"Test the value of the index after removing the only stock in the index");
}
@Test
@DisplayName("Change stock price")
public void testChangePrice() {
double facebookPrice2 = 67.0;
double facebookPrice3 = 69.0;
facebook.setPrice(facebookPrice2);
assertEquals(facebookPrice2, index1.getIndex(), epsilon,
"Test the value of the index with 1 stock after changing the stock price");
assertEquals(facebookPrice2 + applePrice, indexN.getIndex(), epsilon,
"Test the value of the index with 2 stocks after changing the price of 1 stock");
facebook.setPrice(facebookPrice3);
assertEquals(facebookPrice3, index1.getIndex(), epsilon,
"Test the value of the index with 1 stock after changing the stock price a "
+ "second time");
assertEquals(facebookPrice3 + applePrice, indexN.getIndex(), epsilon,
"Test the value of the index with 2 stocks after changing the price of 1 stock a "
+ "second time");
}
}