From 0651299c27c43b80c67237a828593c7a71a5bf3a Mon Sep 17 00:00:00 2001 From: Per Eric Trapnes Date: Wed, 25 Feb 2026 10:29:20 +0100 Subject: [PATCH] Added PurchaseCalculatorTest & SaleCalculatorTest --- .../Model/Transaction/Transaction.java | 5 +- .../Calculator/PurchaseCalculatorTest.java | 69 ++++++++++++++++++ .../Model/Calculator/SaleCalculatorTest.java | 71 +++++++++++++++++++ 3 files changed, 141 insertions(+), 4 deletions(-) create mode 100644 src/test/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Calculator/PurchaseCalculatorTest.java create mode 100644 src/test/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Calculator/SaleCalculatorTest.java diff --git a/src/main/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Transaction/Transaction.java b/src/main/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Transaction/Transaction.java index 712baf7..67edcaf 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Transaction/Transaction.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Transaction/Transaction.java @@ -33,8 +33,5 @@ public boolean isCommitted() { return committed; } - public void commit(Player player) { - - } - + public void commit(Player player) {} } diff --git a/src/test/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Calculator/PurchaseCalculatorTest.java b/src/test/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Calculator/PurchaseCalculatorTest.java new file mode 100644 index 0000000..d9c62d6 --- /dev/null +++ b/src/test/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Calculator/PurchaseCalculatorTest.java @@ -0,0 +1,69 @@ +package edu.ntnu.idi.idatt2003.gruppe42.Model.Calculator; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import edu.ntnu.idi.idatt2003.gruppe42.Model.Share; +import edu.ntnu.idi.idatt2003.gruppe42.Model.Stock; +import java.math.BigDecimal; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PurchaseCalculatorTest { + private PurchaseCalculator calculator; + private BigDecimal purchasePrice; + private BigDecimal quantity; + + @BeforeEach + void setUp() { + // Setup test data + purchasePrice = new BigDecimal("100"); + quantity = new BigDecimal("10"); + Stock stock = new Stock("AAPL", "Apple Inc.", new BigDecimal("150")); + Share share = new Share(stock, quantity, purchasePrice); + + calculator = new PurchaseCalculator(share); + } + + @Test + void testCalculateGross() { + /** + * Gross = Sales Price * Quantity + * 1000 = 100 * 10 + */ + BigDecimal expectedGross = new BigDecimal("1000"); + assertEquals(0, expectedGross.compareTo(calculator.calculateGross()), + "Gross should be purchasePrice * quantity"); + } + + @Test + void testCalculateCommission() { + /** + * Commission = Gross * Commission Rate (1%) + * Commission = 1000 * 0.01 = 10 + */ + BigDecimal expectedCommission = new BigDecimal("10"); + assertEquals(0, expectedCommission.compareTo(calculator.calculateCommission()), + "Commission should be 1% of Gross"); + } + + @Test + void testCalculateTax() { + /** + * Purchase tax is 0 + */ + BigDecimal expectedTax = BigDecimal.ZERO; + assertEquals(0, expectedTax.compareTo(calculator.calculateTax()), + "Tax for purchase should be zero"); + } + + @Test + void testCalculateTotal() { + /** + * Total = Gross + Commission + * Total = 1000 + 10 = 1010 + */ + BigDecimal expectedTotal = new BigDecimal("1010"); + assertEquals(0, expectedTotal.compareTo(calculator.calculateTotal()), + "Total should be Gross + Commission + Tax"); + } +} diff --git a/src/test/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Calculator/SaleCalculatorTest.java b/src/test/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Calculator/SaleCalculatorTest.java new file mode 100644 index 0000000..aa2c8c7 --- /dev/null +++ b/src/test/java/edu/ntnu/idi/idatt2003/gruppe42/Model/Calculator/SaleCalculatorTest.java @@ -0,0 +1,71 @@ +package edu.ntnu.idi.idatt2003.gruppe42.Model.Calculator; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import edu.ntnu.idi.idatt2003.gruppe42.Model.Share; +import edu.ntnu.idi.idatt2003.gruppe42.Model.Stock; +import java.math.BigDecimal; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class SaleCalculatorTest { + private SaleCalculator calculator; + private BigDecimal purchasePrice; + private BigDecimal salesPrice; + private BigDecimal quantity; + + @BeforeEach + void setUp() { + purchasePrice = new BigDecimal("100"); + salesPrice = new BigDecimal("150"); + quantity = new BigDecimal("10"); + Stock stock = new Stock("AAPL", "Apple Inc.", salesPrice); + Share share = new Share(stock, quantity, purchasePrice); + + calculator = new SaleCalculator(share); + } + + @Test + void testCalculateGross() { + /** + * Gross = Sales Price * Quantity + * 1500 = 150 * 10 + */ + BigDecimal expectedGross = new BigDecimal("1500"); + assertEquals(0, expectedGross.compareTo(calculator.calculateGross()), + "Gross should be salesPrice * quantity"); + } + + @Test + void testCalculateCommission() { + /** + * Commission = Gross * Commission Rate (1%) + * Commission = 1500 * 0.01 = 15 + */ + BigDecimal expectedCommission = new BigDecimal("15"); + assertEquals(0, expectedCommission.compareTo(calculator.calculateCommission()), + "Commission should be 1% of Gross"); + } + + @Test + void testCalculateTax() { + /** + * Tax = (Sales Price - Purchase Price) * Quantity * Tax Rate (22%) + * (150 - 100) * 10 * 0.22 = 110 + */ + BigDecimal expectedTax = new BigDecimal("110"); + assertEquals(0, expectedTax.compareTo(calculator.calculateTax()), + "Tax should be 22% of profit"); + } + + @Test + void testCalculateTotal() { + /** + * Total = Gross - Commission - Tax + * Total = 1500 - 15 - 110 = 1375 + */ + BigDecimal expectedTotal = new BigDecimal("1375"); + assertEquals(0, expectedTotal.compareTo(calculator.calculateTotal()), + "Total should be Gross - Commission - Tax"); + } +}