public static void TestInvalidMoveWhiteKing_QueensideCastling_RookMoved()
{
Piece[][] board = new Piece[8][]
{
new[] { o, kb, o, o, o, o, o, o },
new[] { o, o, o, o, o, o, o, o },
new[] { o, o, o, o, o, o, o, o },
new[] { o, o, o, o, o, o, o, o },
new[] { o, o, o, o, o, o, o, o },
new[] { o, o, o, o, o, o, o, o },
new[] { o, o, o, o, o, o, o, o },
new[] { rw, o, o, o, kw, o, o, o }
};
ChessGame cb = new ChessGame(board, Player.White);
Move move1 = new Move(new Position(File.A, 1), new Position(File.A, 2), Player.White);
Move move2 = new Move(new Position(File.B, 8), new Position(File.B, 7), Player.Black);
Move move3 = new Move(new Position(File.E, 1), new Position(File.C, 1), Player.White);
cb.ApplyMove(move1, true);
cb.ApplyMove(move2, true);
Assert.False(cb.IsValidMove(move3), "move3 should be invalid");
}