Skip to content

Commit

Permalink
Fix/test" Fix portfolio rounding bug, adding test for that
Browse files Browse the repository at this point in the history
  • Loading branch information
martin committed Apr 20, 2026
1 parent c0cd5a7 commit 8cc72ce
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 7 deletions.
14 changes: 11 additions & 3 deletions src/main/java/millions/controller/fileIO/StockFileReader.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package millions.controller.fileIO;

import java.io.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
Expand All @@ -16,8 +20,12 @@ public StockFileReader(Path path) {
public List<String> readFile() {
File file = new File(filePath.toString());
List<String> lines = new ArrayList<>();
try (Reader reader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(reader)) {
lines = bufferedReader.readAllLines();
try (Reader reader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(reader)) {
String line;
while ((line = bufferedReader.readLine()) != null) {
lines.add(line);
}
} catch (IOException e) {
e.printStackTrace();
}
Expand Down
9 changes: 6 additions & 3 deletions src/main/java/millions/model/calculators/SaleCalculator.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public BigDecimal calculateGross() {

@Override
public BigDecimal calculateCommission() {
return this.calculateGross().divide(new BigDecimal("100"), RoundingMode.HALF_UP);
return this.calculateGross().divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
}

@Override
Expand All @@ -33,11 +33,14 @@ public BigDecimal calculateTax() {
this.calculateGross().subtract(this.calculateCommission()).subtract(purchaseCosts);
return earnings
.multiply(new BigDecimal("30"))
.divide(new BigDecimal("100"), RoundingMode.HALF_UP);
.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
}

@Override
public BigDecimal calculateTotal() {
return this.calculateGross().subtract(this.calculateCommission()).subtract(this.calculateTax());
return this.calculateGross()
.subtract(this.calculateCommission())
.subtract(this.calculateTax())
.stripTrailingZeros();
}
}
12 changes: 11 additions & 1 deletion src/test/java/millions/PortfolioTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import static org.junit.jupiter.api.Assertions.*;

import java.math.BigDecimal;

import millions.model.Portfolio;
import millions.model.Share;
import millions.model.Stock;
Expand Down Expand Up @@ -56,6 +55,17 @@ public void testGettersAndSetters() {
assertEquals(1, portfolio.getShares().size());
}

@Test
public void testGetNetWorth() {
Portfolio portfolio = new Portfolio();
Stock stock = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(100));
Share share = new Share(stock, 1, BigDecimal.valueOf(50));

portfolio.addShare(share);

assertEquals(new BigDecimal("84.3"), portfolio.getNetWorth());
}

@Test
public void testNullsAndInvalid() {
Stock stock1 = new Stock("PEAR", "Pear Inc.", BigDecimal.valueOf(300));
Expand Down

0 comments on commit 8cc72ce

Please sign in to comment.