From 91121e585ee920a972b4d031b1b95b6a2729092d Mon Sep 17 00:00:00 2001 From: Austen Lowder Date: Wed, 17 Jan 2024 15:33:08 -0500 Subject: [PATCH 1/6] Creating and Running Test --- test/InsuranceCalculatorTest.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 test/InsuranceCalculatorTest.java diff --git a/test/InsuranceCalculatorTest.java b/test/InsuranceCalculatorTest.java new file mode 100644 index 0000000..4d99cd4 --- /dev/null +++ b/test/InsuranceCalculatorTest.java @@ -0,0 +1,27 @@ +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class InsuranceCalculatorTest { + + @Test + public void CalculateVeryLowIncome() { + assertEquals(730, calculateInsurance(2000)); + } + @Test + public void CalculateLowIncome() { + assertEquals(39600, calculateInsurance(30000)); + } + @Test + public void CalculateMedIncome() { + assertEquals(79500, calculateInsurance(60000)); + } + + @Test + public void CalculateHighIncome() { + assertEquals(106200, calculateInsurance(90000)); + } + private double calculateInsurance(double income) { + return new InsuranceCalculator().calculateInsurance(income); + } +} \ No newline at end of file From 7651e3de6879223b509bcca34b5e6fa52777838d Mon Sep 17 00:00:00 2001 From: Austen Lowder Date: Wed, 17 Jan 2024 15:39:57 -0500 Subject: [PATCH 2/6] Extracting Methods --- src/InsuranceCalculator.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/InsuranceCalculator.java b/src/InsuranceCalculator.java index 558e0a0..ac62589 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -8,8 +8,24 @@ public double calculateInsurance(double income) { } else if (income <= 60000) { return (income-30000)*0.1+76500; } else { - return (income-60000)*0.02+105600; + return CalculateInsuranceHigh(income); } } + private static double CalculateInsuranceHigh(double income) { + return (income - getAdjustment()) * getWeight() + getConstant(); + } + + private static int getConstant() { + return 105600; + } + + private static double getWeight() { + return 0.02; + } + + private static int getAdjustment() { + return 60000; + } + } From d4063cb12232b0de118be69a5767ffc429349180 Mon Sep 17 00:00:00 2001 From: Austen Lowder Date: Wed, 17 Jan 2024 15:44:20 -0500 Subject: [PATCH 3/6] Using the Extract Delegate refactoring --- src/InsuranceCalculator.java | 18 +----------------- src/InsuranceStrategyHighIncome.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) create mode 100644 src/InsuranceStrategyHighIncome.java diff --git a/src/InsuranceCalculator.java b/src/InsuranceCalculator.java index ac62589..ed7ae4d 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -8,24 +8,8 @@ public double calculateInsurance(double income) { } else if (income <= 60000) { return (income-30000)*0.1+76500; } else { - return CalculateInsuranceHigh(income); + return InsuranceStrategyHighIncome.CalculateInsuranceHigh(income); } } - private static double CalculateInsuranceHigh(double income) { - return (income - getAdjustment()) * getWeight() + getConstant(); - } - - private static int getConstant() { - return 105600; - } - - private static double getWeight() { - return 0.02; - } - - private static int getAdjustment() { - return 60000; - } - } diff --git a/src/InsuranceStrategyHighIncome.java b/src/InsuranceStrategyHighIncome.java new file mode 100644 index 0000000..bc74911 --- /dev/null +++ b/src/InsuranceStrategyHighIncome.java @@ -0,0 +1,17 @@ +public class InsuranceStrategyHighIncome { + static double CalculateInsuranceHigh(double income) { + return (income - getAdjustment()) * getWeight() + getConstant(); + } + + static int getConstant() { + return 105600; + } + + static double getWeight() { + return 0.02; + } + + static int getAdjustment() { + return 60000; + } +} \ No newline at end of file From ab63d3fdc7f2b1957d930588855b01128f531026 Mon Sep 17 00:00:00 2001 From: Austen Lowder Date: Wed, 17 Jan 2024 15:53:44 -0500 Subject: [PATCH 4/6] Fine tuning --- src/InsuranceCalculator.java | 5 ++++- src/InsuranceStrategy.java | 11 +++++++++++ src/InsuranceStrategyHighIncome.java | 15 +++++++++------ 3 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 src/InsuranceStrategy.java diff --git a/src/InsuranceCalculator.java b/src/InsuranceCalculator.java index ed7ae4d..c2e6d77 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -1,5 +1,7 @@ public class InsuranceCalculator { + private InsuranceStrategyHighIncome strategy; + public double calculateInsurance(double income) { if (income <= 10000) { return income*0.365; @@ -8,7 +10,8 @@ public double calculateInsurance(double income) { } else if (income <= 60000) { return (income-30000)*0.1+76500; } else { - return InsuranceStrategyHighIncome.CalculateInsuranceHigh(income); + strategy = new InsuranceStrategyHighIncome(); + return strategy.CalculateInsuranceHigh(income); } } diff --git a/src/InsuranceStrategy.java b/src/InsuranceStrategy.java new file mode 100644 index 0000000..0a47afd --- /dev/null +++ b/src/InsuranceStrategy.java @@ -0,0 +1,11 @@ +public abstract class InsuranceStrategy { + double CalculateInsuranceHigh(double income) { + return (income - getAdjustment()) * getWeight() + getConstant(); + } + + public abstract int getConstant(); + + public abstract double getWeight(); + + public abstract int getAdjustment(); +} diff --git a/src/InsuranceStrategyHighIncome.java b/src/InsuranceStrategyHighIncome.java index bc74911..3e3a2ed 100644 --- a/src/InsuranceStrategyHighIncome.java +++ b/src/InsuranceStrategyHighIncome.java @@ -1,17 +1,20 @@ -public class InsuranceStrategyHighIncome { - static double CalculateInsuranceHigh(double income) { - return (income - getAdjustment()) * getWeight() + getConstant(); +public class InsuranceStrategyHighIncome extends InsuranceStrategy { + public InsuranceStrategyHighIncome() { + } - static int getConstant() { + @Override + public int getConstant() { return 105600; } - static double getWeight() { + @Override + public double getWeight() { return 0.02; } - static int getAdjustment() { + @Override + public int getAdjustment() { return 60000; } } \ No newline at end of file From 04f8559e302bacff48cc0fc00679c7f15f2a7adf Mon Sep 17 00:00:00 2001 From: Austen Lowder Date: Wed, 17 Jan 2024 16:04:41 -0500 Subject: [PATCH 5/6] Implementing the abstract class --- src/InsuranceCalculator.java | 13 ++++++++----- src/InsuranceStrategy.java | 2 +- src/InsuranceStrategyLowIncome.java | 16 ++++++++++++++++ src/InsuranceStrategyMedIncome.java | 16 ++++++++++++++++ src/InsuranceStrategyVeryLowIncome.java | 16 ++++++++++++++++ 5 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 src/InsuranceStrategyLowIncome.java create mode 100644 src/InsuranceStrategyMedIncome.java create mode 100644 src/InsuranceStrategyVeryLowIncome.java diff --git a/src/InsuranceCalculator.java b/src/InsuranceCalculator.java index c2e6d77..0a91ecc 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -1,17 +1,20 @@ public class InsuranceCalculator { - private InsuranceStrategyHighIncome strategy; + private InsuranceStrategy strategy; public double calculateInsurance(double income) { if (income <= 10000) { - return income*0.365; + strategy = new InsuranceStrategyVeryLowIncome(); + return strategy.calculate(income); } else if (income <= 30000) { - return (income-10000)*0.2+35600; + strategy = new InsuranceStrategyLowIncome(); + return strategy.calculate(income); } else if (income <= 60000) { - return (income-30000)*0.1+76500; + strategy = new InsuranceStrategyMedIncome(); + return strategy.calculate(income); } else { strategy = new InsuranceStrategyHighIncome(); - return strategy.CalculateInsuranceHigh(income); + return strategy.calculate(income); } } diff --git a/src/InsuranceStrategy.java b/src/InsuranceStrategy.java index 0a47afd..5b22a73 100644 --- a/src/InsuranceStrategy.java +++ b/src/InsuranceStrategy.java @@ -1,5 +1,5 @@ public abstract class InsuranceStrategy { - double CalculateInsuranceHigh(double income) { + double calculate(double income) { return (income - getAdjustment()) * getWeight() + getConstant(); } diff --git a/src/InsuranceStrategyLowIncome.java b/src/InsuranceStrategyLowIncome.java new file mode 100644 index 0000000..161acf1 --- /dev/null +++ b/src/InsuranceStrategyLowIncome.java @@ -0,0 +1,16 @@ +public class InsuranceStrategyLowIncome extends InsuranceStrategy { + @Override + public int getConstant() { + return 35600; + } + + @Override + public double getWeight() { + return 0.2; + } + + @Override + public int getAdjustment() { + return 10000; + } +} diff --git a/src/InsuranceStrategyMedIncome.java b/src/InsuranceStrategyMedIncome.java new file mode 100644 index 0000000..5e0ddcd --- /dev/null +++ b/src/InsuranceStrategyMedIncome.java @@ -0,0 +1,16 @@ +public class InsuranceStrategyMedIncome extends InsuranceStrategy { + @Override + public int getConstant() { + return 76500; + } + + @Override + public double getWeight() { + return 0.1; + } + + @Override + public int getAdjustment() { + return 30000; + } +} diff --git a/src/InsuranceStrategyVeryLowIncome.java b/src/InsuranceStrategyVeryLowIncome.java new file mode 100644 index 0000000..ba00986 --- /dev/null +++ b/src/InsuranceStrategyVeryLowIncome.java @@ -0,0 +1,16 @@ +public class InsuranceStrategyVeryLowIncome extends InsuranceStrategy { + @Override + public int getConstant() { + return 0; + } + + @Override + public double getWeight() { + return 0.365; + } + + @Override + public int getAdjustment() { + return 0; + } +} From b8e9456bc1f27bc1e78cb5f0573641c4ae69fa0b Mon Sep 17 00:00:00 2001 From: Austen Lowder Date: Wed, 17 Jan 2024 16:05:14 -0500 Subject: [PATCH 6/6] Happy End --- test/EMPTY | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/EMPTY diff --git a/test/EMPTY b/test/EMPTY deleted file mode 100644 index e69de29..0000000