Exemple #1
0
        public void IsCheckMate_NotCheck_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();

            var pawnStartPosition = new Position(1, 0);
            var pawnEndPosition   = new Position(2, 0);

            var pawn = board.RemoveFigure(pawnStartPosition);

            pawn.Move(pawnEndPosition);
            board.SetFigure(pawn, pawnEndPosition);

            var validator  = new OrdinaryBoardMoveValidator(board);
            var verifier   = new OrdinaryBoardCheckVerifier(board, validator);
            var lastMoveVm = new LastMoveViewModel(pawn, pawnStartPosition, pawnEndPosition, null);
            var moveResult =
                new ValidMoveResult(board, verifier, validator, lastMoveVm, null);

            var team1 = TeamColor.Black;
            var team2 = TeamColor.White;
            // act

            var result1 = moveResult.IsCheck(team1);
            var result2 = moveResult.IsCheck(team2);
            var result3 = moveResult.IsCheckMate(team1);
            var result4 = moveResult.IsCheckMate(team2);

            // assert
            Assert.False(result1);
            Assert.False(result2);
            Assert.False(result3);
            Assert.False(result4);
        }
Exemple #2
0
        public void GetScoreForTeam_AfterMovementWhite_BottomLeftPawnTwoFieldUp_WhiteTeam_ShouldBe_Minus1()
        {
            // arrange
            var       board             = new OrdinaryChessBoard();
            TeamColor team              = TeamColor.White;
            int       expectedScore     = -1;
            var       startPawnPosition = new Models.Position.Position(1, 0);
            var       endPawnPosition   = new Models.Position.Position(3, 0);

            // act
            var pawn = board.RemoveFigure(startPawnPosition);

            var x = new OrdinaryChessBoardFigurePositionWeight();

            x.GetPositionWeight(pawn);

            board.SetFigure(pawn, endPawnPosition);
            pawn.Move(endPawnPosition);

            x.GetPositionWeight(pawn);

            var result = board.GetScoreForTeam(team);

            // assert
            Assert.AreEqual(expectedScore, result);
        }
Exemple #3
0
        public void GetScore_AfterMovementBlack_BottomLeftPawnTwoFieldUp_WhiteTeam_ShouldBe_Minus1()
        {
            // arrange
            var       startingBoard     = new OrdinaryChessBoard();
            TeamColor team              = TeamColor.White;
            var       startPawnPosition = new Position(1, 0);
            var       endPawnPosition   = new Position(3, 0);

            var pawn = startingBoard.RemoveFigure(startPawnPosition);

            startingBoard.SetFigure(pawn, endPawnPosition);
            pawn.Move(endPawnPosition);
            var validator  = new OrdinaryBoardMoveValidator(startingBoard);
            var verifier   = new OrdinaryBoardCheckVerifier(startingBoard, validator);
            var lastMoveVm = new LastMoveViewModel(pawn, startPawnPosition, endPawnPosition, null);
            var moveResult =
                new ValidMoveResult(startingBoard, verifier, null, lastMoveVm, null);

            int expectedScore = -1;
            // act
            var result = moveResult.GetScore(team);

            // assert
            Assert.AreEqual(expectedScore, result);
        }
        public void VerifyMoveCauseCheck_BlackKingChecked_MoveToSavePosition_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();

            var blackPawnRemove1Postion = new Position(1, 3);
            var blackPawnRemove2Postion = new Position(1, 4);
            var startWhiteQueenPosition = new Position(7, 3);
            var endWhiteQueenPosition   = new Position(4, 0);
            var blackKingStartPosition  = new Position(0, 4);
            var blackKingEndPosition    = new Position(1, 4);

            board.RemoveFigure(blackPawnRemove1Postion);
            board.RemoveFigure(blackPawnRemove2Postion);

            var whiteQueen = board.RemoveFigure(startWhiteQueenPosition);

            whiteQueen.Move(endWhiteQueenPosition);
            board.SetFigure(whiteQueen, endWhiteQueenPosition);

            var moveValidator = new OrdinaryBoardMoveValidator(board);
            var verifier      = new OrdinaryBoardCheckVerifier(board, moveValidator);

            // act
            var result = verifier.VerifyMoveCauseCheck(blackKingStartPosition, blackKingEndPosition);

            // assert
            Assert.False(result);
        }
        public void IsCheck_BlackTeam_BlackChecked_Bishop_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var blackPawnDeletePosition  = new Position(1, 3);
            var whiteBishopStartPosition = new Position(7, 5);
            var whiteBishopEndPosition   = new Position(4, 0);

            board.RemoveFigure(blackPawnDeletePosition);
            var bishop = board.RemoveFigure(whiteBishopStartPosition);

            bishop.Move(whiteBishopEndPosition);
            board.SetFigure(bishop, whiteBishopEndPosition);

            var moveValidator = new OrdinaryBoardMoveValidator(board);
            var verifier      = new OrdinaryBoardCheckVerifier(board, moveValidator);

            TeamColor teamColor = TeamColor.Black;

            // act
            var result = verifier.IsCheck(teamColor);

            // assert
            Assert.False(result);
        }
