JTest für das gesamte Programm

main
3009594 2024-10-05 19:05:31 +02:00
parent edd8fb4ccb
commit b123254ea3
4 changed files with 107 additions and 68 deletions

View File

@ -0,0 +1,47 @@
package Parkhaus;
import static org.junit.jupiter.api.Assertions.*;
import java.text.SimpleDateFormat;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class Allgemeine_Test {
private Parkhaus system;
private SimpleDateFormat sdf;
@BeforeEach
void setUp() throws Exception {
system = new Parkhaus();
sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
}
@Test
void test_Parkhaus() throws Exception {
String kennzeichen = "MA-SH 4077";
String einfahrt = "01.10.2024, 14:30";
String ausfahrt = "01.10.2024, 14:50";
String GueltigeVISAKartennummer = "9823192757222993";
// Einfahren: True => Beide assertTrue Tests.
String einfahren = system.einfahren(kennzeichen, einfahrt);
assertTrue(einfahren.contains(kennzeichen));
assertTrue(einfahren.contains(einfahrt));
assertEquals(179,system.getMaxPlaetze());
// Parkgebühren berechnen: True => da nur eine Stunde
double betrag = system.berechneParkgebuehren(kennzeichen, ausfahrt);
assertEquals(1,betrag);
//Parkgebühren sofort Bezahlen mit Visa-karte: True => Beide assertTrue Tests.
assertTrue(system.checkVisakarteNummer(GueltigeVISAKartennummer));
assertTrue(system.setBezahlt(kennzeichen));
// Ausfahren: True => Beide assertTrue Tests.
assertTrue(system.ausfahren(kennzeichen, ausfahrt));
assertEquals(180,system.getMaxPlaetze());
}
}

View File

