public ActionResult CalculateFare(Models.TaxiCabRateRequestModel taxiCabRateModel) { if (!taxiCabRateModel.RideBeginDateTime.HasValue) { return(Json(new Models.TaxiCabRateResponseModel { Success = false }, JsonRequestBehavior.AllowGet)); } TaxiFareRequest taxiFareRequest = new TaxiFareRequest { MilesTraveledBelow6mph = taxiCabRateModel.MilesTraveledBelow6mph, MinutesTraveledAbove6mph = taxiCabRateModel.MinutesTraveledAbove6pmh, RideBeginDateTime = taxiCabRateModel.RideBeginDateTime }; TaxiFareResult fareResult = (TaxiFareResult)_fareCalculator.CalculateFare(taxiFareRequest); Models.TaxiCabRateResponseModel rsp = new Models.TaxiCabRateResponseModel { EntryFare = fareResult.EntryFare, FareMilesTraveledBelow6mph = fareResult.FareMilesTraveledBelow6mph, FareMinutesTraveledAbove6mph = fareResult.FareMinutesTraveledAbove6mph, NightSurcharge = fareResult.NightSurcharge, NyStateTaxSurcharge = fareResult.NyStateTaxSurcharge, PeakWeakdaySurcharge = fareResult.PeakWeekdaySurcharge, TotalFare = fareResult.TotalFare, Success = fareResult.Success }; return(Json(rsp, JsonRequestBehavior.AllowGet)); }
public void Test_PassMissingValue() { IFareRequest i; TaxiFareCalculator taxiCalculator = new TaxiFareCalculator(); TaxiFareRequest taxiFareRequest = new TaxiFareRequest { MilesTraveledBelow6mph = 2, MinutesTraveledAbove6mph = 5, RideBeginDateTime = null }; TaxiFareResult result = (TaxiFareResult)taxiCalculator.CalculateFare(taxiFareRequest); Assert.IsNotNull(result); Assert.IsFalse(result.Success); }
public void Test_TotalFareIncludesPeakWeekdaySurcharge() { TaxiFareRequest taxiFareRequest = new TaxiFareRequest { MilesTraveledBelow6mph = 2, MinutesTraveledAbove6mph = 5, RideBeginDateTime = new DateTime(2010, 10, 8, 17, 30, 0) }; TaxiFareCalculator taxiCalculator = new TaxiFareCalculator(); TaxiFareResult taxiResult = (TaxiFareResult)taxiCalculator.CalculateFare(taxiFareRequest); Assert.IsTrue(taxiResult.Success); Assert.AreEqual(9.75m, taxiResult.TotalFare); Assert.AreEqual(3.50m, taxiResult.FareMilesTraveledBelow6mph); Assert.AreEqual(1.75m, taxiResult.FareMinutesTraveledAbove6mph); Assert.AreEqual(1m, taxiResult.PeakWeekdaySurcharge); }
public void Test_WeekdayNightSurchargeAndNoPeak() { TaxiFareRequest taxiFareRequest = new TaxiFareRequest { MilesTraveledBelow6mph = 2, MinutesTraveledAbove6mph = 5, RideBeginDateTime = new DateTime(2010, 10, 8, 20, 30, 0) }; Assert.AreEqual(DayOfWeek.Friday, taxiFareRequest.RideBeginDateTime.Value.DayOfWeek); TaxiFareCalculator taxiCalculator = new TaxiFareCalculator(); TaxiFareResult taxiResult = (TaxiFareResult)taxiCalculator.CalculateFare(taxiFareRequest); Assert.IsTrue(taxiResult.Success); Assert.AreEqual(9.25m, taxiResult.TotalFare); Assert.AreEqual(3.50m, taxiResult.FareMilesTraveledBelow6mph); Assert.AreEqual(1.75m, taxiResult.FareMinutesTraveledAbove6mph); Assert.AreEqual(.5m, taxiResult.NightSurcharge); Assert.AreEqual(0m, taxiResult.PeakWeekdaySurcharge); }
public void Test_WeekendNightSurchargeBeforeNight745PM() { TaxiFareRequest taxiFareRequest = new TaxiFareRequest { MilesTraveledBelow6mph = 2, MinutesTraveledAbove6mph = 5, RideBeginDateTime = new DateTime(2010, 10, 9, 19, 45, 0) }; Assert.AreEqual(DayOfWeek.Saturday, taxiFareRequest.RideBeginDateTime.Value.DayOfWeek); TaxiFareCalculator taxiCalculator = new TaxiFareCalculator(); TaxiFareResult taxiResult = (TaxiFareResult)taxiCalculator.CalculateFare(taxiFareRequest); Assert.IsTrue(taxiResult.Success); Assert.AreEqual(8.75m, taxiResult.TotalFare); Assert.AreEqual(3.50m, taxiResult.FareMilesTraveledBelow6mph); Assert.AreEqual(1.75m, taxiResult.FareMinutesTraveledAbove6mph); Assert.AreEqual(0, taxiResult.NightSurcharge); Assert.AreEqual(0m, taxiResult.PeakWeekdaySurcharge); }