Exemple #6
0
        public void SetRemoveOperation_Test()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var startKnightPosition = new Models.Position.Position(0, 1);
            var knightPosition1     = new Models.Position.Position(2, 1);
            var knightPosition2     = new Models.Position.Position(3, 0);

            // act
            var check0 = board.FigureAt(knightPosition1);
            var knight = board.RemoveFigure(startKnightPosition);

            board.SetFigure(knight, knightPosition1);
            var check1 = board.FigureAt(startKnightPosition);
            var check2 = board.FigureAt(knightPosition1);

            board.RemoveFigure(knightPosition1);
            board.SetFigure(knight, knightPosition2);
            var check3 = board.FigureAt(knightPosition1);
            var check4 = board.FigureAt(knightPosition2);

            // assert
            Assert.AreEqual(null, check0);
            Assert.AreEqual(null, check1);
            Assert.AreEqual(FigureType.Knight, check2.FigureType);
            Assert.AreEqual(null, check3);
            Assert.AreEqual(FigureType.Knight, check4.FigureType);
        }
Exemple #7
0
        public void IsLastMoveSmash_NotSmash_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var startBlackPawnPosition  = new Position(1, 5);
            var oneHopBlackPawnPosition = new Position(3, 5);
            var startWhitePawnPosition  = new Position(6, 4);
            var oneHopWhitePawnPosition = new Position(4, 4);

            var blackPawn = board.RemoveFigure(startBlackPawnPosition);

            blackPawn.Move(oneHopBlackPawnPosition);
            board.SetFigure(blackPawn, oneHopBlackPawnPosition);

            var whitePawn = board.RemoveFigure(startWhitePawnPosition);

            whitePawn.Move(oneHopWhitePawnPosition);
            board.SetFigure(whitePawn, oneHopWhitePawnPosition);

            var validator  = new OrdinaryBoardMoveValidator(board);
            var verifier   = new OrdinaryBoardCheckVerifier(board, validator);
            var lastMoveVm = new LastMoveViewModel(whitePawn, startWhitePawnPosition, oneHopWhitePawnPosition, null);
            var moveResult = new ValidMoveResult(board, verifier, null, lastMoveVm, null);

            // act
            var result = moveResult.IsLastMoveSmash();

            // assert
            Assert.False(result);
        }
        public void CanMove_Queen_EnemyBlockPath_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var startQueenPosition     = new Models.Position.Position(0, 3);
            var destQueenPosition      = new Models.Position.Position(4, 7);
            var pawnPosition           = new Models.Position.Position(1, 4);
            var enemyPawnStartPosition = new Models.Position.Position(6, 6);
            var enemyPawnEndPosition   = new Models.Position.Position(3, 6);

            board.RemoveFigure(pawnPosition);
            var enemyPawn = board.RemoveFigure(enemyPawnStartPosition);

            enemyPawn.Move(enemyPawnEndPosition);
            board.SetFigure(enemyPawn, enemyPawnEndPosition);

            var queen     = board.FigureAt(startQueenPosition);
            var validator = new OrdinaryBoardMoveValidator(board);

            // act
            var result = validator.CanMove(queen, destQueenPosition);

            // assert
            Assert.False(result.Item1);
        }
