From a450426c04ee965fe1f82369be2d7acefd28de2b Mon Sep 17 00:00:00 2001 From: Hardik Date: Wed, 25 Sep 2024 12:11:19 +0530 Subject: [PATCH 1/2] Implement RewardValue class and update RewardsConverter --- src/main/java/RewardValue.java | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/main/java/RewardValue.java diff --git a/src/main/java/RewardValue.java b/src/main/java/RewardValue.java new file mode 100644 index 000000000..666091a2f --- /dev/null +++ b/src/main/java/RewardValue.java @@ -0,0 +1,37 @@ +public class RewardValue { + private double cashValue; // Store cash value + private int milesValue; // Store miles value + private static final double MILES_CONVERSION_RATE = 0.0035; // 1 mile = $0.0035 + + // Constructor for cash value + public RewardValue(double cashValue) { + this.cashValue = cashValue; + this.milesValue = calculateMilesFromCash(cashValue); + } + + // Constructor for miles value + public RewardValue(int milesValue) { + this.milesValue = milesValue; + this.cashValue = calculateCashFromMiles(milesValue); + } + + // Method to get cash value + public double getCashValue() { + return cashValue; + } + + // Method to get miles value + public int getMilesValue() { + return milesValue; + } + + // Method to calculate miles from cash value + private int calculateMilesFromCash(double cash) { + return (int) (cash / MILES_CONVERSION_RATE); + } + + // Method to calculate cash from miles value + private double calculateCashFromMiles(int miles) { + return miles * MILES_CONVERSION_RATE; + } +} From 81d5fc02d9f42871b878bed897dddafe50cd22f5 Mon Sep 17 00:00:00 2001 From: Hardik Date: Wed, 25 Sep 2024 12:50:00 +0530 Subject: [PATCH 2/2] Implement RewardValue class and unit tests for conversions --- src/main/java/RewardValue.java | 10 ++++++++-- src/test/java/RewardValueTests.java | 13 ++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/RewardValue.java b/src/main/java/RewardValue.java index 666091a2f..04832d3b7 100644 --- a/src/main/java/RewardValue.java +++ b/src/main/java/RewardValue.java @@ -25,13 +25,19 @@ public int getMilesValue() { return milesValue; } + // Static method to get the conversion rate + public static double getMilesConversionRate() { + return MILES_CONVERSION_RATE; + } + // Method to calculate miles from cash value private int calculateMilesFromCash(double cash) { - return (int) (cash / MILES_CONVERSION_RATE); + double miles = cash / MILES_CONVERSION_RATE; // Calculate miles + return (int) Math.round(miles); // Round to nearest int } // Method to calculate cash from miles value private double calculateCashFromMiles(int miles) { - return miles * MILES_CONVERSION_RATE; + return miles * MILES_CONVERSION_RATE; // Calculate cash value from miles } } diff --git a/src/test/java/RewardValueTests.java b/src/test/java/RewardValueTests.java index b3a78de7d..8917c1deb 100644 --- a/src/test/java/RewardValueTests.java +++ b/src/test/java/RewardValueTests.java @@ -17,14 +17,21 @@ void create_with_miles_value() { var rewardValue = new RewardValue(milesValue); assertEquals(milesValue, rewardValue.getMilesValue()); } - @Test void convert_from_cash_to_miles() { - assert false; + double cashValue = 100; // Example cash value + var rewardValue = new RewardValue(cashValue); + double expectedMilesValue = Math.round(cashValue / RewardValue.getMilesConversionRate()); // Use the getter + assertEquals(expectedMilesValue, rewardValue.getMilesValue(), 0.001); // Check if the miles value is correct with a delta for double comparison } @Test void convert_from_miles_to_cash() { - assert false; + int milesValue = 10000; // Example miles value + var rewardValue = new RewardValue(milesValue); + double expectedCashValue = milesValue * RewardValue.getMilesConversionRate(); // Use the getter + assertEquals(expectedCashValue, rewardValue.getCashValue(), 0.001); // Check if the cash value is correct with a delta for double comparison } + + }