berechneParkgebuehren methode mit E-Autos und Testfällen für normale
Autos und E-Autosmain
parent
8be136b83a
commit
1a3a3b7730
|
@ -17,12 +17,12 @@ public class Fahrzeug {
|
|||
private Date einfahrt;
|
||||
private Date ausfahrt;
|
||||
private boolean bezahlt;
|
||||
private int betrag;
|
||||
private double betrag;
|
||||
|
||||
Fahrzeug() {
|
||||
this.kennzeichen = kennzeichenzufaelliggenerieren.kennzeichengenerieren();
|
||||
this.einfahrt = new Date();
|
||||
this.betrag = 0;
|
||||
this.betrag = 0.0;
|
||||
this.bezahlt = false;
|
||||
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ public class Fahrzeug {
|
|||
Fahrzeug(String kennzeichen, Date einfahrt) {
|
||||
this.kennzeichen = kennzeichen;
|
||||
this.einfahrt = einfahrt;
|
||||
this.betrag = 0;
|
||||
this.betrag = 0.0;
|
||||
this.bezahlt = false;
|
||||
}
|
||||
|
||||
|
@ -64,11 +64,11 @@ public class Fahrzeug {
|
|||
this.bezahlt = bezahlt;
|
||||
}
|
||||
|
||||
public int getBetrag() {
|
||||
public double getBetrag() {
|
||||
return betrag;
|
||||
}
|
||||
|
||||
public void setBetrag(int betrag) {
|
||||
public void setBetrag(double betrag) {
|
||||
this.betrag = betrag;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import java.text.SimpleDateFormat;
|
|||
import java.util.Date;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class JTest_berechneParkgebuehren {
|
||||
|
@ -20,6 +21,36 @@ class JTest_berechneParkgebuehren {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void test_EautoBetrag() throws ParseException, AutoNichtGefundenException {
|
||||
String kennzeichen = "MA-SH 4077E";
|
||||
String einfahrt = "01.10.2024, 14:30";
|
||||
String ausfahrt = "01.10.2024, 14:45";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
|
||||
// 15 Minuten => True
|
||||
assertEquals(0,parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt));
|
||||
|
||||
// 16 Minuten => True
|
||||
einfahrt = "01.10.2024, 14:30";
|
||||
ausfahrt = "01.10.2024, 14:50";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
assertEquals(0.8,parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt));
|
||||
|
||||
// 2 Stunde => True
|
||||
einfahrt = "01.10.2024, 14:00";
|
||||
ausfahrt = "01.10.2024, 16:00";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
assertEquals(1.6, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt));
|
||||
|
||||
// Zwischen 20 bis 6 Uhr => True
|
||||
einfahrt = "01.10.2024, 22:00";
|
||||
ausfahrt = "02.10.2024, 04:00";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
assertEquals(4, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt));
|
||||
|
||||
}
|
||||
|
||||
@Disabled
|
||||
public void test_berechneParkgebuehren() throws ParseException, AutoNichtGefundenException {
|
||||
String kennzeichen = "MA-SH 4077";
|
||||
String einfahrt = "01.10.2024, 14:30";
|
||||
|
@ -32,26 +63,33 @@ class JTest_berechneParkgebuehren {
|
|||
// 16 Minuten => True
|
||||
einfahrt = "01.10.2024, 14:30";
|
||||
ausfahrt = "01.10.2024, 14:46";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
assertEquals(1,parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt));
|
||||
|
||||
// 1 Stunde => True
|
||||
einfahrt = "01.10.2024, 14:30";
|
||||
ausfahrt = "01.10.2024, 15:30";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
assertEquals(1, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt));
|
||||
|
||||
|
||||
|
||||
// 2 Stunden => True
|
||||
einfahrt = "01.10.2024, 14:00";
|
||||
ausfahrt = "01.10.2024, 16:00";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
assertEquals(2, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt));
|
||||
|
||||
// Zwischen 20 bis 6 Uhr => True
|
||||
einfahrt = "01.10.2024, 22:00";
|
||||
ausfahrt = "02.10.2024, 04:00";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
assertEquals(5, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt));
|
||||
|
||||
|
||||
// 24 Stunden
|
||||
einfahrt = "01.10.2024, 14:00";
|
||||
ausfahrt = "02.10.2024, 14:00";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
assertEquals(15, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -7,12 +7,7 @@ public class Main {
|
|||
|
||||
public static void main(String[] args) throws ParseException, AutoNichtGefundenException {
|
||||
|
||||
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||
Date d1 = sdf.parse("01.10.2024, 14:00");
|
||||
Date d2 = sdf.parse("01.10.2024, 15:30");
|
||||
|
||||
|
||||
System.out.println( d1.getHours());
|
||||
new TextUI();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -45,10 +45,14 @@ public class Parkhaus {
|
|||
|
||||
|
||||
|
||||
public int berechneParkgebuehren(String kennzeichen, String ausfahrtzeit) throws AutoNichtGefundenException, ParseException {
|
||||
if (kennzeichen.isEmpty()) {
|
||||
public double berechneParkgebuehren(String kennzeichen, String ausfahrtzeit)
|
||||
throws AutoNichtGefundenException, ParseException {
|
||||
if (kennzeichen.isEmpty())
|
||||
throw new AutoNichtGefundenException("Sie müssen bitte das Kennzeichen Ihres Autos eingeben.");
|
||||
}
|
||||
|
||||
boolean isEauto = false;
|
||||
if (kennzeichen.endsWith("E"))
|
||||
isEauto = true;
|
||||
|
||||
Fahrzeug fahrzeug = findeFahrzeug(kennzeichen);
|
||||
Date einfahrt = fahrzeug.getEinfahrt();
|
||||
|
@ -57,15 +61,14 @@ public class Parkhaus {
|
|||
if (ausfahrtzeit.isEmpty()) {
|
||||
String aktuelleZeitString = sdf.format(new Date());
|
||||
ausfahrt = sdf.parse(aktuelleZeitString);
|
||||
} else {
|
||||
} else
|
||||
ausfahrt = sdf.parse(ausfahrtzeit);
|
||||
}
|
||||
|
||||
double inMinuten = (ausfahrt.getTime() - einfahrt.getTime()) / 1000.0 / 60.0;
|
||||
int inStunden = (int) Math.ceil(inMinuten / 60.0);
|
||||
int maxNachtBetrag = 5;
|
||||
int maxTagBetrag = 15;
|
||||
int betrag = 0;
|
||||
double betrag = 0;
|
||||
|
||||
// Erstellung von Calendar-Objekten für Einfahrt und Ausfahrt
|
||||
Calendar calEinfahrt = Calendar.getInstance();
|
||||
|
@ -80,11 +83,8 @@ public class Parkhaus {
|
|||
if (inMinuten <= 15)
|
||||
betrag = 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;
|
||||
System.out.println(betrag);
|
||||
}
|
||||
|
||||
|
||||
else {
|
||||
betrag = inStunden;
|
||||
|
@ -92,11 +92,16 @@ public class Parkhaus {
|
|||
betrag = maxTagBetrag;
|
||||
}
|
||||
}
|
||||
if (isEauto)
|
||||
betrag -= rabattFuerEauto(betrag);
|
||||
|
||||
fahrzeug.setBetrag(betrag);
|
||||
return fahrzeug.getBetrag();
|
||||
}
|
||||
|
||||
private double rabattFuerEauto(double betrag) {
|
||||
return betrag * 0.2;
|
||||
}
|
||||
|
||||
private Fahrzeug findeFahrzeug(String kennzeichen) throws AutoNichtGefundenException {
|
||||
|
||||
|
|
Loading…
Reference in New Issue