Exemple #9
0
        static void ShowInstructions()
        {
            Console.WriteLine(_introText1);
            var board = new OrdinaryChessBoard();

            BoardDisplay.ShowBoard(new BoardViewModel(board));
            ShowInColor(_introText2, ConsoleColor.Red);
            ShowInColor(_introText3, ConsoleColor.Blue);
            Console.Write(_introText4);
            ShowInColor("1", ConsoleColor.Green);
            Console.Write(_introText5);
            ShowInColor("2", ConsoleColor.Green);
            Console.Write(_introText6);
            ShowInColor("3", ConsoleColor.Green);
            Console.Write(_introText7);
            ShowInColor("1", ConsoleColor.Green);
            Console.WriteLine(_introText8);

            var knight = board.RemoveFigure(board.GetPositionAt(0, 1));

            board.SetFigure(knight, board.GetPositionAt(2, 0));
            BoardDisplay.ShowBoard(new BoardViewModel(board));
            Console.WriteLine(_introText9);
            Console.WriteLine(_introText10);
        }
        public void Serialize_NextDeserialize_AlreadyWrittenFile()
        {
            // arrange
            var board     = new OrdinaryChessBoard();
            var validator = new OrdinaryBoardMoveValidator(board);
            var verifier  = new OrdinaryBoardCheckVerifier(board, validator);
            LastMoveViewModel lastMoveVm = new LastMoveViewModel(new King(new Position(1, 2), TeamColor.Black),
                                                                 new Position(1, 2), new Position(2, 3), null);
            var        moveResult  = new ValidMoveResult(board, verifier, validator, lastMoveVm, null);
            const bool isGameEnded = false;
            TeamColor  currentTeam = TeamColor.Black;

            const string filePath = "Serialize_NextDeserialize_AlreadyWrittenFile.bin";

            ChessGameState gameState =
                new ChessGameState(moveResult, isGameEnded, null, currentTeam, PlayerMode.TwoPlayers, 0);

            // act
            ChessGameSerializer.SaveInFile(filePath, gameState);
            ChessGameSerializer.SaveInFile(filePath, gameState);
            ChessGameState fromFile = ChessGameSerializer.ReadFromFile <ChessGameState>(filePath);

            // assert
            Assert.AreEqual(fromFile.IsEnded, isGameEnded);
            Assert.AreEqual(fromFile.CurrentMovingTeam, currentTeam);
            Assert.AreEqual(fromFile.LastGameMoveResult.LastMoveFigureAndPositionFromAndDest().Item2,
                            moveResult.LastMoveFigureAndPositionFromAndDest().Item2);

            // clear
            Assert.True(ChessGameSerializer.ClearFile(filePath));
        }
        public void Serialize_NextDeserialize_NullObject()
        {
            // arrange
            var        board       = new OrdinaryChessBoard();
            var        validator   = new OrdinaryBoardMoveValidator(board);
            var        verifier    = new OrdinaryBoardCheckVerifier(board, validator);
            var        moveResult  = new ValidMoveResult(board, verifier, validator, null, null);
            const bool isGameEnded = false;
            TeamColor  currentTeam = TeamColor.Black;

            const string filePath = "Test_Serialize_NextDeserialize_NullObject.bin";

            ChessGameState gameState =
                new ChessGameState(moveResult, isGameEnded, null, currentTeam, PlayerMode.TwoPlayers, 0);

            // act
            ChessGameSerializer.SaveInFile(filePath, gameState);
            ChessGameState fromFile = ChessGameSerializer.ReadFromFile <ChessGameState>(filePath);

            // assert
            Assert.AreEqual(fromFile.IsEnded, isGameEnded);
            Assert.AreEqual(fromFile.CurrentMovingTeam, currentTeam);

            // clear
            Assert.True(ChessGameSerializer.ClearFile(filePath));
        }
        public void CanMove_Bishop_EnemyBlockPath_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var startBishopPosition    = new Models.Position.Position(0, 2);
            var destBishopPosition     = new Models.Position.Position(5, 7);
            var pawnPosition           = new Models.Position.Position(1, 3);
            var startEnemyPawnPosition = new Models.Position.Position(6, 6);
            var destEnemyPawnPosition  = new Models.Position.Position(4, 6);

            board.RemoveFigure(pawnPosition);
            var enemyPawn = board.RemoveFigure(startEnemyPawnPosition);

            enemyPawn.Move(destEnemyPawnPosition);
            board.SetFigure(enemyPawn, destEnemyPawnPosition);


            var bishop    = board.FigureAt(startBishopPosition);
            var validator = new OrdinaryBoardMoveValidator(board);

            // act
            var result = validator.CanMove(bishop, destBishopPosition);

            // assert
            Assert.False(result.Item1);
        }
        public void IsCheck_BlackTeam_Check_Bishop_ShouldReturnTrue()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var pawnDeletePosition  = new Position(6, 3);
            var bishopStartPosition = new Position(0, 5);
            var bishopEndPosition   = new Position(3, 0);

            board.RemoveFigure(pawnDeletePosition);
            var bishop = board.RemoveFigure(bishopStartPosition);

            bishop.Move(bishopEndPosition);
            board.SetFigure(bishop, bishopEndPosition);

            var moveValidator = new OrdinaryBoardMoveValidator(board);
            var verifier      = new OrdinaryBoardCheckVerifier(board, moveValidator);

            TeamColor teamColor = TeamColor.Black;

            // act
            var result = verifier.IsCheck(teamColor);

            // assert
            Assert.True(result);
        }
Exemple #14
0
        public void DefaultConstructor_InitializationTest()
        {
            // arrange

            // act
            var board       = new OrdinaryChessBoard();
            var whiteRock   = board.FigureAt(new Models.Position.Position(0, 0));
            var blackKnight = board.FigureAt(new Models.Position.Position(7, 1));
            var whiteBishop = board.FigureAt(new Models.Position.Position(0, 5));
            var blackQueen  = board.FigureAt(new Models.Position.Position(7, 3));
            var whiteKing   = board.FigureAt(new Models.Position.Position(0, 4));
            var blackPawn   = board.FigureAt(new Models.Position.Position(6, 2));

            // assert
            Assert.AreEqual(FigureType.Rook, whiteRock.FigureType);
            Assert.AreEqual(TeamColor.White, whiteRock.TeamColor);
            Assert.AreEqual(FigureType.Knight, blackKnight.FigureType);
            Assert.AreEqual(TeamColor.Black, blackKnight.TeamColor);
            Assert.AreEqual(FigureType.Bishop, whiteBishop.FigureType);
            Assert.AreEqual(TeamColor.White, whiteBishop.TeamColor);
            Assert.AreEqual(FigureType.Queen, blackQueen.FigureType);
            Assert.AreEqual(TeamColor.Black, blackQueen.TeamColor);
            Assert.AreEqual(FigureType.King, whiteKing.FigureType);
            Assert.AreEqual(TeamColor.White, whiteKing.TeamColor);
            Assert.AreEqual(FigureType.Pawn, blackPawn.FigureType);
            Assert.AreEqual(TeamColor.Black, blackPawn.TeamColor);
        }
