Commit 5d157c2

mokha <mokha@cisco.com>
2019-04-28 22:13:39
complete BonusOnSavings question
1 parent 901ff41
Changed files (2)
assignments
assignment1
src
main
java
ca
mokhan
test
java
ca
mokhan
assignments/assignment1/src/main/java/ca/mokhan/assignment1/BonusOnSavings.java
@@ -0,0 +1,38 @@
+package ca.mokhan.assignment1;
+
+import java.util.Objects;
+
+public class BonusOnSavings
+{
+  double annualRate = 0.0;
+  double quarterlyRate = 0.0;
+
+  public BonusOnSavings() { this(0.03, 0.05); }
+
+  public BonusOnSavings(double quarterlyRate, double annualRate) {
+    this.quarterlyRate = quarterlyRate;
+    this.annualRate = annualRate;
+  }
+
+  public double computeBonus(double commitment, double q1, double q2, double q3, double q4)
+  {
+    double quarterlyTarget = commitment * 3;
+    double annualTarget = commitment * 12;
+
+    return this.quarterlyBonus(quarterlyTarget, q1) +
+      this.quarterlyBonus(quarterlyTarget, q2) +
+      this.quarterlyBonus(quarterlyTarget, q3) +
+      this.quarterlyBonus(quarterlyTarget, q4) +
+      this.annualBonus(annualTarget, q1 + q2 + q3 + q4);
+  }
+
+  private double quarterlyBonus(double target, double actual) {
+    return (actual >= target) ? actual * this.quarterlyRate : 0.0;
+  }
+
+  private double annualBonus(double target, double actual) {
+    if (actual < target) return 0.0;
+
+    return (actual * this.annualRate) + ((actual - target) * 0.25);
+  }
+}
assignments/assignment1/src/test/java/ca/mokhan/assignment1/BonusOnSavingsTest.java
@@ -21,11 +21,11 @@ public class BonusOnSavingsTest extends TestCase
 
   public void testComputeBonusEmployeeOne()
   {
-    assertEquals(subject.computeBonus(2000, 5000, 7000, 4000, 8000), 1650.00);
+    assertEquals(1650.00, subject.computeBonus(2000, 5000, 7000, 4000, 8000));
   }
 
   public void testComputeBonusEmployeeTwo()
   {
-    assertEquals(subject.computeBonus(3000, 6000, 9000, 10000, 17000), 4680.00);
+    assertEquals(4680.00, subject.computeBonus(3000, 6000, 9000, 10000, 17000));
   }
 }