Esempio n. 1
0
        public void GivenCoveredBoard_UncoverCorrectlyLargerAreaWithMines(int posX, int posY)
        {
            IGameBoardCreator gameBoardCreator = A.Fake <IGameBoardCreator>();

            A.CallTo(() => gameBoardCreator.GenerateGameBoard(3, 3)).Returns(new Field[3, 3] {
                { Field.Covered | Field.Zero, Field.Covered | Field.Zero, Field.Covered | Field.Zero },
                { Field.Covered | Field.Zero, Field.Covered | Field.One, Field.Covered | Field.One },
                { Field.Covered | Field.Zero, Field.Covered | Field.One, Field.Covered | Field.Mine }
            });

            IGameBoard gameBoard = new GameBoard(gameBoardCreator, 3, 3);

            gameBoard.Choose(posX, posY);

            for (int i = 1; i <= 3; i++)
            {
                for (int j = 1; j <= 3; j++)
                {
                    if (i == 3 && j == 3)
                    {
                        continue;
                    }

                    Assert.False(gameBoard.Get(i, j).HasFlag(Field.Covered), $"i:{i} - j:{j}");
                }
            }
            Assert.That(gameBoard.Get(3, 3).HasFlag(Field.Covered));
        }
Esempio n. 2
0
        public void GivenBoardWithMine_ThenGetReturnsMine(Field field)
        {
            IGameBoardCreator gameBoardCreator = A.Fake <IGameBoardCreator>();

            A.CallTo(() => gameBoardCreator.GenerateGameBoard(1, 1)).Returns(new Field[1, 1] {
                { field }
            });

            IGameBoard gameBoard = new GameBoard(gameBoardCreator, 1, 1);

            Assert.That(gameBoard.Get(1, 1) == field);
        }
Esempio n. 3
0
        public void GivenCoveredBoard_UncoverCorrectlySmallArea(int posX, int posY)
        {
            IGameBoardCreator gameBoardCreator = A.Fake <IGameBoardCreator>();

            A.CallTo(() => gameBoardCreator.GenerateGameBoard(1, 2)).Returns(new Field[1, 2] {
                { Field.Covered | Field.Zero, Field.Covered | Field.Zero }
            });

            IGameBoard gameBoard = new GameBoard(gameBoardCreator, 1, 2);

            gameBoard.Choose(posX, posY);

            Assert.False(gameBoard.Get(1, 1).HasFlag(Field.Covered));
            Assert.False(gameBoard.Get(1, 2).HasFlag(Field.Covered));
        }
Esempio n. 4
0
        public void GivenCoveredBoard_ThenFieldsGetsUncovered(int posX, int posY)
        {
            IGameBoardCreator gameBoardCreator = A.Fake <IGameBoardCreator>();

            A.CallTo(() => gameBoardCreator.GenerateGameBoard(3, 3)).Returns(new Field[3, 3] {
                { Field.Covered, Field.Covered, Field.Covered },
                { Field.Covered, Field.Covered, Field.Covered },
                { Field.Covered, Field.Covered, Field.Covered }
            });

            IGameBoard gameBoard = new GameBoard(gameBoardCreator, 3, 3);

            gameBoard.Choose(posX, posY);

            Assert.False(gameBoard.Get(posX, posY).HasFlag(Field.Covered));
        }
Esempio n. 5
0
        public void GivenNonTrivialBoard_GetReturnsCorrectPosition(int posX, int posY)
        {
            IGameBoardCreator gameBoardCreator = A.Fake <IGameBoardCreator>();

            A.CallTo(() => gameBoardCreator.GenerateGameBoard(3, 3)).Returns(new Field[3, 3] {
                { Field.Covered, Field.One, Field.One },
                { Field.Covered, Field.Flagged, Field.Two },
                { Field.Covered, Field.Covered, Field.Covered }
            });

            Field[,] generatedBoard = gameBoardCreator.GenerateGameBoard(3, 3);

            IGameBoard gameBoard = new GameBoard(gameBoardCreator, 3, 3);

            Assert.That(gameBoard.Get(posX, posY) == generatedBoard[posX - 1, posY - 1]);
        }
