Exemple #1
0
        public void Rank_ByDistance_ReturnsExpectedCertainty()
        {
            var newYork = Coordinates.NewYork();


            var entries = new GeoDataEntry[]
            {
                new GeoDataEntry()
                {
                    Name = "Portland", Latitude = 45.512794, Longitude = -122.679565
                },                                                                                      //2448.63  miles away

                new GeoDataEntry()
                {
                    Name = "Chicago", Latitude = 41.881832, Longitude = -87.623177
                },                                                                                        //715.91

                new GeoDataEntry()
                {
                    Name = "Paris", Latitude = 48.864716, Longitude = 2.349014
                },                                                                                    //3632.78

                new GeoDataEntry()
                {
                    Name = "Buenos Aires", Latitude = -34.603722, Longitude = -58.381592
                }
            };


            var minDistance = entries.Select(r => newYork.DistanceFrom(r.Latitude, r.Longitude)).Min();

            foreach (RankingResult result in Target.Rank(entries, null, newYork))
            {
                var entry    = entries.Where(r => r.Equals(result.Entry)).Single();
                var expected = Rounder.Round(minDistance / newYork.DistanceFrom(entry));

                Assert.AreEqual(expected, result.Certainty);
            }
        }