public void BoardRulesCheckForMinesThereAreNoMines()
        {
            //PositionToMoveto
            var positionToMoveTo = new Position(2, 2);

            var boardToTest = new Board(GenerateHorizontalArray.HorizontalChessArray(4), 4, null);
            var boardRules  = new BoardMineSweeperRules(boardToTest);

            Assert.IsFalse(boardRules.CheckForMines(positionToMoveTo));
        }
        public void BoardRightReachedAndYouReachedTheEnd()
        {
            var boardToTest = new Board(GenerateHorizontalArray.HorizontalChessArray(4), 4, null);
            var boardRules  = new BoardMineSweeperRules(boardToTest);
            var results     = boardRules.ProcessRules(new Position(4, 2));

            Assert.AreEqual(true, results.ValidVertical);
            Assert.AreEqual(false, results.ValidHorizontal);
            Assert.AreEqual(true, results.ValidMove);
            Assert.AreEqual(true, results.ReachedTheEnd);

            Assert.AreEqual("Reached The End", results.Text);
        }
        public void BoardRulesCheckForMinesIHaveHitOneAndItGetsRemoved()
        {
            //PositionToMoveto
            var positionToMoveTo = new Position(4, 2);
            //Create a MineLocation at the same postion
            var minePositions = new List <IPosition> {
                positionToMoveTo
            };

            var boardToTest = new Board(GenerateHorizontalArray.HorizontalChessArray(4), 4, minePositions);
            var boardRules  = new BoardMineSweeperRules(boardToTest);

            Assert.IsTrue(boardRules.CheckForMines(positionToMoveTo));
            Assert.AreEqual(0, boardToTest.NumberOfMines);
        }
        public void BoardRulesCheckForMinesIHaveNotHitOne()
        {
            //PositionToMoveto
            var positionToMoveTo = new Position(4, 2);
            var minePosition     = new Position(1, 2);

            //Create a MineLocation at the same postion
            var minePositions = new List <IPosition> {
                minePosition
            };

            var boardToTest = new Board(GenerateHorizontalArray.HorizontalChessArray(4), 4, minePositions);
            var boardRules  = new BoardMineSweeperRules(boardToTest);

            Assert.IsFalse(boardRules.CheckForMines(positionToMoveTo));
        }
        public void BoardRulesIHaveHitAMineOnTheWinningEdge()
        {
            //PositionToMoveto
            var positionToMoveTo = new Position(4, 2);
            //Create a MineLocation at the same postion
            var minePositions = new List <IPosition> {
                positionToMoveTo
            };

            var boardToTest = new Board(GenerateHorizontalArray.HorizontalChessArray(4), 4, minePositions);
            var boardRules  = new BoardMineSweeperRules(boardToTest);
            var results     = boardRules.ProcessRules(positionToMoveTo);

            Assert.AreEqual(true, results.ValidVertical);
            Assert.AreEqual(false, results.ValidHorizontal);
            Assert.AreEqual(true, results.ValidMove);
            Assert.AreEqual(true, results.ReachedTheEnd);
            Assert.AreEqual(true, results.HitAMine);

            Assert.AreEqual("Reached The End", results.Text);
        }