public ActionResult CalculateFare(TaxiRide fare) { try { IFareCalculator calculator = new FareCalculator(); return(Json(calculator.CalculateFare(fare))); } #region Exception Handling catch (ArgumentException ex) { HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json(ex.Message.ToString())); } catch (NullReferenceException ex) { HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json(ex.Message.ToString())); } catch (OverflowException ex) { HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json(ex.Message.ToString())); } catch (Exception) { HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json("Unknown error processing your fare")); } #endregion }
public void CalculateFare_NullRide_ShouldThrowNullArgumentException() { // Arrange TaxiRide ride = null; FareCalculator calculator = new FareCalculator(); // Act calculator.CalculateFare(ride); // Assert // Assert handled by attribute }
public void CalculateFare_BaseCase() { // Arrange TaxiRide ride = new TaxiRide { RideDate = new System.DateTime(2010, 10, 08), MinutesAboveSixMph = 5, MilesBelowSixMph = 2, StartTime = new System.DateTime(2010, 10, 08, 17, 30, 0), }; FareCalculator calculator = new FareCalculator(); double expected = 9.75; // Act double actual = calculator.CalculateFare(ride); // Assert Assert.AreEqual(actual, expected); }
public void test() { //arrange var machineId = Guid.Parse("c17479ba-7c57-4e73-a65c-461e230cde9d"); var tapOnTime = new DateTime(2020, 01, 04); var tapOn = new Tap(machineId, tapOnTime); var machineId2 = Guid.Parse("be2f9946-3bc3-47fc-ae3c-ab3bf261bbdf"); var tapOffTime = new DateTime(2020, 2, 20, 2, 2, 2); var tapOff = new Tap(machineId2, tapOffTime); var fareCalculator = new FareCalculator(); //act var calculatedFare = fareCalculator.CalculateFare(tapOn, tapOff); //assert Assert.Equal(3, calculatedFare); }
public void CalculateFare_VeryLargeInput_ShouldThrowOverflowException() { // Arrange TaxiRide ride = new TaxiRide { RideDate = new System.DateTime(2010, 10, 08), MinutesAboveSixMph = int.MaxValue, MilesBelowSixMph = double.MaxValue, StartTime = new System.DateTime(2010, 10, 08, 20, 0, 0), }; FareCalculator calculator = new FareCalculator(); // Act calculator.CalculateFare(ride); // Assert // Assert handled by attribute }
public void CalculateFare_NegativeMinutesAboveSixMph_ShouldThrowArgumentException() { // Arrange TaxiRide ride = new TaxiRide { RideDate = new System.DateTime(2010, 10, 08), MinutesAboveSixMph = -1, MilesBelowSixMph = 0, StartTime = new System.DateTime(2010, 10, 08, 20, 0, 0), }; FareCalculator calculator = new FareCalculator(); // Act calculator.CalculateFare(ride); // Assert // Assert handled by attribute }
public void CalculateFare_ShouldBePeakWeekday() { // Arrange TaxiRide ride = new TaxiRide { RideDate = new System.DateTime(2010, 10, 08), MinutesAboveSixMph = 5, MilesBelowSixMph = 2, StartTime = new System.DateTime(2010, 10, 08, 16, 0, 0), }; double expected = 9.75; FareCalculator calculator = new FareCalculator(); // Act double actual = calculator.CalculateFare(ride); // Assert Assert.AreEqual(expected, actual); }
public void CalculateFare_NoAddons_PeakTimeAndSunday() { // Arrange TaxiRide ride = new TaxiRide { RideDate = new System.DateTime(2018, 12, 02), MinutesAboveSixMph = 5, MilesBelowSixMph = 2, StartTime = new System.DateTime(2010, 12, 02, 17, 30, 0), }; FareCalculator calculator = new FareCalculator(); double expected = 8.75; // Act double actual = calculator.CalculateFare(ride); // Assert Assert.AreEqual(actual, expected); }
public void CalculateFare_NoAddons_PartialMilesBelowSixMph() { // Arrange TaxiRide ride = new TaxiRide { RideDate = new System.DateTime(2010, 10, 08), MinutesAboveSixMph = 5, MilesBelowSixMph = .4, StartTime = new System.DateTime(2010, 10, 08, 6, 00, 01), }; double expected = 5.95; FareCalculator calculator = new FareCalculator(); // Act double actual = calculator.CalculateFare(ride); // Assert Assert.AreEqual(expected, actual); }
public void CalculateFare_NoAddons_MinFringePeak() { // Arrange TaxiRide ride = new TaxiRide { RideDate = new System.DateTime(2010, 10, 08), MinutesAboveSixMph = 5, MilesBelowSixMph = 2, StartTime = new System.DateTime(2010, 10, 08, 15, 59, 59), }; double expected = 8.75; FareCalculator calculator = new FareCalculator(); // Act double actual = calculator.CalculateFare(ride); // Assert Assert.AreEqual(expected, actual); }
public void CalculateFare_OvernightAddon_MaxFringePeak() { // Arrange TaxiRide ride = new TaxiRide { RideDate = new System.DateTime(2010, 10, 08), MinutesAboveSixMph = 5, MilesBelowSixMph = 2, StartTime = new System.DateTime(2010, 10, 08, 20, 00, 01), }; double expected = 9.25; FareCalculator calculator = new FareCalculator(); // Act double actual = calculator.CalculateFare(ride); // Assert Assert.AreEqual(expected, actual); }
public void TestWithMoq() { //arrange var mock = new Mock <ILiveRate>(); //more dependencies. //if tests are too difficult to write, consider rewriting the application mock.Setup(x => x.GetRate()).Returns(5.3m); mock.Setup(x => x.Name).Returns("google"); var fareCalculator = new FareCalculator(new List <ILiveRate> { mock.Object }); fareCalculator.Commission = 2m; //act var fare = fareCalculator.CalculateFare("google"); //assert Assert.Equal(10.6m, fare); }
public void TestWithCustomMock() { //arrange var mockGoogleLiveRate = new MockGoogleLiveRate(); mockGoogleLiveRate.Name = "google"; var fareCalculator = new FareCalculator(new List <ILiveRate> { mockGoogleLiveRate }); fareCalculator.Commission = 2m; //act var fare = fareCalculator.CalculateFare(mockGoogleLiveRate.Name); //assert Assert.Equal(10.6m, fare); }
public void CalculateFare_ShouldBeMinOvernightAndMaxPeak() { // Arrange TaxiRide ride = new TaxiRide { // Friday RideDate = new System.DateTime(2010, 10, 08), MinutesAboveSixMph = 5, MilesBelowSixMph = 2, // 8 PM StartTime = new System.DateTime(2010, 10, 08, 20, 0, 0), }; double expected = 10.25; FareCalculator calculator = new FareCalculator(); // Act double actual = calculator.CalculateFare(ride); // Assert Assert.AreEqual(expected, actual); }