public void MoveNorth_Should_Move_Current_Coordinate_Appropriately(int currentX, int currentY, bool checkLegality, int expectedX, int expectedY)
        {
            var context = new MazeCrawlerContext
            {
                Start         = new Coordinates(currentX, currentY),
                NavigationMap = _moveMap,
                Coordinator   = Substitute.For <IMazeCrawlerCoordinator>()
            };
            var crawler = new MazeCrawler(context);

            crawler.MoveNorth(checkLegality);

            crawler.CurrentX.Should().Be(expectedX);
            crawler.CurrentY.Should().Be(expectedY);
        }
        public void MoveNorth_Should_Default_Unsupplied_Parameter_To_True(int y, int expectedY)
        {
            var context = new MazeCrawlerContext
            {
                Start         = new Coordinates(0, y),
                NavigationMap = new Map(new char[][]
                {
                    new [] { Map.EMPTY },
                    new [] { Map.EMPTY }
                }),
                Coordinator = Substitute.For <IMazeCrawlerCoordinator>()
            };
            var crawler = new MazeCrawler(context);

            crawler.MoveNorth();

            crawler.CurrentY.Should().Be(expectedY);
        }
        public void MoveSouth_Should_Not_BackTrack()
        {
            var context = new MazeCrawlerContext
            {
                Start         = new Coordinates(0, 0),
                NavigationMap = new Map(new char[][]
                {
                    new [] { Map.EMPTY },
                    new [] { Map.EMPTY }
                }),
                Coordinator = Substitute.For <IMazeCrawlerCoordinator>()
            };
            var crawler = new MazeCrawler(context);

            crawler.MoveSouth();
            crawler.MoveNorth();

            crawler.CanMove(Direction.North).Should().BeFalse();
            crawler.CurrentY.Should().Be(1);
        }