public void CalculateDistanceAs111KmBetweenTwoMeridians(int fromLatitude, int toLatitude)
        {
            var from = new Location(fromLatitude, 0);
            var to   = new Location(toLatitude, 0);

            var result = distanceCalculator.CalculateDistanceAsKm(from, to);

            Assert.Equal(111.19, Math.Round(result, 2));
        }
예제 #2
0
        public IEnumerable <Customer> Find(Configuration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            var customerLocations = locationReader.Read(configuration.CustomerPath);
            var boundingRectangle = distanceCalculator.GetBoundingRectangle(configuration.MaxDistance, configuration.OfficeLocation);

            foreach (var customerLocationItem in customerLocations)
            {
                if (!boundingRectangle.DoesContain(customerLocationItem.Location))
                {
                    continue;
                }

                var distance = distanceCalculator.CalculateDistanceAsKm(customerLocationItem.Location, configuration.OfficeLocation);
                if (distance > configuration.MaxDistance)
                {
                    continue;
                }

                yield return(customerLocationItem.Customer);
            }
        }