public void No_Streets_Returns_Nothing()
        {
            var strategy   = new DistanceStrategy();
            var repository = new StreetRepository();
            var manager    = new StreetManager(repository, strategy);

            var result = manager.GetClosest(0, 0);

            Assert.AreEqual(0, result.Count);
        }
        public void Single_Street_Is_Found()
        {
            var strategy   = new DistanceStrategy();
            var repository = new StreetRepository();
            var manager    = new StreetManager(repository, strategy);

            repository.Add(new StreetDto {
                Name = "A", Start = new double[] { 1, 1 }, End = new double[] { 2, 2, }
            });

            var result = manager.GetClosest(0, 0);

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual("A", result[0]);
        }
        public void Multiple_Streets_Are_Found()
        {
            var strategy   = new DistanceStrategy();
            var repository = new StreetRepository();
            var manager    = new StreetManager(repository, strategy);

            //  A horizontal line along the X axis from the origin to 2.
            repository.Add(new StreetDto {
                Name = "A", Start = new double[] { 0, 0 }, End = new double[] { 2, 0, }
            });
            //  A horizontal line 2 up from the X axis.
            repository.Add(new StreetDto {
                Name = "B", Start = new double[] { 0, 2 }, End = new double[] { 2, 2, }
            });

            //  A point on the Y axis 2 up from the origin.
            var result = manager.GetClosest(1, 1);

            //  The top horizontal line should be returned because it is 1 unit from line B.
            Assert.AreEqual(2, result.Count);
        }