Exemple #15
0
        public void IsCheckMate_OnlyCheck_CulpritMayBeKilled_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();

            var blackPawnStartPosition  = new Position(1, 7);
            var blackPawnMiddlePosition = new Position(2, 7);
            var blackPawnEndPosition    = new Position(3, 7);

            var whiteKnightStartPosition     = new Position(7, 1);
            var whiteKnightFirstHopPosition  = new Position(5, 2);
            var whiteKnightSecondHopPosition = new Position(3, 3);
            var whiteKnightEndPosition       = new Position(2, 5);

            var blackPawn = board.RemoveFigure(blackPawnStartPosition);

            blackPawn.Move(blackPawnMiddlePosition);
            board.SetFigure(blackPawn, blackPawnMiddlePosition);
            board.RemoveFigure(blackPawnMiddlePosition);
            blackPawn.Move(blackPawnEndPosition);
            board.SetFigure(blackPawn, blackPawnEndPosition);
            var whiteKnight = board.RemoveFigure(whiteKnightStartPosition);

            whiteKnight.Move(whiteKnightFirstHopPosition);
            board.SetFigure(whiteKnight, whiteKnightFirstHopPosition);
            board.RemoveFigure(whiteKnightFirstHopPosition);
            whiteKnight.Move(whiteKnightSecondHopPosition);
            board.SetFigure(whiteKnight, whiteKnightSecondHopPosition);
            board.RemoveFigure(whiteKnightSecondHopPosition);
            whiteKnight.Move(whiteKnightEndPosition);
            board.SetFigure(whiteKnight, whiteKnightEndPosition);

            var validator  = new OrdinaryBoardMoveValidator(board);
            var verifier   = new OrdinaryBoardCheckVerifier(board, validator);
            var lastMoveVm =
                new LastMoveViewModel(whiteKnight, whiteKnightSecondHopPosition, whiteKnightEndPosition, null);
            var moveResult =
                new ValidMoveResult(board, verifier, validator, lastMoveVm, null);

            var team1 = TeamColor.White;
            var team2 = TeamColor.Black;
            // act

            var result1 = moveResult.IsCheck(team1);
            var result2 = moveResult.IsCheck(team2);
            var result3 = moveResult.IsCheckMate(team1);
            var result4 = moveResult.IsCheckMate(team2);

            // assert
            Assert.True(result1);
            Assert.False(result2);
            Assert.False(result3);
            Assert.False(result4);
        }
Exemple #16
0
        public void IsCheckMate_CheckMateWhiteTeam()
        {
            // arrange
            var board = new OrdinaryChessBoard();

            var whitePawn1StartPosition = new Position(6, 5);
            var whitePawn1EndPosition   = new Position(5, 5);
            var whitePawn2StartPosition = new Position(6, 6);
            var whitePawn2EndPosition   = new Position(4, 6);
            var blackPawnStartPosition  = new Position(1, 4);
            var blackPawnEndPosition    = new Position(3, 4);
            var blackQueenStartPosition = new Position(0, 3);
            var blackQueenEndPosition   = new Position(4, 7);

            var whitePawn1 = board.RemoveFigure(whitePawn1StartPosition);

            whitePawn1.Move(whitePawn1EndPosition);
            board.SetFigure(whitePawn1, whitePawn1EndPosition);
            var blackPawn = board.RemoveFigure(blackPawnStartPosition);

            blackPawn.Move(blackPawnEndPosition);
            board.SetFigure(blackPawn, blackPawnEndPosition);
            var whitePawn2 = board.RemoveFigure(whitePawn2StartPosition);

            whitePawn2.Move(whitePawn2EndPosition);
            board.SetFigure(whitePawn2, whitePawn2EndPosition);
            var blackQueen = board.RemoveFigure(blackQueenStartPosition);

            blackQueen.Move(blackQueenEndPosition);
            board.SetFigure(blackQueen, blackQueenEndPosition);

            var validator  = new OrdinaryBoardMoveValidator(board);
            var verifier   = new OrdinaryBoardCheckVerifier(board, validator);
            var lastMoveVm = new LastMoveViewModel(blackQueen, blackQueenStartPosition, blackPawnEndPosition, null);
            var moveResult =
                new ValidMoveResult(board, verifier, validator, lastMoveVm, null);

            var team1 = TeamColor.White;
            var team2 = TeamColor.Black;
            // act

            var result1 = moveResult.IsCheck(team1);
            var result2 = moveResult.IsCheck(team2);
            var result3 = moveResult.IsCheckMate(team1);
            var result4 = moveResult.IsCheckMate(team2);

            // assert
            Assert.False(result1);
            Assert.True(result2);
            Assert.False(result3);
            Assert.True(result4);
        }
Exemple #17
0
        public void GetScoreForTeam_InitialConfiguration_ShouldBe0()
        {
            // arrange
            var       board         = new OrdinaryChessBoard();
            TeamColor team          = TeamColor.Black;
            int       expectedScore = 0;

            // act
            var result = board.GetScoreForTeam(team);

            // assert
            Assert.AreEqual(expectedScore, result);
        }
        public void StartGame_White_Depth2_Breadth5()
        {
            // arrange
            var computer = new ComputerPlayer(TeamColor.White, 2, 5);
            var board    = new OrdinaryChessBoard();
            var boardVm  = new BoardViewModel(board);

            // act
            var move = computer.NextMove(boardVm);

            // assert
            Assert.NotNull(move);
            Assert.AreEqual(0, move.Score);
        }
        public void CanMove_King_PositionAlreadyTakenByAlly_ShouldReturnFalse()
        {
            // arrange
            var board        = new OrdinaryChessBoard();
            var destPosition = new Models.Position.Position(1, 4);
            var kingPosition = new Models.Position.Position(0, 4);
            var king         = board.FigureAt(kingPosition);
            var validator    = new OrdinaryBoardMoveValidator(board);

            // act
            var result = validator.CanMove(king, destPosition);

            // assert
            Assert.False(result.Item1);
        }
        public void CanMove_Rook_OutOfBoundaries_ShouldReturnFalse()
        {
            // arrange
            var board             = new OrdinaryChessBoard();
            var startRookPosition = new Models.Position.Position(0, 0);
            var destRookPosition  = new Models.Position.Position(-1, 0);
            var queen             = board.FigureAt(startRookPosition);
            var validator         = new OrdinaryBoardMoveValidator(board);

            // act
            var result = validator.CanMove(queen, destRookPosition);

            // assert
            Assert.False(result.Item1);
        }
        public void CanMove_Queen_PositionAlreadyTakenByAlly_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var startQueenPosition = new Models.Position.Position(0, 3);
            var destQueenPosition  = new Models.Position.Position(1, 4);
            var queen     = board.FigureAt(startQueenPosition);
            var validator = new OrdinaryBoardMoveValidator(board);

            // act
            var result = validator.CanMove(queen, destQueenPosition);

            // assert
            Assert.False(result.Item1);
        }
