Ausfahren Metghode mit einem JTest

main
3009594 2024-10-05 18:31:10 +02:00
parent 2c607bedf0
commit edd8fb4ccb
3 changed files with 99 additions and 30 deletions

View File

@ -0,0 +1,39 @@
package Parkhaus;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
class JTest_ausfahren {
private Parkhaus parkhaus;
private SimpleDateFormat sdf;
@BeforeEach
void start() throws ParseException {
parkhaus = new Parkhaus();
sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
}
@Test
public void test_ausfahren() throws Exception {
String kennzeichen = "MA-SH 4077";
String einfahrt = "01.10.2024, 14:30";
String ausfahrt = "01.10.2024, 15:30";
parkhaus.einfahren(kennzeichen, einfahrt);
parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt);
assertTrue(parkhaus.checkVisakarteNummer("9823192757222993"));
assertTrue(parkhaus.setBezahlt(kennzeichen));
assertTrue(parkhaus.gebuerenNehmen(1));
}
}

View File

@ -17,6 +17,7 @@ public class Parkhaus {
private int maxPlaetze; private int maxPlaetze;
private SimpleDateFormat sdf; private SimpleDateFormat sdf;
private Fahrzeug fahrzeug; private Fahrzeug fahrzeug;
private double betragAktuellesAuto;
Parkhaus() { Parkhaus() {
fahrzeuge = new ArrayList<>(); fahrzeuge = new ArrayList<>();
@ -65,7 +66,7 @@ public class Parkhaus {
int inStunden = (int) Math.ceil(inMinuten / 60.0); int inStunden = (int) Math.ceil(inMinuten / 60.0);
int maxNachtBetrag = 5; int maxNachtBetrag = 5;
int maxTagBetrag = 15; int maxTagBetrag = 15;
double betrag = 0; betragAktuellesAuto = 0;
// Erstellung von Calendar-Objekten für Einfahrt und Ausfahrt // Erstellung von Calendar-Objekten für Einfahrt und Ausfahrt
Calendar calEinfahrt = Calendar.getInstance(); Calendar calEinfahrt = Calendar.getInstance();
@ -78,39 +79,68 @@ public class Parkhaus {
int ausfahrtStunde = calAusfahrt.get(Calendar.HOUR_OF_DAY); int ausfahrtStunde = calAusfahrt.get(Calendar.HOUR_OF_DAY);
if (inMinuten <= 15) if (inMinuten <= 15)
betrag = 0; betragAktuellesAuto = 0;
else if ((einfahrtStunde < 6 || einfahrtStunde >= 20) || (ausfahrtStunde < 6 || ausfahrtStunde >= 20)) else if ((einfahrtStunde < 6 || einfahrtStunde >= 20) || (ausfahrtStunde < 6 || ausfahrtStunde >= 20))
betrag = (inStunden <= maxNachtBetrag) ? inStunden : maxNachtBetrag; betragAktuellesAuto = (inStunden <= maxNachtBetrag) ? inStunden : maxNachtBetrag;
else { else {
betrag = inStunden; betragAktuellesAuto = inStunden;
if (betrag > maxTagBetrag) { if (betragAktuellesAuto > maxTagBetrag) {
betrag = maxTagBetrag; betragAktuellesAuto = maxTagBetrag;
} }
} }
if (isEauto) if (isEauto)
betrag -= rabattFuerEauto(betrag); betragAktuellesAuto -= rabattFuerEauto(betragAktuellesAuto);
fahrzeug.setBetrag(betrag); fahrzeug.setBetrag(betragAktuellesAuto);
return fahrzeug.getBetrag(); return fahrzeug.getBetrag();
} }
public boolean ausfahren(String kennzeichen, String ausfahrtzeit) throws AutoNichtGefundenException, ParseException {
if (kennzeichen.isEmpty())
throw new AutoNichtGefundenException("Sie müssen bitte das Kennzeichen Ihres Autos eingeben.");
fahrzeug = findeFahrzeug(kennzeichen);
Date ausfahrt;
if (ausfahrtzeit.isEmpty()) {
String aktuelleZeitString = sdf.format(new Date());
ausfahrt = sdf.parse(aktuelleZeitString);
} else
ausfahrt = sdf.parse(ausfahrtzeit);
if (fahrzeug.isBezahlt() == true || fahrzeug.IstVerschuldet() == true) {
fahrzeuge.remove(fahrzeug);
maxPlaetze++;
return true;
}
return false;
}
public void 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;
} }
public void setVerschuldet(String kennzeichen) throws AutoNichtGefundenException { public boolean setVerschuldet(String kennzeichen) throws AutoNichtGefundenException {
fahrzeug = findeFahrzeug(kennzeichen); fahrzeug = findeFahrzeug(kennzeichen);
fahrzeug.setIstVerschuldet(true); fahrzeug.setIstVerschuldet(true);
fahrzeug.setBezahlt(false); fahrzeug.setBezahlt(false);
fahrzeugeMitSchulden.add(fahrzeug); fahrzeugeMitSchulden.add(fahrzeug);
return true;
}
public boolean gebuerenNehmen(double betrag) {
return betragAktuellesAuto == betrag;
} }
@ -148,23 +178,10 @@ public class Parkhaus {
return false; return false;
} }
// Getter methoden:
public ArrayList<Fahrzeug> getFahrzeuge() {
return fahrzeuge;
}
public ArrayList<Fahrzeug> getFahrzeugeMitSchulden() {
return fahrzeugeMitSchulden;
}
public int getMaxPlaetze() { public int getMaxPlaetze() {
return maxPlaetze; return maxPlaetze;
} }
public SimpleDateFormat getSdf() {
return sdf;
}
} }