Esempio n. 6
0
        public void GivenBoardWithMine_ThenStepOnMineEndsGame(int posX, int posY)
        {
            IGameBoardCreator gameBoardCreator = A.Fake <IGameBoardCreator>();

            A.CallTo(() => gameBoardCreator.GenerateGameBoard(3, 3)).Returns(new Field[3, 3] {
                { Field.Covered | Field.Mine, Field.Covered, Field.Covered },
                { Field.Covered, Field.Covered | Field.Mine, Field.Covered },
                { Field.Covered, Field.Covered, Field.Covered | Field.Mine }
            });

            IGameBoard gameBoard = new GameBoard(gameBoardCreator, 3, 3);

            gameBoard.Choose(posX, posY);

            Assert.False(gameBoard.IsRunning());
        }
Esempio n. 7
0
        public void GivenBoardWithoutFlags_ThenSetFlagToUncoveredFieldDoesNothing(int posX, int posY)
        {
            IGameBoardCreator gameBoardCreator = A.Fake <IGameBoardCreator>();

            A.CallTo(() => gameBoardCreator.GenerateGameBoard(3, 3)).Returns(new Field[3, 3] {
                { Field.One, Field.One, Field.Covered | Field.One },
                { Field.One, Field.Covered | Field.Mine, Field.Covered | Field.One },
                { Field.Covered | Field.One, Field.Covered | Field.One, Field.Covered | Field.One }
            });

            IGameBoard gameBoard = new GameBoard(gameBoardCreator, 3, 3);

            gameBoard.SetFlag(posX, posY);

            Assert.False(gameBoard.IsCovered(posX, posY));
            Assert.False(gameBoard.IsFlagged(posX, posY));
        }
Esempio n. 8
0
        public void GivenBoardWithFlag_ThenSteppingOnFlagStaysCovered(int posX, int posY)
        {
            IGameBoardCreator gameBoardCreator = A.Fake <IGameBoardCreator>();

            A.CallTo(() => gameBoardCreator.GenerateGameBoard(3, 3)).Returns(new Field[3, 3] {
                { Field.Covered | Field.Flagged, Field.Covered, Field.Covered },
                { Field.Covered, Field.Covered | Field.Flagged, Field.Covered },
                { Field.Covered, Field.Covered, Field.Covered | Field.Flagged }
            });

            IGameBoard gameBoard = new GameBoard(gameBoardCreator, 3, 3);

            gameBoard.Choose(posX, posY);

            Assert.True(gameBoard.IsCovered(posX, posY));
            Assert.True(gameBoard.IsFlagged(posX, posY));
        }
Esempio n. 9
0
        public void GivenBoard_GetInvalidIndicesThrowsException(int posX, int posY)
        {
            IGameBoardCreator gameBoardCreator = A.Fake <IGameBoardCreator>();

            A.CallTo(() => gameBoardCreator.GenerateGameBoard(3, 3)).Returns(new Field[3, 3] {
                { Field.Covered, Field.One, Field.One },
                { Field.Covered, Field.Flagged, Field.Two },
                { Field.Covered, Field.Covered, Field.Covered }
            });

            Field[,] generatedBoard = gameBoardCreator.GenerateGameBoard(3, 3);

            IGameBoard gameBoard = new GameBoard(gameBoardCreator, 3, 3);

            Assert.Throws <IndexOutOfRangeException>(() => gameBoard.Get(posX, posY));
            Assert.Throws <IndexOutOfRangeException>(() => gameBoard.IsCovered(posX, posY));
            Assert.Throws <IndexOutOfRangeException>(() => gameBoard.IsFlagged(posX, posY));
            Assert.Throws <IndexOutOfRangeException>(() => gameBoard.IsMine(posX, posY));
            Assert.Throws <IndexOutOfRangeException>(() => gameBoard.IsNumber(posX, posY));
        }
Esempio n. 10
0
 public void setup()
 {
     creator = new GameBoardCreator(new RandomInteger());
 }
Esempio n. 11
0
 public GameBoard(IGameBoardCreator creator, int dimX, int dimY)
 {
     _board = creator.GenerateGameBoard(dimX, dimY);
 }