public void Pawn() { ChessBoard b = new ChessBoard(); b.Set("a2", new ChessPiece() { Player = PlayerTypeEnum.White, Type = PieceTypeEnum.Pawn }); b.Set("a7", new ChessPiece() { Player = PlayerTypeEnum.White, Type = PieceTypeEnum.Pawn }); b.Set("e7", new ChessPiece() { Player = PlayerTypeEnum.Black, Type = PieceTypeEnum.Pawn }); b.Set("g4", new ChessPiece() { Player = PlayerTypeEnum.White, Type = PieceTypeEnum.Pawn }); b.Set("h5", new ChessPiece() { Player = PlayerTypeEnum.Black, Type = PieceTypeEnum.Pawn }); TraditionalRulesOfChess rules = new TraditionalRulesOfChess(); // basic move var move = rules.CanMove(b, "a2a3", PlayerTypeEnum.White, null); Assert.IsTrue(move.Success, move.Message); // move two squares on first move move = rules.CanMove(b, "a2a4", PlayerTypeEnum.White, null); Assert.IsTrue(move.Success, move.Message); // can't move two squares on subsequent moves move = rules.CanMove(b, "a2a5", PlayerTypeEnum.White, null); Assert.IsFalse(move.Success, move.Message); // can't move backwards move = rules.CanMove(b, "a2a1", PlayerTypeEnum.White, null); Assert.IsFalse(move.Success, move.Message); // piece does not exist move = rules.CanMove(b, "h2g3", PlayerTypeEnum.White, null); Assert.IsFalse(move.Success, move.Message); // g4 pawn over-take h5 pawn move = rules.CanMove(b, "g4h5", PlayerTypeEnum.White, null); Assert.IsTrue(move.Success, move.Message); b.RecordMoves(new[] { "a2a3" }, null, null); move = rules.CanMove(b, "a3a5", PlayerTypeEnum.White, null); Assert.IsFalse(move.Success, move.Message); move = rules.CanMove(b, "a3a4", PlayerTypeEnum.White, null); Assert.IsTrue(move.Success, move.Message); move = rules.CanMove(b, "a7a8", PlayerTypeEnum.White, null); Assert.IsTrue(move.Success, move.Message); move = rules.CanMove(b, "e7e6", PlayerTypeEnum.Black, null); Assert.IsTrue(move.Success, move.Message); move = rules.CanMove(b, "e7e8", PlayerTypeEnum.Black, null); Assert.IsFalse(move.Success, move.Message); }
public void Overtake() { ChessBoard b = new ChessBoard(); b.Set("g4", new ChessPiece() { Player = PlayerTypeEnum.White, Type = PieceTypeEnum.Pawn }); b.Set("h5", new ChessPiece() { Player = PlayerTypeEnum.Black, Type = PieceTypeEnum.Pawn }); TraditionalRulesOfChess rules = new TraditionalRulesOfChess(); ChessGame chessGame = new ChessGame( b, PlayerTypeEnum.White, null); var move = chessGame.PlayerMove(PlayerTypeEnum.White, "g4h5"); Assert.IsTrue(move.Success, move.Error); Assert.IsNotNull(move.Taken); Assert.AreEqual(chessGame.GetTakenPiecesByPlayer(PlayerTypeEnum.White).Length, 1); Assert.AreEqual(chessGame.GetTakenPiecesByPlayer(PlayerTypeEnum.White)[0].Player, PlayerTypeEnum.Black); }
public void EnPassant() { ChessBoard b = new ChessBoard(); (new EnPassantTestingBoardStager()).Stage(b); var rules = new TraditionalRulesOfChess(); var moveResult = rules.CanMove( b, "a2a4", PlayerTypeEnum.White, null); Assert.IsTrue(moveResult.Success); b.RecordMoves(new[] { "a2a4" }, null, null); moveResult = rules.CanMove( b, "b4a3", PlayerTypeEnum.Black, "a2a4"); Assert.IsTrue(moveResult.Success); Assert.AreEqual("a4", moveResult.TakenPiece, true); }