From 7a3df520409918f74643c13b91eeaa553a821b0f Mon Sep 17 00:00:00 2001 From: hannahj001 Date: Wed, 17 Jan 2024 12:16:11 -0500 Subject: [PATCH 1/6] =?UTF-8?q?Creating=20and=20running=20test=EF=BB=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/InsuranceCalculatorTest.java | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test/InsuranceCalculatorTest.java diff --git a/test/InsuranceCalculatorTest.java b/test/InsuranceCalculatorTest.java new file mode 100644 index 0000000..ac6d6a1 --- /dev/null +++ b/test/InsuranceCalculatorTest.java @@ -0,0 +1,31 @@ +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + + +class InsuranceCalculatorTest { + @Test + public void lowIncome() { + assertEquals(1825, calculate(5000), 0.01); + } + @Test + public void mediumIncome() { + assertEquals(38600, calculate(25000), 0.01); + } + @Test + public void highIncome() { + assertEquals(78500, calculate(50000), 0.01); + } + @Test + public void veryHighIncome() { + assertEquals(106400, calculate(100000), 0.01); + } + @Test + public void veryLowIncome() { + assertEquals(0.73, calculate(2), 0.01); + } + private double calculate(double income) { + return new InsuranceCalculator().calculateInsurance(income); + } +} + From 866af46eeb370e7fa0b7492af94181feb6589827 Mon Sep 17 00:00:00 2001 From: hannahj001 Date: Wed, 17 Jan 2024 12:24:52 -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..0accff5 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 getaDouble(income); } } + private static double getaDouble(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 31737fb04f0a3fe73f6a081d45dddc7f7c4a86c4 Mon Sep 17 00:00:00 2001 From: hannahj001 Date: Wed, 17 Jan 2024 12:27:24 -0500 Subject: [PATCH 3/6] Using the Extract Delegate refactoring --- src/InsuranceCalculator.java | 17 +---------------- src/InsuranceStrategyVeryHigh.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 16 deletions(-) create mode 100644 src/InsuranceStrategyVeryHigh.java diff --git a/src/InsuranceCalculator.java b/src/InsuranceCalculator.java index 0accff5..88aedbb 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -8,24 +8,9 @@ public double calculateInsurance(double income) { } else if (income <= 60000) { return (income-30000)*0.1+76500; } else { - return getaDouble(income); + return InsuranceStrategyVeryHigh.getaDouble(income); } } - private static double getaDouble(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/InsuranceStrategyVeryHigh.java b/src/InsuranceStrategyVeryHigh.java new file mode 100644 index 0000000..f759c32 --- /dev/null +++ b/src/InsuranceStrategyVeryHigh.java @@ -0,0 +1,17 @@ +public class InsuranceStrategyVeryHigh { + static double getaDouble(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 ab008a607464cabb0ad611eb1572d2fb88b6a2ff Mon Sep 17 00:00:00 2001 From: hannahj001 Date: Wed, 17 Jan 2024 12:41:13 -0500 Subject: [PATCH 4/6] Fine tuning --- src/InsuranceCalculator.java | 6 +++++- src/InsuranceStrategy.java | 12 ++++++++++++ src/InsuranceStrategyVeryHigh.java | 17 +++++++++-------- 3 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 src/InsuranceStrategy.java diff --git a/src/InsuranceCalculator.java b/src/InsuranceCalculator.java index 88aedbb..e154b53 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -1,5 +1,8 @@ public class InsuranceCalculator { + private InsuranceStrategyVeryHigh strategy; + + public double calculateInsurance(double income) { if (income <= 10000) { return income*0.365; @@ -8,7 +11,8 @@ public double calculateInsurance(double income) { } else if (income <= 60000) { return (income-30000)*0.1+76500; } else { - return InsuranceStrategyVeryHigh.getaDouble(income); + strategy = new InsuranceStrategyVeryHigh(); + return strategy.calculateInsuranceVeryHigh(income); } } diff --git a/src/InsuranceStrategy.java b/src/InsuranceStrategy.java new file mode 100644 index 0000000..b1989db --- /dev/null +++ b/src/InsuranceStrategy.java @@ -0,0 +1,12 @@ +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/src/InsuranceStrategyVeryHigh.java b/src/InsuranceStrategyVeryHigh.java index f759c32..9b25e04 100644 --- a/src/InsuranceStrategyVeryHigh.java +++ b/src/InsuranceStrategyVeryHigh.java @@ -1,17 +1,18 @@ -public class InsuranceStrategyVeryHigh { - static double getaDouble(double income) { - return (income - getAdjustment()) * getWeight() + getConstant(); - } +public class InsuranceStrategyVeryHigh extends InsuranceStrategy { - static int getConstant() { + @Override + public int getConstant() { return 105600; } - static double getWeight() { - return 0.02; + @Override + public double getWeight() { + return 0.2; } - static int getAdjustment() { + @Override + public int getAdjustment() { return 60000; } + } \ No newline at end of file From 30a4cf64e3c763047d4bfb48c1919b82093f7d4e Mon Sep 17 00:00:00 2001 From: hannahj001 Date: Wed, 17 Jan 2024 13:06:46 -0500 Subject: [PATCH 5/6] Implementing the abstract class --- src/InsuranceCalculator.java | 13 ++++++++----- src/InsuranceStrategy.java | 3 +-- src/InsuranceStrategyHigh.java | 17 +++++++++++++++++ src/InsuranceStrategyLow.java | 16 ++++++++++++++++ src/InsuranceStrategyMedium.java | 16 ++++++++++++++++ src/InsuranceStrategyVeryHigh.java | 8 ++------ test/InsuranceCalculatorTest.java | 2 +- 7 files changed, 61 insertions(+), 14 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 e154b53..b0bf76a 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -1,18 +1,21 @@ 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 b1989db..1ebf362 100644 --- a/src/InsuranceStrategy.java +++ b/src/InsuranceStrategy.java @@ -1,6 +1,5 @@ public abstract class InsuranceStrategy { - - public double calculateInsuranceVeryHigh(double income) { + public double calculate(double income) { return (income - getAdjustment()) * getWeight() + getConstant(); } diff --git a/src/InsuranceStrategyHigh.java b/src/InsuranceStrategyHigh.java new file mode 100644 index 0000000..dcc165d --- /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 9b25e04..14f0141 100644 --- a/src/InsuranceStrategyVeryHigh.java +++ b/src/InsuranceStrategyVeryHigh.java @@ -1,18 +1,14 @@ public class InsuranceStrategyVeryHigh extends InsuranceStrategy { - @Override public int getConstant() { - return 105600; + return 105600; } - @Override public double getWeight() { return 0.2; } - @Override public int getAdjustment() { return 60000; } - -} \ No newline at end of file +} diff --git a/test/InsuranceCalculatorTest.java b/test/InsuranceCalculatorTest.java index ac6d6a1..4f2b926 100644 --- a/test/InsuranceCalculatorTest.java +++ b/test/InsuranceCalculatorTest.java @@ -18,7 +18,7 @@ public void highIncome() { } @Test public void veryHighIncome() { - assertEquals(106400, calculate(100000), 0.01); + assertEquals(113600, calculate(100000), 0.01); } @Test public void veryLowIncome() { From 7c283c5c860b6160cca2264b2242fd3f871494cb Mon Sep 17 00:00:00 2001 From: hannahj001 Date: Wed, 17 Jan 2024 20:24:39 -0500 Subject: [PATCH 6/6] Implementing the abstract class --- src/InsuranceStrategyVeryHigh.java | 2 +- test/InsuranceCalculatorTest.java | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/InsuranceStrategyVeryHigh.java b/src/InsuranceStrategyVeryHigh.java index 14f0141..5546105 100644 --- a/src/InsuranceStrategyVeryHigh.java +++ b/src/InsuranceStrategyVeryHigh.java @@ -1,7 +1,7 @@ public class InsuranceStrategyVeryHigh extends InsuranceStrategy { @Override public int getConstant() { - return 105600; + return 105600; } @Override public double getWeight() { diff --git a/test/InsuranceCalculatorTest.java b/test/InsuranceCalculatorTest.java index 4f2b926..44eaa00 100644 --- a/test/InsuranceCalculatorTest.java +++ b/test/InsuranceCalculatorTest.java @@ -6,23 +6,19 @@ class InsuranceCalculatorTest { @Test public void lowIncome() { - assertEquals(1825, calculate(5000), 0.01); + assertEquals(1460, calculate(4000)); } @Test public void mediumIncome() { - assertEquals(38600, calculate(25000), 0.01); + assertEquals(39600, calculate(30000)); } @Test public void highIncome() { - assertEquals(78500, calculate(50000), 0.01); + assertEquals(79050, calculate(55500)); } @Test public void veryHighIncome() { - assertEquals(113600, calculate(100000), 0.01); - } - @Test - public void veryLowIncome() { - assertEquals(0.73, calculate(2), 0.01); + assertEquals(113600, calculate(100000)); } private double calculate(double income) { return new InsuranceCalculator().calculateInsurance(income);