public void Biweekly_Premiums_Are_Calculated() { var plan = new Plan().WithPremium(PremiumType.Individual, Frequency.Biweekly); var engine = new YearlyPlanCostEngine(); var yearlyCost = engine.CalculateYearlyCost(plan, 0, PremiumType.Individual); Assert.AreEqual(plan.Premium(PremiumType.Individual).Cost * 26, yearlyCost); }
public void Medical_Cost_Equal_To_Individual_Deductible_Is_Calculated() { var plan = new Plan().WithPremium(PremiumType.Individual, Frequency.Monthly).WithDeductibles().WithCoinsurance().WithOutOfPocketMax(); var engine = new YearlyPlanCostEngine(); var yearlyCost = engine.CalculateYearlyCost(plan, plan.IndividualDeductible, PremiumType.Individual); var premium = plan.Premium(PremiumType.Individual); var premiumCost = premium.Cost * 12; Assert.AreEqual(premiumCost + plan.IndividualDeductible, yearlyCost); }
public void Medical_Cost_Equal_To_Family_Deductible_Is_Calculated() { var premiumType = PremiumType.IndividualSpouseAndChildren; var plan = new Plan().WithPremium(premiumType, Frequency.Monthly).WithDeductibles().WithCoinsurance().WithOutOfPocketMax(); var engine = new YearlyPlanCostEngine(); var yearlyCost = engine.CalculateYearlyCost(plan, plan.FamilyDeductible, premiumType, DeductibleType.Family); var premium = plan.Premium(premiumType); var premiumCost = premium.Cost * 12; Assert.AreEqual(premiumCost + plan.FamilyDeductible, yearlyCost); }
public void Cost_That_Exceeds_Individual_OopMax_Is_Calculated() { var premiumType = PremiumType.Individual; var plan = new Plan().WithPremium(premiumType, Frequency.Monthly).WithDeductibles().WithCoinsurance().WithOutOfPocketMax(); var engine = new YearlyPlanCostEngine(); var costToEqualOopMax = plan.IndividualDeductible + ((plan.IndividualOutOfPocketMax - plan.IndividualDeductible) / plan.CoinsurancePercentage); var yearlyCost = engine.CalculateYearlyCost(plan, costToEqualOopMax + 100, premiumType, DeductibleType.Individual); var premium = plan.Premium(premiumType); var premiumCost = premium.Cost * 12; Assert.AreEqual(premiumCost + plan.IndividualOutOfPocketMax, yearlyCost); }
public void Yearly_Cost_Equal_To_Family_OopMax_Is_Calculated() { var premiumType = PremiumType.IndividualSpouseAndChildren; var plan = new Plan().WithPremium(premiumType, Frequency.Monthly).WithDeductibles().WithCoinsurance().WithOutOfPocketMax(); var engine = new YearlyPlanCostEngine(); var costToEqualOopMax = plan.FamilyDeductible + ((plan.FamilyOutOfPocketMax - plan.FamilyDeductible)/ plan.CoinsurancePercentage); var yearlyCost = engine.CalculateYearlyCost(plan, costToEqualOopMax, premiumType, DeductibleType.Family); var premium = plan.Premium(premiumType); var premiumCost = premium.Cost * 12; Assert.AreEqual(premiumCost + plan.FamilyOutOfPocketMax, yearlyCost); }