init
This commit is contained in:
commit
41e82217ea
9 changed files with 443 additions and 0 deletions
18
src/main/java/ch/illgner/OrderCalculator.java
Normal file
18
src/main/java/ch/illgner/OrderCalculator.java
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
package ch.illgner;
|
||||
|
||||
public class OrderCalculator {
|
||||
|
||||
/**
|
||||
* Berechnet den Endpreis nach Rabatt und inklusive 19% MwSt.
|
||||
* @param basePrice Der Nettopreis
|
||||
* @param discountRate Der Rabatt (z.B. 0.1 für 10%)
|
||||
* @return Der Endpreis gerundet auf 2 Nachkommastellen
|
||||
*/
|
||||
public double calculateFinalPrice(double basePrice, double discountRate) {
|
||||
double discountedPrice = basePrice * discountRate;
|
||||
|
||||
double priceWithTax = discountedPrice * 1.19;
|
||||
|
||||
return priceWithTax;
|
||||
}
|
||||
}
|
||||
32
src/test/java/ch/illgner/OrderCalculatorTest.java
Normal file
32
src/test/java/ch/illgner/OrderCalculatorTest.java
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
package ch.illgner;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class OrderCalculatorTest {
|
||||
|
||||
@Test
|
||||
public void testCalculateFinalPrice_NormalScenario() {
|
||||
OrderCalculator calculator = new OrderCalculator();
|
||||
|
||||
// Szenario: 100€ Basis, 10% Rabatt = 90€.
|
||||
// 90€ + 19% MwSt (17.10€) = 107.10€
|
||||
double result = calculator.calculateFinalPrice(100.0, 0.10);
|
||||
|
||||
assertEquals(107.10, result, "Der Endpreis für 100€ mit 10% Rabatt muss 107.10 sein.");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCalculateFinalPrice_Rounding() {
|
||||
OrderCalculator calculator = new OrderCalculator();
|
||||
|
||||
// Szenario: 10.55€ Basis, 5% Rabatt = 10.0225€
|
||||
// 10.0225€ + 19% MwSt = 11.926775€ -> Gerundet: 11.93€
|
||||
double result = calculator.calculateFinalPrice(10.55, 0.05);
|
||||
|
||||
assertEquals(11.93, result, "Der Preis muss korrekt auf 2 Stellen gerundet werden.");
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue