This commit is contained in:
fillg1 2026-04-08 21:47:13 +02:00
commit 41e82217ea
9 changed files with 443 additions and 0 deletions

View 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;
}
}

View 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.");
}
}