public void Equals_DifferentNames_AreNotEqual() { var a = new GeoDataEntry() { Name = "A", Latitude = 1.0, Longitude = 2.0 }; var b = new GeoDataEntry() { Name = "B", Latitude = 1.0, Longitude = 2.0 }; Assert.AreNotEqual(a, b); }
public void Equals_AreEqual_ReturnEqual() { var a = new GeoDataEntry() { Name = "A", Latitude = 1.0, Longitude = 2.0 }; var b = new GeoDataEntry() { Name = "A", Latitude = 1.0, Longitude = 2.0 }; Assert.AreEqual(a, b); }
public void GetHashCode_LatitudeAndLongitudeFlipped_AreNotEqual() { var a = new GeoDataEntry() { Name = "A", Latitude = 1.01, Longitude = 2.0 }; var b = new GeoDataEntry() { Name = "A", Latitude = a.Longitude, Longitude = a.Latitude }; Assert.AreNotEqual(a.GetHashCode(), b.GetHashCode()); }
public IEnumerable <Link> BuildLinks(GeoDataEntry entry) { if (entry == null) { throw new ArgumentNullException(nameof(entry)); } return(new string[] { "Airports", "Hospitals", "Suggestions" }.Select(r => new Link() { //if building link for controller that is calling this, include q Href = string.Format("{0}?longitude={1}&latitude={2}", Controller.Url.Link("DefaultApi", new { Controller = r }), entry.Longitude, entry.Latitude), Method = "GET", Rel = r })); }
public void Rank_ByDistance_HasExactMatches_ReturnsExpectedCertainty() { var newYork = Coordinates.NewYork(); var entries = new GeoDataEntry[] { new GeoDataEntry() { Name = "NYC", Latitude = newYork.Latitude, Longitude = newYork.Longitude }, new GeoDataEntry() { Name = "A hotdog stand in NYC", Latitude = newYork.Latitude, Longitude = newYork.Longitude }, new GeoDataEntry() { Name = "Portland", Latitude = 45.512794, Longitude = -122.679565 }, new GeoDataEntry() { Name = "Chicago", Latitude = 41.881832, Longitude = -87.623177 }, new GeoDataEntry() { Name = "Paris", Latitude = 48.864716, Longitude = 2.349014 }, new GeoDataEntry() { Name = "Buenos Aires", Latitude = -34.603722, Longitude = -58.381592 } }; foreach (RankingResult result in Target.Rank(entries, null, newYork)) { var expectedCertainty = result.Entry.Latitude == newYork.Latitude && result.Entry.Longitude == newYork.Longitude ? 0.5 : 0; Assert.AreEqual(expectedCertainty, result.Certainty); } }
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); } }