@ -24,8 +24,6 @@ public class Fahrzeug {
this.kennzeichen = kennzeichenzufaelliggenerieren.kennzeichengenerieren(); this.kennzeichen = kennzeichenzufaelliggenerieren.kennzeichengenerieren();
this.einfahrt = new Date(); this.einfahrt = new Date();
this.betrag = 0.0; this.betrag = 0.0;
} }
Fahrzeug(String kennzeichen, Date einfahrt) { Fahrzeug(String kennzeichen, Date einfahrt) {

View File

@ -43,15 +43,16 @@ public class Parkhaus {
return "Das Fahrzeug mit dem Kennzeichen: " + fahrzeug.getKennzeichen() + "\n" + "wurde um: " return "Das Fahrzeug mit dem Kennzeichen: " + fahrzeug.getKennzeichen() + "\n" + "wurde um: "
+ fahrzeug.getEinfahrtFormatted() + " im Parkhaus eingefahren."; + fahrzeug.getEinfahrtFormatted() + " im Parkhaus eingefahren.";
} }
public double berechneParkgebuehren(String kennzeichen, String ausfahrtzeit) throws AutoNichtGefundenException, ParseException { public double berechneParkgebuehren(String kennzeichen, String ausfahrtzeit)
throws AutoNichtGefundenException, ParseException {
if (kennzeichen.isEmpty()) if (kennzeichen.isEmpty())
throw new AutoNichtGefundenException("Sie müssen bitte das Kennzeichen Ihres Autos eingeben."); throw new AutoNichtGefundenException("Sie müssen bitte das Kennzeichen Ihres Autos eingeben.");
boolean isEauto = false; boolean isEauto = false;
if (kennzeichen.endsWith("E")) if (kennzeichen.endsWith("E"))
isEauto = true; isEauto = true;
fahrzeug = findeFahrzeug(kennzeichen); fahrzeug = findeFahrzeug(kennzeichen);
Date einfahrt = fahrzeug.getEinfahrt(); Date einfahrt = fahrzeug.getEinfahrt();
Date ausfahrt; Date ausfahrt;
@ -90,17 +91,18 @@ public class Parkhaus {
betragAktuellesAuto = maxTagBetrag; betragAktuellesAuto = maxTagBetrag;
} }
} }
if (isEauto) if (isEauto)
betragAktuellesAuto -= rabattFuerEauto(betragAktuellesAuto); betragAktuellesAuto -= rabattFuerEauto(betragAktuellesAuto);
fahrzeug.setBetrag(betragAktuellesAuto); fahrzeug.setBetrag(betragAktuellesAuto);
return fahrzeug.getBetrag(); return fahrzeug.getBetrag();
} }
public boolean ausfahren(String kennzeichen, String ausfahrtzeit) throws AutoNichtGefundenException, ParseException { public boolean ausfahren(String kennzeichen, String ausfahrtzeit)
throws AutoNichtGefundenException, ParseException {
if (kennzeichen.isEmpty()) if (kennzeichen.isEmpty())
throw new AutoNichtGefundenException("Sie müssen bitte das Kennzeichen Ihres Autos eingeben."); throw new AutoNichtGefundenException("Sie müssen bitte das Kennzeichen Ihres Autos eingeben.");
fahrzeug = findeFahrzeug(kennzeichen); fahrzeug = findeFahrzeug(kennzeichen);
Date ausfahrt; Date ausfahrt;
if (ausfahrtzeit.isEmpty()) { if (ausfahrtzeit.isEmpty()) {
@ -108,28 +110,23 @@ public class Parkhaus {
ausfahrt = sdf.parse(aktuelleZeitString); ausfahrt = sdf.parse(aktuelleZeitString);
} else } else
ausfahrt = sdf.parse(ausfahrtzeit); ausfahrt = sdf.parse(ausfahrtzeit);
if (fahrzeug.isBezahlt() == true || fahrzeug.IstVerschuldet() == true) { if (fahrzeug.isBezahlt() == true || fahrzeug.IstVerschuldet() == true) {
fahrzeuge.remove(fahrzeug); fahrzeuge.remove(fahrzeug);
maxPlaetze++; maxPlaetze++;
return true; return true;
} }
return false; return false;
} }
public boolean setBezahlt(String kennzeichen) throws AutoNichtGefundenException { public boolean setBezahlt(String kennzeichen) throws AutoNichtGefundenException {
fahrzeug = findeFahrzeug(kennzeichen); fahrzeug = findeFahrzeug(kennzeichen);
fahrzeug.setBezahlt(true); fahrzeug.setBezahlt(true);
fahrzeug.setIstVerschuldet(false); fahrzeug.setIstVerschuldet(false);
return true; return true;
} }
public boolean setVerschuldet(String kennzeichen) throws AutoNichtGefundenException { public boolean setVerschuldet(String kennzeichen) throws AutoNichtGefundenException {
fahrzeug = findeFahrzeug(kennzeichen); fahrzeug = findeFahrzeug(kennzeichen);
fahrzeug.setIstVerschuldet(true); fahrzeug.setIstVerschuldet(true);
@ -137,24 +134,20 @@ public class Parkhaus {
fahrzeugeMitSchulden.add(fahrzeug); fahrzeugeMitSchulden.add(fahrzeug);
return true; return true;
} }
public boolean gebuerenNehmen(double betrag) { public boolean gebuerenNehmen(double betrag) {
return betragAktuellesAuto == betrag; return betragAktuellesAuto == betrag;
} }
public boolean checkVisakarteNummer(String visakarteNummer) throws Exception { public boolean checkVisakarteNummer(String visakarteNummer) throws Exception {
return Zahlung.checkVisaKarte(visakarteNummer); return Zahlung.checkVisaKarte(visakarteNummer);
} }
public boolean checkParkplatze() { public boolean checkParkplatze() {
return maxPlaetze > 0; return maxPlaetze > 0;
} }
private Fahrzeug findeFahrzeug(String kennzeichen) throws AutoNichtGefundenException { private Fahrzeug findeFahrzeug(String kennzeichen) throws AutoNichtGefundenException {
for (Fahrzeug auto : fahrzeuge) for (Fahrzeug auto : fahrzeuge)
@ -165,11 +158,10 @@ public class Parkhaus {
} }
private double rabattFuerEauto(double betrag) { private double rabattFuerEauto(double betrag) {
return betrag * 0.2; return betrag * 0.2;
} }
public boolean checkSchulden(String kennzeichen) { public boolean checkSchulden(String kennzeichen) {
for (Fahrzeug sc : fahrzeugeMitSchulden) for (Fahrzeug sc : fahrzeugeMitSchulden)
if (sc.getKennzeichen().equals(kennzeichen)) if (sc.getKennzeichen().equals(kennzeichen))
@ -181,7 +173,5 @@ public class Parkhaus {
public int getMaxPlaetze() { public int getMaxPlaetze() {
return maxPlaetze; return maxPlaetze;
} }
} }

View File

@ -5,12 +5,12 @@ import java.util.Scanner;
public class TextUI { public class TextUI {
private Parkhaus system; private Parkhaus system;
TextUI() throws ParseException, AutoNichtGefundenException, Exception{ TextUI() throws ParseException, AutoNichtGefundenException, Exception {
system = new Parkhaus(); system = new Parkhaus();
startprogramm(); startprogramm();
} }
private void startprogramm() throws Exception { private void startprogramm() throws Exception {
Scanner eingabe = new Scanner(System.in); Scanner eingabe = new Scanner(System.in);
boolean aktiv = true; boolean aktiv = true;
@ -31,7 +31,7 @@ public class TextUI {
String ausfahrtzeit; String ausfahrtzeit;
double betrag; double betrag;
String visaKarteNummer; String visaKarteNummer;
switch (auswhal) { switch (auswhal) {
case "1": // Einfahren case "1": // Einfahren
if (!system.checkParkplatze()) if (!system.checkParkplatze())
@ -40,14 +40,15 @@ public class TextUI {
System.out.println("geben Sie bitte das Kennzeichen Ihres Autos ein (optional): "); System.out.println("geben Sie bitte das Kennzeichen Ihres Autos ein (optional): ");
kennzeichen = eingabe.nextLine(); kennzeichen = eingabe.nextLine();
if (system.checkSchulden(kennzeichen)) if (system.checkSchulden(kennzeichen))
System.out.println("Das Auto mit dem Kennzeichen: " + kennzeichen + " ist im Parkhaus mit Schulden eingefahren!" ); System.out.println("Das Auto mit dem Kennzeichen: " + kennzeichen+ " ist im Parkhaus mit Schulden eingefahren!");
System.out.println("geben Sie nun bitte die Einfahrtszeit ein (oder lassen Sie das für das System):"); System.out
.println("geben Sie nun bitte die Einfahrtszeit ein (oder lassen Sie das für das System):");
einfahrtzeit = eingabe.nextLine(); einfahrtzeit = eingabe.nextLine();
System.out.println(system.einfahren(kennzeichen, einfahrtzeit)); System.out.println(system.einfahren(kennzeichen, einfahrtzeit));
} }
break; break;
case "2": // Parkgebühren berechnen lassen case "2": // Parkgebühren berechnen lassen
System.out.println("Geben Sie erneut das Kennzeichnes Ihres Autos an"); System.out.println("Geben Sie erneut das Kennzeichnes Ihres Autos an");
kennzeichen = eingabe.nextLine(); kennzeichen = eingabe.nextLine();
System.out.println("Geben Sie bitte die Ausfahrtzeit ein (oder lassen Sie das für das System)"); System.out.println("Geben Sie bitte die Ausfahrtzeit ein (oder lassen Sie das für das System)");
@ -61,43 +62,46 @@ public class TextUI {
System.out.println("2.Betrag als Schulden hinterlassen"); System.out.println("2.Betrag als Schulden hinterlassen");
System.out.print(">"); System.out.print(">");
zahlungsOptions = eingabe.nextLine(); zahlungsOptions = eingabe.nextLine();
switch(zahlungsOptions) { switch (zahlungsOptions) {
case "1": case "1":
System.out.println("Geben Sie bitte Ihre 16-stellige Visa-karte Nummer ein: "); System.out.println("Geben Sie bitte Ihre 16-stellige Visa-karte Nummer ein: ");
System.out.print(">"); System.out.print(">");
visaKarteNummer = eingabe.nextLine().trim(); visaKarteNummer = eingabe.nextLine().trim();
// Also wenn die Visakarte korrekt ist, markiert das System das Auto mit dem Kennzeichen als Bezahlt // Also wenn die Visakarte korrekt ist, markiert das System das Auto mit dem
if (system.checkVisakarteNummer(visaKarteNummer)) // Kennzeichen als Bezahlt
if (system.gebuerenNehmen(betrag)) { if (system.checkVisakarteNummer(visaKarteNummer))
system.setBezahlt(kennzeichen); if (system.gebuerenNehmen(betrag)) {
System.out.println("Ihre Auszahlung war erfolgreich"); system.setBezahlt(kennzeichen);
System.out.println("Vielen Dank"); System.out.println("Ihre Auszahlung war erfolgreich");
} } else
System.out.println("Die eingegebene Visa-Kartennummer ist ungültig.");
break;
break;
case "2":
// System markiert das Auto als verschuldet und speichert es dann im System case "2":
system.setVerschuldet(kennzeichen); // System markiert das Auto als verschuldet und speichert es dann im System
System.out.println("Vielen Dank"); system.setVerschuldet(kennzeichen);
break; break;
default: default:
System.out.println("Das war leider keine gültige Eingabe"); System.out.println("Das war leider keine gültige Eingabe");
} }
} }
break; break;
case "3": // Ausfahren case "3": // Ausfahren
System.out.println("Um ausfahren zu können, sollen Sie das Kennzeichen Ihres Auto sowie die Ausfahrtzeit eingeben" ); System.out.println("Um ausfahren zu können, sollen Sie das Kennzeichen Ihres Auto sowie die Ausfahrtzeit eingeben");
System.out.print(">"); System.out.print(">");
kennzeichen = eingabe.nextLine(); kennzeichen = eingabe.nextLine();
System.out.println("Geben Sie nun die Ausfahrtzeit an: "); System.out.println("Geben Sie nun die Ausfahrtzeit an: ");
System.out.print(">"); System.out.print(">");
ausfahrtzeit = eingabe.nextLine(); ausfahrtzeit = eingabe.nextLine();
system.ausfahren(kennzeichen, ausfahrtzeit); if (!system.ausfahren(kennzeichen, ausfahrtzeit))
System.err.println("Das Auto mit dem Kennzeichen fährt ohne Zahlung aus");
break; break;
case "4": case "4":
// TODO System.out.println("Das Programm wird beendet.");
aktiv = false;
eingabe.close();
break; break;
default: default:
System.out.println("Das war leider keine gültige Eingabe"); System.out.println("Das war leider keine gültige Eingabe");