public void CalcEngineTests_SimpleDiscountPercentage_AssertCalculationIsCorrect() { CalcEngine calcEngine = new CalcEngine(); const decimal baseAmount = 250.00m; const decimal discountPercent = .20m; ICalcRule discountRule = CreateCalcRule(CalcRuleType.Discount, CalcAmountType.Percentage, discountPercent, 1); decimal newAmount = calcEngine.GenerateCostEstimate(baseAmount, new List <ICalcRule>() { discountRule }); Assert.AreEqual(baseAmount - (baseAmount * discountPercent), newAmount); }
public void CalcEngineTests_SimplePercentagetFee_AssertCalculationIsCorrect() { CalcEngine calcEngine = new CalcEngine(); const decimal baseAmount = 250.00m; const decimal feeAmount = .50m; ICalcRule feeRule = CreateCalcRule(CalcRuleType.Fee, CalcAmountType.Percentage, feeAmount, 1); var calcCheckAmount = baseAmount + (baseAmount * feeAmount); decimal newAmount = calcEngine.GenerateCostEstimate(baseAmount, new List <ICalcRule>() { feeRule }); Assert.AreEqual(calcCheckAmount, newAmount); }
public void CalcEngineTests_FeeAfterDiscount_AssertCalculationIsCorrect() { CalcEngine calcEngine = new CalcEngine(); const decimal baseAmount = 250.00m; const decimal discountPercentage = 50m; const decimal feeAmount = 100m; ICalcRule discountRule = CreateCalcRule(CalcRuleType.Discount, CalcAmountType.Percentage, discountPercentage, 1); ICalcRule feeRule = CreateCalcRule(CalcRuleType.Fee, CalcAmountType.Flat, feeAmount, 2); var afterFirstRule = baseAmount - (baseAmount * discountPercentage); var calcCheckAmount = afterFirstRule + feeAmount; decimal newAmount = calcEngine.GenerateCostEstimate(baseAmount, new List <ICalcRule>() { discountRule, feeRule }); Assert.AreEqual(calcCheckAmount, newAmount); }
public void CalcEngineTests_MultipleFees_AssertCalculationIsCorrect() { CalcEngine calcEngine = new CalcEngine(); const decimal baseAmount = 250.00m; const decimal feeAmountOne = 50m; const decimal feePercentageTwo = .50m; ICalcRule feeRule = CreateCalcRule(CalcRuleType.Fee, CalcAmountType.Flat, feeAmountOne, 1); ICalcRule feeRuleTwo = CreateCalcRule(CalcRuleType.Fee, CalcAmountType.Percentage, feePercentageTwo, 2); var afterFirstRule = baseAmount + feeAmountOne; var calcCheckAmount = afterFirstRule + (afterFirstRule * feePercentageTwo); decimal newAmount = calcEngine.GenerateCostEstimate(baseAmount, new List <ICalcRule>() { feeRule, feeRuleTwo }); Assert.AreEqual(calcCheckAmount, newAmount); }
public void CalcEngineTests_MultipleDiscountPercentageAndFlat_AssertCalculationIsCorrect() { CalcEngine calcEngine = new CalcEngine(); const decimal baseAmount = 250.00m; const decimal discountPercentOne = .20m; const decimal discountFlatAmount = 75m; ICalcRule discountRuleOne = CreateCalcRule(CalcRuleType.Discount, CalcAmountType.Percentage, discountPercentOne, 1); ICalcRule discountRuleTwo = CreateCalcRule(CalcRuleType.Discount, CalcAmountType.Flat, discountFlatAmount, 2); decimal calcCheckAmount = baseAmount - (baseAmount * discountPercentOne); calcCheckAmount -= discountFlatAmount; decimal newAmount = calcEngine.GenerateCostEstimate(baseAmount, new List <ICalcRule>() { discountRuleOne, discountRuleTwo }); Assert.AreEqual(calcCheckAmount, newAmount); }