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); } }