public async Task Should_Throw_Exception_Given_TimeEntry_Greater_Than_TimeExit() { var service = new ParkingFeeCalculator(new InMemoryRepository(new InMemoryStore())); var timeEntry = DateTime.Now; var timeExit = timeEntry.AddHours(-2); Func <Task> act = async() => await service.GetFeeAmount(timeEntry, timeExit); await act.Should() .ThrowAsync <ProcessException>() .WithMessage("Exit time is greater than entry time."); }
public async Task Should_Return_ExpectedFeeAmount_Given_TimeEntry_And_TimeExit(TestData testData) { var service = new ParkingFeeCalculator(new InMemoryRepository(new InMemoryStore())); var timeEntry = DateTime.Now.DayOfTheWeek(testData.DayOfWeek) .AddHours((double)testData.Duration.Min); var timeExit = DateTime.Now.DayOfTheWeek(testData.DayOfWeek) .AddHours((double)testData.Duration.Max); var feeAmount = await service.GetFeeAmount(timeEntry, timeExit); feeAmount.Should().Be(testData.ExpectedPrice); }
public async Task Should_Throw_Exception_Given_No_DefaultFlatRate() { var store = new InMemoryStore(); store.DefaultFlatRates.Clear(); var repository = new InMemoryRepository(store); var service = new ParkingFeeCalculator(repository); var timeEntry = DateTime.Parse("2020-07-07").AddHours(10); var timeExit = timeEntry.AddHours(4); Func <Task> act = async() => await service.GetFeeAmount(timeEntry, timeExit); await act.Should().ThrowAsync <ProcessException>().WithMessage("Internal data error."); }
static void Main(string[] args) { DateTime start; DateTime end; Console.WriteLine("Enter a Start date (Format: YYYY/MM/DD HH:MM): "); if (DateTime.TryParse(Console.ReadLine(), out start)) { Console.WriteLine("The day of the week is: " + start.DayOfWeek); } else { Console.WriteLine("You have entered an incorrect start value."); Console.ReadLine(); return; } Console.WriteLine("Enter a End date (Format: YYYY/MM/DD HH:MM): "); if (DateTime.TryParse(Console.ReadLine(), out end)) { Console.WriteLine("The day of the week is: " + end.DayOfWeek); } else { Console.WriteLine("You have entered an incorrect Enddate value."); Console.ReadLine(); return; } if (start < end) { Console.WriteLine("Start Date " + start.ToLongDateString() + " Time " + start.ToShortTimeString()); Console.WriteLine("End Date " + end.ToLongDateString() + " Time " + end.ToShortTimeString()); try { var Api = new ParkingFeeCalculator(); var charges = Api.CalculateParkingFee(start, end); //Display all the applied rates when a car is parked for more than 1 day. Console.WriteLine("============ Parking Rates Applied ==================="); foreach (var rate in charges.ApplicableRates) { Console.WriteLine($" Rate Name : {rate.Name} || Charge : {rate.Charge} || {(rate.ActualDate.HasValue ? "On " + rate.ActualDate.Value.DayOfWeek.ToString() : string.Empty)}"); } Console.WriteLine("======================================================="); Console.WriteLine("======================================================="); Console.WriteLine($"Total Charges : {charges.TotalCharge.ToString()}"); Console.WriteLine("======================================================="); } catch (Exception ex) { Console.WriteLine($"Fatal error occurred : { ex.Message}"); Console.ReadKey(); return; } } else { Console.WriteLine($"Start Date : {start} can not be greater than End Date : {end} "); } Console.ReadLine(); }