View File

@ -53,6 +53,7 @@ public class TextUI {
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)");
ausfahrtzeit = eingabe.nextLine(); ausfahrtzeit = eingabe.nextLine();
betrag = system.berechneParkgebuehren(kennzeichen, ausfahrtzeit); betrag = system.berechneParkgebuehren(kennzeichen, ausfahrtzeit);
System.out.println("Ihr Betrag ist: " + betrag + "€");
if (betrag > 0.0) { if (betrag > 0.0) {
String zahlungsOptions; String zahlungsOptions;
System.out.println("Bitte wählen Sie ein Option aus, was Sie mit dem Ihrem Betrag machen möchten: "); System.out.println("Bitte wählen Sie ein Option aus, was Sie mit dem Ihrem Betrag machen möchten: ");
@ -66,13 +67,19 @@ public class TextUI {
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 Kennzeichen als Bezahlt
if (system.checkVisakarteNummer(visaKarteNummer)) if (system.checkVisakarteNummer(visaKarteNummer))
system.setBezahlt(kennzeichen); if (system.gebuerenNehmen(betrag)) {
system.setBezahlt(kennzeichen);
System.out.println("Ihre Auszahlung war erfolgreich");
System.out.println("Vielen Dank");
}
break; break;
case "2": case "2":
// System markiert das Auto als verschuldet und speichert es dann im System // System markiert das Auto als verschuldet und speichert es dann im System
system.setVerschuldet(kennzeichen); system.setVerschuldet(kennzeichen);
System.out.println("Vielen Dank");
break; break;
default: default:
System.out.println("Das war leider keine gültige Eingabe"); System.out.println("Das war leider keine gültige Eingabe");
@ -80,8 +87,14 @@ public class TextUI {
} }
break; break;
case "3": case "3": // Ausfahren
// TODO System.out.println("Um ausfahren zu können, sollen Sie das Kennzeichen Ihres Auto sowie die Ausfahrtzeit eingeben" );
System.out.print(">");
kennzeichen = eingabe.nextLine();
System.out.println("Geben Sie nun die Ausfahrtzeit an: ");
System.out.print(">");
ausfahrtzeit = eingabe.nextLine();
system.ausfahren(kennzeichen, ausfahrtzeit);
break; break;
case "4": case "4":
// TODO // TODO