From f431e660af43c479b86d88cad3c28470fd5590a5 Mon Sep 17 00:00:00 2001 From: Ashley Date: Wed, 17 Jan 2024 20:40:04 -0500 Subject: [PATCH 1/6] Creating and Running Tests --- .idea/misc.xml | 1 - RefactoringAssignment.iml | 10 ++++++++ {src => test/ifs}/InsuranceCalculator.java | 1 + test/ifs/InsuranceCalculatorTest.java | 30 ++++++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) rename {src => test/ifs}/InsuranceCalculator.java (96%) create mode 100644 test/ifs/InsuranceCalculatorTest.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 0792e77..6d44053 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - 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/src/InsuranceCalculator.java b/test/ifs/InsuranceCalculator.java similarity index 96% rename from src/InsuranceCalculator.java rename to test/ifs/InsuranceCalculator.java index 558e0a0..ac8ee2a 100644 --- a/src/InsuranceCalculator.java +++ b/test/ifs/InsuranceCalculator.java @@ -1,3 +1,4 @@ +package ifs; public class InsuranceCalculator { public double calculateInsurance(double income) { diff --git a/test/ifs/InsuranceCalculatorTest.java b/test/ifs/InsuranceCalculatorTest.java new file mode 100644 index 0000000..3acead5 --- /dev/null +++ b/test/ifs/InsuranceCalculatorTest.java @@ -0,0 +1,30 @@ +package ifs; +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 0e8b5473b47bcb1464ffbd266ed5852cb50e75d6 Mon Sep 17 00:00:00 2001 From: Ashley Date: Wed, 17 Jan 2024 20:51:02 -0500 Subject: [PATCH 2/6] Extracting Methods --- test/ifs/InsuranceCalculator.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/test/ifs/InsuranceCalculator.java b/test/ifs/InsuranceCalculator.java index ac8ee2a..a7f248c 100644 --- a/test/ifs/InsuranceCalculator.java +++ b/test/ifs/InsuranceCalculator.java @@ -9,8 +9,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); } } + public double calculateInsuranceVeryHigh(double income) { + return (income- getAdjustment())* getWeight() + getConstant(); + } + + public int getConstant() { + return 105600; + } + + public double getWeight() { + return 0.02; + } + + public int getAdjustment() { + return 60000; + } + } From 2fd25d3e99ac60d5fa01ab6bc0c60792202ef472 Mon Sep 17 00:00:00 2001 From: Ashley Date: Wed, 17 Jan 2024 20:56:48 -0500 Subject: [PATCH 3/6] Using the Extract Delegate Refactoring --- test/ifs/InsuranceCalculator.java | 19 +++---------------- test/ifs/InsuranceStrategyVeryHigh.java | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 16 deletions(-) create mode 100644 test/ifs/InsuranceStrategyVeryHigh.java diff --git a/test/ifs/InsuranceCalculator.java b/test/ifs/InsuranceCalculator.java index a7f248c..a9a7695 100644 --- a/test/ifs/InsuranceCalculator.java +++ b/test/ifs/InsuranceCalculator.java @@ -1,6 +1,8 @@ package ifs; public class InsuranceCalculator { + private final InsuranceStrategyVeryHigh insuranceStrategyVeryHigh = new InsuranceStrategyVeryHigh(); + public double calculateInsurance(double income) { if (income <= 10000) { return income*0.365; @@ -9,24 +11,9 @@ public double calculateInsurance(double income) { } else if (income <= 60000) { return (income-30000)*0.1+76500; } else { - return calculateInsuranceVeryHigh(income); + return insuranceStrategyVeryHigh.calculateInsuranceVeryHigh(income); } } - public double calculateInsuranceVeryHigh(double income) { - return (income- getAdjustment())* getWeight() + getConstant(); - } - - public int getConstant() { - return 105600; - } - - public double getWeight() { - return 0.02; - } - - public int getAdjustment() { - return 60000; - } } diff --git a/test/ifs/InsuranceStrategyVeryHigh.java b/test/ifs/InsuranceStrategyVeryHigh.java new file mode 100644 index 0000000..8363d2b --- /dev/null +++ b/test/ifs/InsuranceStrategyVeryHigh.java @@ -0,0 +1,22 @@ +package ifs; + +public class InsuranceStrategyVeryHigh { + public InsuranceStrategyVeryHigh() { + } + + public double calculateInsuranceVeryHigh(double income) { + return (income - getAdjustment()) * getWeight() + getConstant(); + } + + public int getConstant() { + return 105600; + } + + public double getWeight() { + return 0.02; + } + + public int getAdjustment() { + return 60000; + } +} \ No newline at end of file From 140d8f3198cf4c03b094eb82cd84f8c6df489c6e Mon Sep 17 00:00:00 2001 From: Ashley Date: Wed, 17 Jan 2024 21:28:48 -0500 Subject: [PATCH 4/6] Fine Tuning --- test/ifs/InsuranceCalculator.java | 6 ++++-- test/ifs/InsuranceStrategy.java | 13 +++++++++++++ test/ifs/InsuranceStrategyVeryHigh.java | 9 ++++----- 3 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 test/ifs/InsuranceStrategy.java diff --git a/test/ifs/InsuranceCalculator.java b/test/ifs/InsuranceCalculator.java index a9a7695..55b90fe 100644 --- a/test/ifs/InsuranceCalculator.java +++ b/test/ifs/InsuranceCalculator.java @@ -1,7 +1,8 @@ package ifs; public class InsuranceCalculator { - private final InsuranceStrategyVeryHigh insuranceStrategyVeryHigh = new InsuranceStrategyVeryHigh(); + private InsuranceStrategyVeryHigh strategy; + public double calculateInsurance(double income) { if (income <= 10000) { @@ -11,7 +12,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/test/ifs/InsuranceStrategy.java b/test/ifs/InsuranceStrategy.java new file mode 100644 index 0000000..4762658 --- /dev/null +++ b/test/ifs/InsuranceStrategy.java @@ -0,0 +1,13 @@ +package ifs; + +public abstract class InsuranceStrategy { + public double calculateInsuranceVeryHigh(double income) { + return (income - getAdjustment()) * getWeight() + getConstant(); + } + + public abstract int getConstant(); + + public abstract double getWeight(); + + public abstract int getAdjustment(); +} diff --git a/test/ifs/InsuranceStrategyVeryHigh.java b/test/ifs/InsuranceStrategyVeryHigh.java index 8363d2b..4001801 100644 --- a/test/ifs/InsuranceStrategyVeryHigh.java +++ b/test/ifs/InsuranceStrategyVeryHigh.java @@ -1,21 +1,20 @@ package ifs; -public class InsuranceStrategyVeryHigh { +public class InsuranceStrategyVeryHigh extends InsuranceStrategy { public InsuranceStrategyVeryHigh() { } - public double calculateInsuranceVeryHigh(double income) { - return (income - getAdjustment()) * getWeight() + getConstant(); - } - + @Override public int getConstant() { return 105600; } + @Override public double getWeight() { return 0.02; } + @Override public int getAdjustment() { return 60000; } From 0cdaadc9580f25b3400dba3eebc5332c809ab1ea Mon Sep 17 00:00:00 2001 From: Ashley Date: Wed, 17 Jan 2024 22:30:16 -0500 Subject: [PATCH 5/6] Implementing the Abstract Class --- test/ifs/InsuranceCalculator.java | 14 ++++++++------ test/ifs/InsuranceStrategy.java | 2 +- test/ifs/InsuranceStrategyHigh.java | 18 ++++++++++++++++++ test/ifs/InsuranceStrategyLow.java | 18 ++++++++++++++++++ test/ifs/InsuranceStrategyMedium.java | 18 ++++++++++++++++++ 5 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 test/ifs/InsuranceStrategyHigh.java create mode 100644 test/ifs/InsuranceStrategyLow.java create mode 100644 test/ifs/InsuranceStrategyMedium.java diff --git a/test/ifs/InsuranceCalculator.java b/test/ifs/InsuranceCalculator.java index 55b90fe..4102a39 100644 --- a/test/ifs/InsuranceCalculator.java +++ b/test/ifs/InsuranceCalculator.java @@ -1,19 +1,21 @@ package ifs; 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/test/ifs/InsuranceStrategy.java b/test/ifs/InsuranceStrategy.java index 4762658..82bd3b3 100644 --- a/test/ifs/InsuranceStrategy.java +++ b/test/ifs/InsuranceStrategy.java @@ -1,7 +1,7 @@ package ifs; public abstract class InsuranceStrategy { - public double calculateInsuranceVeryHigh(double income) { + public double calculate(double income) { return (income - getAdjustment()) * getWeight() + getConstant(); } diff --git a/test/ifs/InsuranceStrategyHigh.java b/test/ifs/InsuranceStrategyHigh.java new file mode 100644 index 0000000..4b61c16 --- /dev/null +++ b/test/ifs/InsuranceStrategyHigh.java @@ -0,0 +1,18 @@ +package ifs; + +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/test/ifs/InsuranceStrategyLow.java b/test/ifs/InsuranceStrategyLow.java new file mode 100644 index 0000000..66b71be --- /dev/null +++ b/test/ifs/InsuranceStrategyLow.java @@ -0,0 +1,18 @@ +package ifs; + +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/test/ifs/InsuranceStrategyMedium.java b/test/ifs/InsuranceStrategyMedium.java new file mode 100644 index 0000000..49d4fa5 --- /dev/null +++ b/test/ifs/InsuranceStrategyMedium.java @@ -0,0 +1,18 @@ +package ifs; + +public class InsuranceStrategyMedium extends InsuranceStrategy { + @Override + public int getConstant() { + return 35600; + } + + @Override + public double getWeight() { + return 0.2; + } + + @Override + public int getAdjustment() { + return 10000; + } +} From 1a634da39de9c419912ff0e1a02664c7a31f1925 Mon Sep 17 00:00:00 2001 From: Ashley Date: Wed, 17 Jan 2024 22:33:41 -0500 Subject: [PATCH 6/6] Happy Ending --- test/ifs/InsuranceCalculator.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/ifs/InsuranceCalculator.java b/test/ifs/InsuranceCalculator.java index 4102a39..4da65d0 100644 --- a/test/ifs/InsuranceCalculator.java +++ b/test/ifs/InsuranceCalculator.java @@ -18,6 +18,4 @@ public double calculateInsurance(double income) { return strategy.calculate(income); } } - - }