public IPriceRange CalculatePriceRange(IEnumerable <Flight> collection) { var listOfOneWayFlights = collection.Where(x => !x.Inbound.HasValue); var listOfTwoWayFlights = collection.Where(x => x.Inbound.HasValue); List <decimal> listOfMinimumAndMaximumPrices = new List <decimal>(); if (listOfOneWayFlights.Any()) { listOfOneWayFlights = _dataSanitizer.SanitizeAndSortCollection(listOfOneWayFlights); decimal price1 = listOfOneWayFlights.First().Price; decimal price2 = listOfOneWayFlights.Last().Price; listOfMinimumAndMaximumPrices.Add(price1); listOfMinimumAndMaximumPrices.Add(price2); } if (listOfTwoWayFlights.Any()) { listOfTwoWayFlights = _dataSanitizer.SanitizeAndSortCollection(listOfTwoWayFlights); decimal price3 = listOfTwoWayFlights.First().Price; decimal price4 = listOfTwoWayFlights.Last().Price; listOfMinimumAndMaximumPrices.Add(price3); listOfMinimumAndMaximumPrices.Add(price4); } var minPrice = Math.Round(listOfMinimumAndMaximumPrices.Min(), _decimalDelimeter); var maxPrice = Math.Round(listOfMinimumAndMaximumPrices.Max(), _decimalDelimeter); var result = new FlightPriceRangeContract { MinimumPrice = minPrice, MaximumPrice = maxPrice }; return(result); }
public void CalculatorReturnsConvertedResult() { var input = new FlightPriceRangeContract { MinimumPrice = 1m, MaximumPrice = 2.1m }; var dataSanitizer = new FlightDataSanitizer(); var dataCalculator = new FlightDataCalculator(dataSanitizer); var result = dataCalculator.ConvertPriceRange(input, 1.2345m); Assert.AreEqual(1.23m, result.MinimumPrice); Assert.AreEqual(2.59m, result.MaximumPrice); }