diff --git a/.idea/misc.xml b/.idea/misc.xml index 0792e77..537356d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file 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/src/InsuranceCalculator.java index 558e0a0..1dd1d3b 100644 --- a/src/InsuranceCalculator.java +++ b/src/InsuranceCalculator.java @@ -1,5 +1,7 @@ public class InsuranceCalculator { + private InsuranceStrategy 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 (income-60000)*0.02+105600; + strategy = new InsuranceStrategyVeryHigh(); + return InsuranceStrategy.calculateInsuranceVeryHigh(income); } } diff --git a/src/InsuranceStrategy.java b/src/InsuranceStrategy.java new file mode 100644 index 0000000..621cc38 --- /dev/null +++ b/src/InsuranceStrategy.java @@ -0,0 +1,17 @@ +public abstract class InsuranceStrategy { + public static double calculateInsuranceVeryHigh(double income) { + return (income - InsuranceStrategy.getAdjustment()) * InsuranceStrategy.getWeight() + InsuranceStrategy.getConstant(); + } + + public static int getConstant() { + return 105600; + } + + public static double getWeight() { + return 0.02; + } + + public static int getAdjustment() { + return 60000; + } +} diff --git a/src/InsuranceStrategyHigh.java b/src/InsuranceStrategyHigh.java new file mode 100644 index 0000000..404f980 --- /dev/null +++ b/src/InsuranceStrategyHigh.java @@ -0,0 +1,2 @@ +public class InsuranceStrategyHigh extends InsuranceStrategy { +} diff --git a/src/InsuranceStrategyLow.java b/src/InsuranceStrategyLow.java new file mode 100644 index 0000000..973bb9a --- /dev/null +++ b/src/InsuranceStrategyLow.java @@ -0,0 +1,2 @@ +public class InsuranceStrategyLow extends InsuranceStrategy { +} diff --git a/src/InsuranceStrategyMedium.java b/src/InsuranceStrategyMedium.java new file mode 100644 index 0000000..e4c2f05 --- /dev/null +++ b/src/InsuranceStrategyMedium.java @@ -0,0 +1,2 @@ +public class InsuranceStrategyMedium extends InsuranceStrategy { +} diff --git a/src/InsuranceStrategyVeryHigh.java b/src/InsuranceStrategyVeryHigh.java new file mode 100644 index 0000000..591707e --- /dev/null +++ b/src/InsuranceStrategyVeryHigh.java @@ -0,0 +1,7 @@ +public class InsuranceStrategyVeryHigh extends InsuranceStrategy { + + public InsuranceStrategyVeryHigh() { + + } + +} \ No newline at end of file diff --git a/test/EMPTY b/test/EMPTY deleted file mode 100644 index e69de29..0000000 diff --git a/test/InsuranceCalculatorTest.java b/test/InsuranceCalculatorTest.java new file mode 100644 index 0000000..9a0b197 --- /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); + } +}