Commit 5d157c2
Changed files (2)
assignments
assignment1
src
main
java
ca
mokhan
assignment1
test
java
ca
mokhan
assignment1
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));
}
}