Beispiel #1
0
 private string GetPartialSAN()
 {
     if (MovingPiece.Kind == ChessPieceKind.Pawn)
     {
         if (CapturedPiece == ChessPieceKind.None)
         {
             return(To.AlgebraicNotation);
         }
         else
         {
             if ((MoveKind & ChessMoveType.EP_Capture) == ChessMoveType.EP_Capture)
             {
                 return($"{From.File}x{To.AlgebraicNotation} e.p.");
             }
             return($"{From.File}x{To.AlgebraicNotation}");
         }
     }
     else
     {
         if (MoveKind == ChessMoveType.KSide_Castle)
         {
             return("O-O");
         }
         if (MoveKind == ChessMoveType.QSide_Castle)
         {
             return("O-O-O");
         }
         if ((MoveKind & ChessMoveType.Capture) == ChessMoveType.Capture)
         {
             return($"{FEN.ChessPieceToFEN(MovingPiece).ToUpper()}x{To.AlgebraicNotation}");
         }
         return($"{FEN.ChessPieceToFEN(MovingPiece).ToUpper()}{To.AlgebraicNotation}");
     }
 }
        public void Constructor_Should_Initialize(string rank1, string rank2, string rank3, string rank4, string rank5, string rank6, string rank7, string rank8, string turn, string castling,
                                                  string enpassant, string halfMove, string moves, ChessCastling expectedCastlingForWhite, ChessCastling expectedCastlingForBlack)
        {
            //	Arrange
            SUT fenObj = new SUT($"{rank1}/{rank2}/{rank3}/{rank4}/{rank5}/{rank6}/{rank7}/{rank8} {turn} {castling} {enpassant} {halfMove} {moves}");

            //	Assert
            Assert.AreEqual(rank1.Trim(), fenObj.Ranks[0]);
            Assert.AreEqual(rank2.Trim(), fenObj.Ranks[1]);
            Assert.AreEqual(rank3.Trim(), fenObj.Ranks[2]);
            Assert.AreEqual(rank4.Trim(), fenObj.Ranks[3]);
            Assert.AreEqual(rank5.Trim(), fenObj.Ranks[4]);
            Assert.AreEqual(rank6.Trim(), fenObj.Ranks[5]);
            Assert.AreEqual(rank7.Trim(), fenObj.Ranks[6]);
            Assert.AreEqual(rank8.Trim(), fenObj.Ranks[7]);

            Assert.AreEqual(expectedCastlingForWhite, fenObj.CastlingForWhite);
            Assert.AreEqual(expectedCastlingForBlack, fenObj.CastlingForBlack);
            Assert.AreEqual(enpassant.Trim(), fenObj.EnPassant);
            Assert.AreEqual(int.Parse(halfMove), fenObj.HalfMoveCount);
            Assert.AreEqual(int.Parse(moves), fenObj.MoveCount);
            Assert.AreEqual(turn.Trim() == "w"? ChessColor.White: ChessColor.Black, fenObj.Turn);
        }
 public void FenToChessPiece_Should_ThrowArgumentOutOfRangeException()
 {
     //	Act
     SUT.FenToChessPiece('v');
 }
 public void FenToChessPiece_Should_Return_ChessPieceKind(char piece, ChessPieceKind expectedResult)
 {
     //	Assert
     Assert.AreEqual(expectedResult, SUT.FenToChessPiece(piece));
 }
 public void ChessPieceToFEN_Should_ThrowArgumentNullException_WhenPieceIsNull()
 {
     SUT.ChessPieceToFEN(null);
 }
 public void ChessPieceToFEN_Should_ReturnCorrectFENPiece(ChessPieceKind pieceKind, ChessColor pieceColor, string expectedFEN)
 {
     //	Assert
     Assert.AreEqual(expectedFEN, SUT.ChessPieceToFEN(new ChessPiece(pieceKind, pieceColor)));
 }