public CostDetails CalculateCost(double totalMinutes) { TimeSpan duration = TimeSpan.FromMinutes(totalMinutes); decimal totalCost = 0; if (totalMinutes <= 0) { totalCost = 0; } else if (totalMinutes <= MinuteConvertor.Hours(5)) { totalCost = COST_IN_5_HOURS; } else { var days = duration.Days; var startedDay = (duration.Hours | duration.Minutes) != 0 ? 1 : 0; var totalDays = days + startedDay; totalCost = totalDays * COST_PER_DAY; } return(new CostDetails { Cost = totalCost, Days = duration.Days, Hours = duration.Hours, Minutes = duration.Minutes }); }
public double CalculateCost(int minutes) { if (minutes <= MinuteConvertor.Hours(5)) { return(ParkingCostIn5Hours); } return(ParkingDays(minutes) * ParkingCostPerDay); }
public void Should_convert_hours_to_minutes() { int minutes = MinuteConvertor.Hours(1); Assert.That(minutes, Is.EqualTo(60)); }
public void Should_charge_2_days_when_valet_parking_time_is_slightly_more_than_1_day() { Assert.That(_costCalculator.CalculateCost(MinuteConvertor.DaysAndHoursAndMinutes(1, 0, 1)), Is.EqualTo(36)); }
public void Should_charge_18_dollars_when_valet_parking_time_is_1_day() { Assert.That(_costCalculator.CalculateCost(MinuteConvertor.Days(1)), Is.EqualTo(18)); }
public void Should_charge_18_dollars_when_valet_parking_time_is_slightly_more_than_5_hours() { Assert.That(_costCalculator.CalculateCost(MinuteConvertor.HoursAndMinutes(5, 1)), Is.EqualTo(18)); }
public void Should_charge_12_dollars_when_valet_parking_time_is_less_than_5_hours() { Assert.That(_costCalculator.CalculateCost(MinuteConvertor.Hours(5)), Is.EqualTo(12)); }