public void CheckIfParseIsCorrect() { var move = MoveNotationConverter.ParseMoveNotation("Pa4Q"); Assert.False(move.IsCheckMate); Assert.True(move.IsPromotion); }
// [InlineData("d7", "d8Q", PieceColor.White)] public void PawnCapturesAndPromotesToQueen(string attackerCoords, string opponentCoords, string moveAN, PieceColor attackerColor) { //promote a pawn with no capture to Queen //Arrange var board = new Board(false); var opponentColor = attackerColor == PieceColor.Black ? PieceColor.White : PieceColor.Black; board.AddPiece(attackerCoords, new Pawn(attackerColor)); board.AddPiece(opponentCoords, new Rook(opponentColor)); var list = board.Pieces; //Act var move = MoveNotationConverter.ParseMoveNotation(moveAN, attackerColor); //caut piesa care face capturarea board.FindPieceWhoNeedsToBeMoved(move); //determina celula destinatie //var cellDestination = board.TransformCoordonatesIntoCell(move.Coordinate); var cellDestination = board.CellAt(move.Coordinate); //cauta piesa oponenta var opponent = cellDestination.Piece; board.PlayMove(moveAN, attackerColor); Assert.Null(opponent.DestinationCell); Assert.IsType <Queen>(board.CellAt(move.Coordinate).Piece); }
public void CheckRegexForKingCastlingShouldReturnNewPiece() { var notation = "0-0"; var move = MoveNotationConverter.ParseMoveNotation(notation); Assert.True(move.IsKingCastling); Assert.False(move.IsQueenCastling); }
public void CheckRegexForMovePawnToPromotionShouldReturnNewPiece() { var notation = "Pe8Q++"; var move = MoveNotationConverter.ParseMoveNotation(notation); Assert.NotNull(move.Coordinate); Assert.True(move.IsPromotion); Assert.False(move.IsCheck); Assert.True(move.IsCheckMate); }
public void CheckRegexForMoveBishopShouldReturn() { var notation = "Be5+"; var move = MoveNotationConverter.ParseMoveNotation(notation); Assert.NotNull(move.Coordinate); Assert.False(move.IsPromotion); Assert.True(move.IsCheck); Assert.False(move.IsCheckMate); }
private void UndoPlayMove(King king, Cell currentCell, Cell kingCoords, Piece piece) { var moveOne = MoveNotationConverter.TransformIntoMoveInstance(piece, currentCell); board.AddPiece(moveOne.Coordinate, piece); var moveTwo = MoveNotationConverter.TransformIntoMoveInstance(king, kingCoords); board.AddPiece(moveTwo.Coordinate, king); board.whitePieces.Add(piece); }
public void ConvertPieceInitialFromMoveToPieceNameShouldReturnPieceName() { var listOfMoves = ReadFromFile.ProcessFile("chess-moves.txt"); string move1 = listOfMoves[0]; string move3 = listOfMoves[2]; var pieceTypePawn2 = MoveNotationConverter.ConvertPieceInitialFromMoveToPieceName(move3); var pieceTypePawn = MoveNotationConverter.ConvertPieceInitialFromMoveToPieceName(move1); Assert.Equal(PieceName.Pawn, pieceTypePawn); Assert.Equal(PieceName.Pawn, pieceTypePawn2); }
public void CheckRegexForMovePawnToPromotionShouldReturnNewPiece() { var notation = "e8Q++"; var color = PieceColor.White; var move = MoveNotationConverter.ParseMoveNotation(notation, color); Assert.NotNull(move.Coordinate); Assert.NotNull(move.Promotion); Assert.IsType <Queen>(move.Promotion); Assert.Equal(color, move.Promotion.PieceColor); Assert.False(move.IsCheck); Assert.True(move.IsCheckMate); }
public void FindWhiteQueenOnAllRoutesWithObstacleShouldReturnNull(string queenCoords, string obstacleCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(queenCoords, new Queen(currentPlayer)); board.AddPiece(obstacleCoords, new Pawn(currentPlayer)); var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); var queen = board.FindPieceWhoNeedsToBeMoved(move); Assert.False(queen); }
public void MoveWhitePawnASquareForward() { var board = new Board(); var pawn = board.CellAt("e2").Piece; var move = MoveNotationConverter.ParseMoveNotation("e4", PieceColor.White); move.MovePiece(pawn, board.CellAt("e4")); var isPawn = board.FindPieceWhoNeedsToBeMoved("e5", PieceColor.White); Assert.True(isPawn); Assert.Null(board.CellAt("e2").Piece); }
public void CheckRegexForMoveBishopShouldReturn() { var notation = "Be5+"; var color = PieceColor.White; var move = MoveNotationConverter.ParseMoveNotation(notation, color); Assert.NotNull(move.Coordinate); Assert.Null(move.Promotion); Assert.Equal(color, move.PieceColor); Assert.Equal(PieceName.Bishop, move.Name); Assert.True(move.IsCheck); Assert.False(move.IsCheckMate); }
public void WhiteKingCastlingPiecesMovedShouldThrowException() { var board = new Board(false); board.AddPiece("a1", new Rook(PieceColor.White)); board.AddPiece("e1", new King(PieceColor.White)); var move = MoveNotationConverter.ParseMoveNotation("0-0", PieceColor.White); Action exception = () => board.PlayMove("0-0", PieceColor.White); Assert.Throws <InvalidOperationException>(exception); }
public void WhitePawnCannotMoveBackwords() { var board = new Board(); var pawn = board.CellAt("e2").Piece; var cell = board.CellAt("e4"); var move = MoveNotationConverter.ParseMoveNotation("e4", PieceColor.White); move.MovePiece(pawn, cell); Action exception = () => board.FindPieceWhoNeedsToBeMoved(move); Assert.Throws <InvalidOperationException>(exception); }
public void FindRookOnAllRoutesWithObstacleShouldReturnNull(string rookCoords, string obstacleCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(rookCoords, new Bishop(currentPlayer)); board.AddPiece(obstacleCoords, new Pawn(PieceColor.Black)); var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); var rook = board.FindPieceWhoNeedsToBeMoved(move); Assert.False(rook); }
public void FindKingOnAllRoutesWithObstacleShouldThrowError(string kingCoords, string obstacleCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(kingCoords, new King(currentPlayer)); board.AddPiece(obstacleCoords, new Pawn(PieceColor.Black)); var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); Action exception = () => board.FindPieceWhoNeedsToBeMoved(move); Assert.Throws <InvalidOperationException>(exception); }
public void FindAndMoveKnightWithAmbiguousMove2(string knightCoords, string knightCoords2, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(knightCoords, new Knight(currentPlayer)); var knight1 = board.AddPiece(knightCoords2, new Knight(currentPlayer)); board.AddPiece("b4", new Rook(PieceColor.White)); var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); //Assert Assert.Equal(knight1.DestinationCell.Y, move.Y); }
public void FindWhitePawnWhoNeedsToBeMovedTest() { var board = new Board(); var player = PieceColor.White; var move = MoveNotationConverter.ParseMoveNotation("e3", player); var piece = board.FindPieceWhoNeedsToBeMoved(move); Assert.True(piece); //Assert.IsType<Pawn>(piece); var piece2 = board.FindPieceWhoNeedsToBeMoved("e4", player); Assert.True(piece2); //Assert.IsType<Pawn>(piece2); }
public void FindWhiteQueenOnAllRoutesNoObstacleShouldReturnQueen(string queenCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(queenCoords, new Queen(currentPlayer)); //find queen on diagonal right-down var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); //var queen = board.FindPieceWhoNeedsToBeMoved(move, PieceColor.White); var queen = board.PlayMove(moveAN, PieceColor.White); Assert.IsType <Queen>(queen); }
public void FindAndMoveKnightWithObstaclesShouldThrowError(string knightCoords, string obstacleCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(knightCoords, new Knight(currentPlayer)); board.AddPiece(obstacleCoords, new Bishop(currentPlayer)); //Act var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); //Assert Action exception = () => board.FindPieceWhoNeedsToBeMoved(moveAN, currentPlayer); Assert.Throws <InvalidOperationException>(exception); }
public void MoveBishop(string bishopCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(bishopCoords, new Bishop(currentPlayer)); //Act var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); var bishop = board.PlayMove(moveAN, currentPlayer); //Assert Assert.Equal(bishop, board.CellAt(move.Coordinate).Piece); Assert.IsType <Bishop>(bishop); }
public void PawnPromotesToQueen(string pawnCoord, string moveAN, PieceColor pieceColor) { //promote a pawn with no capture to Queen var board = new Board(false); var pawnBlack = board.AddPiece(pawnCoord, new Pawn(pieceColor)); var cell = board.CellAt(pawnCoord); Assert.Equal(pawnBlack, cell.Piece); var move = MoveNotationConverter.ParseMoveNotation(moveAN, pieceColor); var x = board.PlayMove(moveAN, pieceColor); Assert.Null(pawnBlack.DestinationCell); Assert.IsType <Queen>(board.CellAt(move.Coordinate).Piece); }
public void FindMoveRookWithNoObstacles(string rooksCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(rooksCoords, new Rook(currentPlayer)); //Act var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); var rook = board.PlayMove(moveAN, currentPlayer); //Assert Assert.Equal(rook, board.CellAt(move.Coordinate).Piece); Assert.IsType <Rook>(rook); }
internal bool VerifyIfKingIsInCheck(Cell currentCell) { var isPiece = false; foreach (var item in board.whitePieces) { Move move = MoveNotationConverter.TransformIntoMoveInstance(item, currentCell); if (item.Name == PieceName.Pawn) { move.IsCapture = true; } isPiece = board.FindPieceWhoNeedsToBeMoved(move); } return(isPiece); }
// [InlineData("f5", "Rf3", PieceColor.Black)] public void FindAndMoveKingWithNoObstacles(string kingCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(kingCoords, new King(currentPlayer)); //Act var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); var king = board.PlayMove(moveAN, currentPlayer); //Assert Assert.Equal(king, board.CellAt(move.Coordinate).Piece); Assert.IsType <King>(king); Assert.Null(board.CellAt("d2").Piece); }
public void FindKingOnAllRoutesWithCapture(string kingCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(kingCoords, new King(currentPlayer)); board.AddPiece("d5", new Pawn(PieceColor.White)); //Act var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); var king = board.PlayMove(moveAN, currentPlayer); //Assert Assert.Equal(king, board.CellAt(move.Coordinate).Piece); Assert.Null(board.CellAt("e6").Piece); Assert.IsType <King>(king); }
public void MoveRookWithCapture(string rookCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(rookCoords, new Rook(currentPlayer)); board.AddPiece("d5", new Pawn(PieceColor.White)); //Act var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); var rook = board.PlayMove(moveAN, currentPlayer); //Assert Assert.Equal(rook, board.CellAt(move.Coordinate).Piece); Assert.Null(board.CellAt("f5").Piece); Assert.IsType <Rook>(rook); }
public void MoveBishopWithCapture(string bishopCoords, string moveAN, PieceColor currentPlayer) { //Arange var board = new Board(false); board.AddPiece(bishopCoords, new Bishop(currentPlayer)); board.AddPiece("d6", new Pawn(PieceColor.Black)); //Act var move = MoveNotationConverter.ParseMoveNotation(moveAN, currentPlayer); var list = board.Pieces; var bishop = board.PlayMove(moveAN, currentPlayer); int x = list.Count(); //Assert Assert.Equal(bishop, board.CellAt(move.Coordinate).Piece); Assert.IsType <Bishop>(bishop); }