From 5f7e3d2dad46b0bdd793c17c1315d41f9d753808 Mon Sep 17 00:00:00 2001 From: eronahasani Date: Sun, 14 Dec 2025 14:08:37 +0100 Subject: [PATCH] + JUnit Test: + leerer Warenkorb + Versand Netto und dessen MwSt + Produkte Netto und deren MwSt + Gesamtpreis + optische Verfeinerungen --- OS-Abgabe/resources/.project | 7 ++ OS-Abgabe/src/backend/Bestellung.java | 7 ++ OS-Abgabe/src/backend/OnlineShop.java | 2 +- OS-Abgabe/src/backend/Warenkorb.java | 8 +- OS-Abgabe/src/backend/WarenkorbTest.java | 117 ++++++++++++++++++++++- OS-Abgabe/src/tui/shopTUI.java | 4 +- 6 files changed, 137 insertions(+), 8 deletions(-) diff --git a/OS-Abgabe/resources/.project b/OS-Abgabe/resources/.project index 03f612d..8ce237d 100644 --- a/OS-Abgabe/resources/.project +++ b/OS-Abgabe/resources/.project @@ -8,4 +8,11 @@ + + + produkte.csv + 1 + PARENT-4-PROJECT_LOC/Desktop/produkte.csv + + diff --git a/OS-Abgabe/src/backend/Bestellung.java b/OS-Abgabe/src/backend/Bestellung.java index ae4c248..c4c9981 100644 --- a/OS-Abgabe/src/backend/Bestellung.java +++ b/OS-Abgabe/src/backend/Bestellung.java @@ -1,4 +1,5 @@ package backend; +import java.util.ArrayList; public class Bestellung { private String name; @@ -28,4 +29,10 @@ public class Bestellung { public double getGesamtpreis() { return gesamtpreis; } + + public void warenkorbLeeren() { + for (WarenkorbPosition wp : new ArrayList<>(warenkorb.getPositionen())) { + warenkorb.entfernen(wp.getProdukt()); + } + } } diff --git a/OS-Abgabe/src/backend/OnlineShop.java b/OS-Abgabe/src/backend/OnlineShop.java index 8279057..353ceae 100644 --- a/OS-Abgabe/src/backend/OnlineShop.java +++ b/OS-Abgabe/src/backend/OnlineShop.java @@ -12,7 +12,7 @@ public class OnlineShop { public OnlineShop() throws FileNotFoundException { lager = new ArrayList(); - Scanner sc = new Scanner(new File("././resources/produkte.csv")); + Scanner sc = new Scanner(new File("/Users/eronahasani/Desktop/produkte.csv")); sc.nextLine(); while(sc.hasNextLine() ) { diff --git a/OS-Abgabe/src/backend/Warenkorb.java b/OS-Abgabe/src/backend/Warenkorb.java index f797821..2e40eae 100644 --- a/OS-Abgabe/src/backend/Warenkorb.java +++ b/OS-Abgabe/src/backend/Warenkorb.java @@ -118,8 +118,8 @@ public class Warenkorb { if (versandBrutto() == 0 || gesamtNetto == 0) return 0; - double anteil7 = netto7 / gesamtNetto; - double anteil19 = netto19 / gesamtNetto; + double anteil7 = netto7 / gesamtNetto; + double anteil19 = netto19 / gesamtNetto; double anteilBrutto7 = versandBrutto() * anteil7; double anteilBrutto19 = versandBrutto() * anteil19; @@ -149,13 +149,13 @@ public class Warenkorb { return 0; } - double anteil7 = netto7 / gesamtNetto; + double anteil7 = netto7 / gesamtNetto; double anteil19 = netto19 / gesamtNetto; double anteilBrutto7 = versandBrutto() * anteil7; double anteilBrutto19 = versandBrutto() * anteil19; - double nettoVersand7 = anteilBrutto7 / 1.07; + double nettoVersand7 = anteilBrutto7 / 1.07; double nettoVersand19 = anteilBrutto19 / 1.19; return (anteilBrutto7 diff --git a/OS-Abgabe/src/backend/WarenkorbTest.java b/OS-Abgabe/src/backend/WarenkorbTest.java index 420a303..7f07a71 100644 --- a/OS-Abgabe/src/backend/WarenkorbTest.java +++ b/OS-Abgabe/src/backend/WarenkorbTest.java @@ -18,7 +18,7 @@ public class WarenkorbTest { warenkorb = new Warenkorb(); produkte = new ArrayList<>(); - Scanner sc = new Scanner(new File("././resources/produkte.csv")); + Scanner sc = new Scanner(new File("/Users/eronahasani/Desktop/produkte.csv")); sc.nextLine(); while (sc.hasNextLine()) { @@ -40,14 +40,18 @@ public class WarenkorbTest { @Test void testProduktHinzufuegen() { + warenkorb.produktHinzufügen(produkte.get(0), 2); + assertEquals(1, warenkorb.getPositionen().size()); assertEquals(2, warenkorb.getPositionen().get(0).getMenge()); } @Test void testGleicheProduktHinzufuegen() { + Produkt p = produkte.get(0); + warenkorb.produktHinzufügen(p, 1); warenkorb.produktHinzufügen(p, 2); assertEquals(3, warenkorb.getPositionen().get(0).getMenge()); @@ -55,25 +59,136 @@ public class WarenkorbTest { @Test void testMengeAendern() { + Produkt p = produkte.get(1); + warenkorb.produktHinzufügen(p, 2); + assertTrue(warenkorb.mengeAendern(p, 3)); assertEquals(3, warenkorb.getPositionen().get(0).getMenge()); } @Test void testEntfernen() { + Produkt p = produkte.get(2); + warenkorb.produktHinzufügen(p, 1); warenkorb.mengeAendern(p, 0); + assertEquals(0, warenkorb.getPositionen().size()); } @Test void testWarenkorbLeer() { + Produkt p = produkte.get(0); + warenkorb.produktHinzufügen(p, 2); warenkorb.mengeAendern(p, 0); + assertEquals(0, warenkorb.getPositionen().size()); } + + + @Test + void testProdukteNetto() { + + Produkt p = produkte.get(0); + + warenkorb.produktHinzufügen(p, 1); + + double netto = p.getPreis(); + assertEquals(netto, warenkorb.produkteNetto(), 0.01); + } + + + @Test + void testProdukteMwst() { + + Produkt p = produkte.get(0); + + warenkorb.produktHinzufügen(p, 1); + + double mwst = p.getPreis() * p.getMwst() / 100.0; + assertEquals(mwst, warenkorb.produkteMwst(), 0.01); + } + + + @Test + void testProdukteMwst19und7() { + + Produkt p1 = produkte.get(0); + Produkt p2 = produkte.get(1); + + warenkorb.produktHinzufügen(p1, 2); + warenkorb.produktHinzufügen(p2, 3); + + double mwstP1 = 2 * p1.getPreis() * p1.getMwst() / 100.0; + double mwstP2 = 3 * p2.getPreis() * p2.getMwst() / 100.0; + double erwartet = mwstP1 + mwstP2; + + assertEquals(erwartet, warenkorb.produkteMwst(), 0.01); + } + + + @Test + void testVersandNetto() { + + warenkorb.produktHinzufügen(produkte.get(0), 5); + warenkorb.produktHinzufügen(produkte.get(1), 2); + + double gesamtNetto = warenkorb.produkteNetto(); + double anteil7 = 2 * produkte.get(1).getPreis() / gesamtNetto; + double anteil19 = 5 * produkte.get(0).getPreis() / gesamtNetto; + double versandBrutto = warenkorb.versandBrutto(); + + double anteilBrutto7 = versandBrutto * anteil7; + double anteilBrutto19 = versandBrutto * anteil19; + + double erwartet = (anteilBrutto7 / 1.07) + + (anteilBrutto19 / 1.19); + + assertEquals(erwartet, warenkorb.versandNetto(), 0.01); + } + + + @Test + void testVersandMwst() { + + warenkorb.produktHinzufügen(produkte.get(0), 5); + warenkorb.produktHinzufügen(produkte.get(1), 2); + + double gesamtNetto = warenkorb.produkteNetto(); + double anteil7 = 2 * produkte.get(1).getPreis() / gesamtNetto; + double anteil19 = 5 * produkte.get(0).getPreis() / gesamtNetto; + double versandBrutto = warenkorb.versandBrutto(); + + double anteilBrutto7 = versandBrutto * anteil7; + double anteilBrutto19 = versandBrutto * anteil19; + double nettoVersand7 = anteilBrutto7 / 1.07; + double nettoVersand19 = anteilBrutto19 / 1.19; + + double erwartet = (anteilBrutto7 + - nettoVersand7) + + (anteilBrutto19 + - nettoVersand19); + + assertEquals(erwartet, warenkorb.versandMwst(), 0.01); + } + + + @Test + void testGesamtpreis() { + + warenkorb.produktHinzufügen(produkte.get(1), 2); + + double erwartet = warenkorb.produkteNetto() + + warenkorb.produkteMwst() + + warenkorb.versandNetto() + + warenkorb.versandMwst(); + + assertEquals(erwartet, warenkorb.gesamtpreis()); + } + } \ No newline at end of file diff --git a/OS-Abgabe/src/tui/shopTUI.java b/OS-Abgabe/src/tui/shopTUI.java index 8fc4182..2c764ea 100644 --- a/OS-Abgabe/src/tui/shopTUI.java +++ b/OS-Abgabe/src/tui/shopTUI.java @@ -188,7 +188,7 @@ public class shopTUI { } else if (eingabe.equals("bestellen")) { bestellen(); } else { - System.out.println("\n\n Ungültige Eingabe (˃̣̣̥ᯅ˂̣̣̥) Versuchen Sie es bitte erneut: \n\n"); + System.out.println("\n\nUngültige Eingabe (˃̣̣̥ᯅ˂̣̣̥) Versuchen Sie es bitte erneut: \n\n"); warenkorb(); } } @@ -219,7 +219,7 @@ public class shopTUI { } System.out.printf("\nGesamtpreis: \n%.2f€\n", bestellung.getGesamtpreis()); System.out.println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); - warenkorb = new Warenkorb(); + bestellung.warenkorbLeeren(); System.out.println("\n\nIhr Warenkorb wurde geleert! ◝(˶˃ᵕ˂˶)◜"); System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n"); hauptmenü();