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
            }));
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
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);
            }
        }