public void SanitizeRemovesOutliers_2()
        {
            var input         = LoadTestWithMinimumOutlier();
            var dataSanitizer = new FlightDataSanitizer();
            var result        = dataSanitizer.SanitizeAndSortCollection(input);

            Assert.AreEqual(result.Count(), 5);
        }
        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);
        }
        public void CalculatorReturnsResult_WithOneWayFlights_2()
        {
            var input = LoadTestDataSet_WithOneWayFlights_1();

            var dataSanitizer  = new FlightDataSanitizer();
            var dataCalculator = new FlightDataCalculator(dataSanitizer);

            var result = dataCalculator.CalculatePriceRange(input);

            Assert.AreEqual(10.26m, result.MinimumPrice);
            Assert.AreEqual(82.92m, result.MaximumPrice);
        }
        public void IntegrationTestForLONtoBERFlights()
        {
            var _flightPricesRepository = new FlightCsvRepository("prices", TestSetup.GiveMeALocalDummyPathMapper("prices"));
            var _currencyRateRepository = new CurrencyRateCsvRepository("currencies", "EUR", TestSetup.GiveMeALocalDummyPathMapper("currencies"));
            var _dataSanitizer          = new FlightDataSanitizer();
            var _priceRangeCalculator   = new FlightDataCalculator(_dataSanitizer);

            var flightsAndPrices = _flightPricesRepository.GetFlightsFromOriginToDestination("LON", "BER");
            var priceRange       = _priceRangeCalculator.CalculatePriceRange(flightsAndPrices);

            Assert.IsFalse(priceRange.MaximumPrice > 200);
            Assert.IsFalse(priceRange.MinimumPrice < 20);
        }
        public void SanitizeReturnsFlightsSorted()
        {
            var input = new Flight[]
            {
                new Flight {
                    Price = 1
                },
                new Flight {
                    Price = 1
                },
                new Flight {
                    Price = 0
                },
                //outlier for a small dataset
                new Flight {
                    Price = 1.54m
                },
                new Flight {
                    Price = 1.34m
                },
                new Flight {
                    Price = 1.34m
                },
                new Flight {
                    Price = 1.24m
                },
                new Flight {
                    Price = 0.97m
                },
                new Flight {
                    Price = 1.01m
                }
            };

            var dataSanitizer = new FlightDataSanitizer();
            var result        = dataSanitizer.SanitizeAndSortCollection(input);

            Assert.AreEqual(0.97m, result.First().Price);
            Assert.AreEqual(1.34m, result.Last().Price);
        }
        public void SanitizeReturnsFlightsWithoutTheOrNegativePrices()
        {
            var input = new Flight[]
            {
                new Flight {
                    Price = 1
                },
                new Flight {
                    Price = 1
                },
                new Flight {
                    Price = 0
                },
                new Flight {
                    Price = -1
                }
            };

            var dataSanitizer = new FlightDataSanitizer();
            var result        = dataSanitizer.SanitizeAndSortCollection(input);

            Assert.AreEqual(result.ToList().Count, 2);
        }