public void PlacePawn_Correctly_Updates_Position()
        {
            Assert.IsTrue(chessBoard.Cells[6, 2].IsEmpty);

            Position        position = new Position(6, 2);
            IChessPiecePawn pawn     = chessBoard.PlacePawn(position, PieceColor.Black);

            Assert.IsFalse(chessBoard.Cells[6, 2].IsEmpty);
            Assert.AreEqual(position, pawn.CurrentPosition);
        }
        public void SetUp()
        {
            chessBoard = new ChessBoard(new EastSide(), new ChessPieceCreationFactory());

            blackPawn1 = chessBoard.PlacePawn(new Position(6, 3), PieceColor.Black);
            blackPawn2 = chessBoard.PlacePawn(new Position(6, 4), PieceColor.Black);

            whitePawn1 = chessBoard.PlacePawn(new Position(1, 3), PieceColor.White);
            whitePawn2 = chessBoard.PlacePawn(new Position(1, 4), PieceColor.White);
        }
        public void PlacePawn_Limits_The_Number_Of_Pawns()
        {
            for (int i = 0; i < 10; i++)
            {
                int      row      = i / ChessBoard.MaxBoardWidth;
                Position position = new Position(6 + row, i % ChessBoard.MaxBoardWidth);

                if (row < 1)
                {
                    IChessPiecePawn pawn = chessBoard.PlacePawn(position, PieceColor.Black);
                    Assert.AreEqual(position, pawn.CurrentPosition);
                }
                else
                {
                    Assert.Throws <InvalidOperationException>(() => chessBoard.PlacePawn(position, PieceColor.Black));
                }
            }
        }