Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }