From 1c28a99da0706a10202cc857fb5a6f79d72320f3 Mon Sep 17 00:00:00 2001 From: PandorasGit Date: Wed, 17 Jan 2024 16:54:25 -0500 Subject: [PATCH 1/6] Creating and running test --- RefactoringAssignment.iml | 10 ++++++++++ test/InsuranceCalculatorTest.java | 29 +++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 test/InsuranceCalculatorTest.java diff --git a/RefactoringAssignment.iml b/RefactoringAssignment.iml index 7e880ab..454125c 100644 --- a/RefactoringAssignment.iml +++ b/RefactoringAssignment.iml @@ -24,5 +24,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/test/InsuranceCalculatorTest.java b/test/InsuranceCalculatorTest.java new file mode 100644 index 0000000..a57df57 --- /dev/null +++ b/test/InsuranceCalculatorTest.java @@ -0,0 +1,29 @@ +import org.junit.Test; + +import static org.junit.Assert.*; + +public class InsuranceCalculatorTest { + @Test + public void low() { + assertEquals(1825, insuranceFor(5000), 0.01); + } + + @Test + public void medium() { + assertEquals(38600, insuranceFor(25000), 0.01); + } + + @Test + public void high() { + assertEquals(78500, insuranceFor(50000), 0.01); + } + + @Test + public void veryHigh() { + assertEquals(106400, insuranceFor(100_000), 0.01); + } + + private double insuranceFor(double income) { + return new InsuranceCalculator().calculateInsurance(income); + } +} \ No newline at end of file From dbba43375c5a5a2bb9d57c65758ff862c377a011 Mon Sep 17 00:00:00 2001 From: PandorasGit Date: Wed, 17 Jan 2024 16:59:10 -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..7ee351f 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 calculateInsuranceVeryHigh(income); } } + private static double calculateInsuranceVeryHigh(double income) { + return (income - getAdjustment()) * getWeight() + getConstant(); + } + + private static double getWeight() { + return 0.02; + } + + private static int getAdjustment() { + return 60000; + } + + private static int getConstant() { + return 105600; + } + } From 5c0b3209c6cc99da0bf337933c1cbad80678de9e Mon Sep 17 00:00:00 2001 From: PandorasGit Date: Wed, 17 Jan 2024 17:01:00 -0500 Subject: [PATCH 3/6] Using the Extract Delegate refactoring --- src/InsuranceCalculator.java | 18 +----------------- src/InsuranceStrategyVeryHigh.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) create mode 100644 src/InsuranceStrategyVeryHigh.java diff --git a/src/InsuranceCalculator.java b/src/InsuranceCalculator.java index 7ee351f..90246d8 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 calculateInsuranceVeryHigh(income); + return InsuranceStrategyVeryHigh.calculateInsuranceVeryHigh(income); } } - private static double calculateInsuranceVeryHigh(double income) { - return (income - getAdjustment()) * getWeight() + getConstant(); - } - - private static double getWeight() { - return 0.02; - } - - private static int getAdjustment() { - return 60000; - } - - private static int getConstant() { - return 105600; - } - } diff --git a/src/InsuranceStrategyVeryHigh.java b/src/InsuranceStrategyVeryHigh.java new file mode 100644 index 0000000..cfa5ed1 --- /dev/null +++ b/src/InsuranceStrategyVeryHigh.java @@ -0,0 +1,17 @@ +public class InsuranceStrategyVeryHigh { + static double calculateInsuranceVeryHigh(double income) { + return (income - getAdjustment()) * getWeight() + getConstant(); + } + + static double getWeight() { + return 0.02; + } + + static int getAdjustment() { + return 60000; + } + + static int getConstant() { + return 105600; + } +} \ No newline at end of file From d6fca430fba6bb6305c75f29eed1f76ff03020a2 Mon Sep 17 00:00:00 2001 From: PandorasGit Date: Wed, 17 Jan 2024 17:07:07 -0500 Subject: [PATCH 4/6] sing the Extract Delegate refactoring --- src/InsuranceCalculator.java | 4 +++- src/InsuranceStrategy.java | 13 +++++++++++++ src/InsuranceStrategyVeryHigh.java | 15 ++------------- 3 files changed, 18 insertions(+), 14 deletions(-) create mode 100644 src/InsuranceStrategy.java diff --git a/src/InsuranceCalculator.java b/src/InsuranceCalculator.java index 90246d8..38c61c9 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -1,5 +1,6 @@ public class InsuranceCalculator { + private InsuranceStrategyVeryHigh strategy; public double calculateInsurance(double income) { if (income <= 10000) { return income*0.365; @@ -8,7 +9,8 @@ public double calculateInsurance(double income) { } else if (income <= 60000) { return (income-30000)*0.1+76500; } else { - return InsuranceStrategyVeryHigh.calculateInsuranceVeryHigh(income); + strategy = new InsuranceStrategyVeryHigh(); + return strategy.calculateInsuranceVeryHigh(income); } } diff --git a/src/InsuranceStrategy.java b/src/InsuranceStrategy.java new file mode 100644 index 0000000..ce96ba6 --- /dev/null +++ b/src/InsuranceStrategy.java @@ -0,0 +1,13 @@ +public class InsuranceStrategy { + public double getWeight() { + return 0.02; + } + + public int getAdjustment() { + return 60000; + } + + public int getConstant() { + return 105600; + } +} diff --git a/src/InsuranceStrategyVeryHigh.java b/src/InsuranceStrategyVeryHigh.java index cfa5ed1..019079c 100644 --- a/src/InsuranceStrategyVeryHigh.java +++ b/src/InsuranceStrategyVeryHigh.java @@ -1,17 +1,6 @@ -public class InsuranceStrategyVeryHigh { - static double calculateInsuranceVeryHigh(double income) { +public class InsuranceStrategyVeryHigh extends InsuranceStrategy { + public double calculateInsuranceVeryHigh(double income) { return (income - getAdjustment()) * getWeight() + getConstant(); } - static double getWeight() { - return 0.02; - } - - static int getAdjustment() { - return 60000; - } - - static int getConstant() { - return 105600; - } } \ No newline at end of file From 8c05864459620e1b60f986bf3d56e13da0524cee Mon Sep 17 00:00:00 2001 From: PandorasGit Date: Wed, 17 Jan 2024 17:19:03 -0500 Subject: [PATCH 5/6] Implementing the abstract class --- src/InsuranceCalculator.java | 13 ++++++++----- src/InsuranceStrategy.java | 6 +++++- src/InsuranceStrategyHigh.java | 17 +++++++++++++++++ src/InsuranceStrategyLow.java | 16 ++++++++++++++++ src/InsuranceStrategyMedium.java | 16 ++++++++++++++++ src/InsuranceStrategyVeryHigh.java | 3 --- 6 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 src/InsuranceStrategyHigh.java create mode 100644 src/InsuranceStrategyLow.java create mode 100644 src/InsuranceStrategyMedium.java diff --git a/src/InsuranceCalculator.java b/src/InsuranceCalculator.java index 38c61c9..a36e9fc 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -1,16 +1,19 @@ public class InsuranceCalculator { - private InsuranceStrategyVeryHigh strategy; + private InsuranceStrategy strategy; public double calculateInsurance(double income) { if (income <= 10000) { - return income*0.365; + strategy = new InsuranceStrategyLow(); + return strategy.calculate(income); } else if (income <= 30000) { - return (income-10000)*0.2+35600; + strategy = new InsuranceStrategyMedium(); + return strategy.calculate(income); } else if (income <= 60000) { - return (income-30000)*0.1+76500; + strategy = new InsuranceStrategyHigh(); + return strategy.calculate(income); } else { strategy = new InsuranceStrategyVeryHigh(); - return strategy.calculateInsuranceVeryHigh(income); + return strategy.calculate(income); } } diff --git a/src/InsuranceStrategy.java b/src/InsuranceStrategy.java index ce96ba6..79a957d 100644 --- a/src/InsuranceStrategy.java +++ b/src/InsuranceStrategy.java @@ -1,4 +1,8 @@ -public class InsuranceStrategy { +public abstract class InsuranceStrategy { + + public double calculate(double income) { + return (income - getAdjustment()) * getWeight() + getConstant(); + } public double getWeight() { return 0.02; } diff --git a/src/InsuranceStrategyHigh.java b/src/InsuranceStrategyHigh.java new file mode 100644 index 0000000..e24b363 --- /dev/null +++ b/src/InsuranceStrategyHigh.java @@ -0,0 +1,17 @@ +public class InsuranceStrategyHigh 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/InsuranceStrategyLow.java b/src/InsuranceStrategyLow.java new file mode 100644 index 0000000..58278e8 --- /dev/null +++ b/src/InsuranceStrategyLow.java @@ -0,0 +1,16 @@ +public class InsuranceStrategyLow extends InsuranceStrategy { + @Override + public int getConstant() { + return 0; + } + + @Override + public double getWeight() { + return 0.365; + } + + @Override + public int getAdjustment() { + return 0; + } +} diff --git a/src/InsuranceStrategyMedium.java b/src/InsuranceStrategyMedium.java new file mode 100644 index 0000000..6994a01 --- /dev/null +++ b/src/InsuranceStrategyMedium.java @@ -0,0 +1,16 @@ +public class InsuranceStrategyMedium 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/InsuranceStrategyVeryHigh.java b/src/InsuranceStrategyVeryHigh.java index 019079c..4538537 100644 --- a/src/InsuranceStrategyVeryHigh.java +++ b/src/InsuranceStrategyVeryHigh.java @@ -1,6 +1,3 @@ public class InsuranceStrategyVeryHigh extends InsuranceStrategy { - public double calculateInsuranceVeryHigh(double income) { - return (income - getAdjustment()) * getWeight() + getConstant(); - } } \ No newline at end of file From 57c780e2e34495ac82f16663d751f6eef913fa78 Mon Sep 17 00:00:00 2001 From: PandorasGit Date: Wed, 17 Jan 2024 17:59:09 -0500 Subject: [PATCH 6/6] Happy End --- src/InsuranceCalculator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/InsuranceCalculator.java b/src/InsuranceCalculator.java index a36e9fc..d397aec 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -16,5 +16,4 @@ public double calculateInsurance(double income) { return strategy.calculate(income); } } - }