Retrait des nombres magiques
All checks were successful
Gradle Test / test (push) Successful in 54s

This commit is contained in:
Feror 2025-02-05 12:28:05 +01:00
parent a95bf5e7a2
commit fa94b9297f
4 changed files with 21 additions and 13 deletions

View file

@ -1,11 +1,14 @@
package movierental.MoviePriceCalculation; package movierental.MoviePriceCalculation;
public class ChildrenMoviePriceCalculation implements MoviePriceCalculationStrategy { public class ChildrenMoviePriceCalculation implements MoviePriceCalculationStrategy {
private final static double BASE_AMOUNT = 1.5;
private final static int DAYS_RENTED_THRESHOLD = 3;
@Override @Override
public double calculatePrice(int daysRented) { public double calculatePrice(int daysRented) {
double thisAmount = 1.5; double thisAmount = BASE_AMOUNT;
if (daysRented > 3) { if (daysRented > DAYS_RENTED_THRESHOLD) {
thisAmount += (daysRented - 3) * 1.5; thisAmount += (daysRented - DAYS_RENTED_THRESHOLD) * BASE_AMOUNT;
} }
return thisAmount; return thisAmount;
} }

View file

@ -1,8 +1,9 @@
package movierental.MoviePriceCalculation; package movierental.MoviePriceCalculation;
public class NewReleaseMoviePriceCalculation implements MoviePriceCalculationStrategy { public class NewReleaseMoviePriceCalculation implements MoviePriceCalculationStrategy {
private final static double BASE_AMOUNT = 3;
@Override @Override
public double calculatePrice(int daysRented) { public double calculatePrice(int daysRented) {
return daysRented * 3; return daysRented * BASE_AMOUNT;
} }
} }

View file

@ -1,11 +1,15 @@
package movierental.MoviePriceCalculation; package movierental.MoviePriceCalculation;
public class RegularMoviePriceCalculation implements MoviePriceCalculationStrategy { public class RegularMoviePriceCalculation implements MoviePriceCalculationStrategy {
private final static double BASE_AMOUNT = 2;
private final static int DAYS_RENTED_THRESHOLD = 2;
private final static double EXTRA_AMOUNT = 1.5;
@Override @Override
public double calculatePrice(int daysRented) { public double calculatePrice(int daysRented) {
double thisAmount = 2; double thisAmount = BASE_AMOUNT;
if (daysRented > 2) { if (daysRented > DAYS_RENTED_THRESHOLD) {
thisAmount += (daysRented - 2) * 1.5; thisAmount += (daysRented - DAYS_RENTED_THRESHOLD) * EXTRA_AMOUNT;
} }
return thisAmount; return thisAmount;
} }

View file

@ -10,12 +10,12 @@ class RentalTest {
@ParameterizedTest @ParameterizedTest
@CsvSource({ @CsvSource({
"2, 0, 2.0", // regular movie, no overtime "2, 0, 2.0", // regular movie, no overtime, should return 2.0
"3, 0, 3.5", // regular movie, with overtime "3, 0, 3.5", // regular movie, with overtime, should return 3.5
"1, 1, 3.0", // new release movie, one day "1, 1, 3.0", // new release movie, one day, should return 3.0
"2, 1, 6.0", // new release movie, two days "2, 1, 6.0", // new release movie, two days, should return 6.0
"3, 2, 1.5", // children movie, no overtime "3, 2, 1.5", // children movie, no overtime, should return 1.5
"4, 2, 3.0" // children movie, with overtime "4, 2, 3.0" // children movie, with overtime, should return 3.0
}) })
void should_return_correct_price_for_movie(int daysRented, int movie_type, double expected) { void should_return_correct_price_for_movie(int daysRented, int movie_type, double expected) {
// Given // Given