Exemple #22
0
        public void GetScoreForTeam_AfterDeleteWhite_BottomLeftPawn_BlackTeam_ShouldBe_21()
        {
            // arrange
            var       board         = new OrdinaryChessBoard();
            TeamColor team          = TeamColor.Black;
            int       expectedScore = 21;
            var       pawnPosition  = new Models.Position.Position(1, 0);

            // act
            board.RemoveFigure(pawnPosition);
            var result = board.GetScoreForTeam(team);

            // assert
            Assert.AreEqual(expectedScore, result);
        }
        public void CanMove_Pawn_CanMove_ShouldReturnTrue()
        {
            // arrange
            var board             = new OrdinaryChessBoard();
            var startPawnPosition = new Models.Position.Position(1, 0);
            var destPawnPosition  = new Models.Position.Position(2, 0);

            var pawn      = board.FigureAt(startPawnPosition);
            var validator = new OrdinaryBoardMoveValidator(board);

            // act
            var result = validator.CanMove(pawn, destPawnPosition);

            // assert
            Assert.True(result.Item1);
        }
        public void CanMove_Knight_OutOfBoundaries_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var startKnightPosition = new Models.Position.Position(0, 1);
            var destKnightPosition  = new Models.Position.Position(-1, 3);

            var bishop    = board.FigureAt(startKnightPosition);
            var validator = new OrdinaryBoardMoveValidator(board);

            // act
            var result = validator.CanMove(bishop, destKnightPosition);

            // assert
            Assert.False(result.Item1);
        }
        public void CanMove_Knight_AllyBlockPath_CanMove_ShouldReturnTrue()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var startKnightPosition = new Models.Position.Position(0, 1);
            var destKnightPosition  = new Models.Position.Position(2, 2);

            var bishop    = board.FigureAt(startKnightPosition);
            var validator = new OrdinaryBoardMoveValidator(board);

            // act
            var result = validator.CanMove(bishop, destKnightPosition);

            // assert
            Assert.True(result.Item1);
        }
        public void CanMove_Bishop_AllyBlockPath_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var startBishopPosition = new Models.Position.Position(0, 2);
            var destBishopPosition  = new Models.Position.Position(5, 7);

            var bishop    = board.FigureAt(startBishopPosition);
            var validator = new OrdinaryBoardMoveValidator(board);

            // act
            var result = validator.CanMove(bishop, destBishopPosition);

            // assert
            Assert.False(result.Item1);
        }
        public void VerifyMoveCauseCheck_NoFigureAtPosition_ShouldThrowException()
        {
            // arrange
            var board             = new OrdinaryChessBoard();
            var pawnStartPosition = new Position(2, 0);
            var pawnEndPosition   = new Position(3, 0);

            var moveValidator = new OrdinaryBoardMoveValidator(board);
            var verifier      = new OrdinaryBoardCheckVerifier(board, moveValidator);

            // act

            // assert
            Assert.Throws <RemoveFromBoardEmptyFieldException>(() =>
                                                               verifier.VerifyMoveCauseCheck(pawnStartPosition, pawnEndPosition));
        }
        public void VerifyMoveCauseCheck_CannotMove_InvalidMoveForFigure_ShouldThrowException()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var knightStartPosition = new Position(0, 1);
            var knightEndPosition   = new Position(5, 1);

            var moveValidator = new OrdinaryBoardMoveValidator(board);
            var verifier      = new OrdinaryBoardCheckVerifier(board, moveValidator);

            // act

            // assert
            Assert.Throws <InvalidMoveException>(() =>
                                                 verifier.VerifyMoveCauseCheck(knightStartPosition, knightEndPosition));
        }
        public void VerifyMoveCauseCheck_CannotMove_Rook_OtherFigureBlock_ShouldThrowException()
        {
            // arrange
            var board             = new OrdinaryChessBoard();
            var rookStartPosition = new Position(0, 0);
            var rookEndPosition   = new Position(2, 0);

            var moveValidator = new OrdinaryBoardMoveValidator(board);
            var verifier      = new OrdinaryBoardCheckVerifier(board, moveValidator);

            // act

            // assert
            Assert.Throws <InvalidMoveException>(() =>
                                                 verifier.VerifyMoveCauseCheck(rookStartPosition, rookEndPosition));
        }
        public void VerifyMoveCauseCheck_Knight_OtherFigureBlock_OK_ShouldReturnFalse()
        {
            // arrange
            var board = new OrdinaryChessBoard();
            var knightStartPosition = new Position(0, 1);
            var knightEndPosition   = new Position(2, 0);

            var moveValidator = new OrdinaryBoardMoveValidator(board);
            var verifier      = new OrdinaryBoardCheckVerifier(board, moveValidator);

            // act
            var result = verifier.VerifyMoveCauseCheck(knightStartPosition, knightEndPosition);

            // assert
            Assert.False(result);
        }