public void TestKingsNextToEachOther() { Piece[][] board = new Piece[8][] { new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, pb, nb, o, o, o }, new Piece[8] { o, o, o, pw, pb, o, o, o }, new Piece[8] { o, o, o, o, o, nw, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, kb, o, kw, o, o, o } }; AtomarChessGame game = new AtomarChessGame(board, Player.White); Assert.True(game.IsValidMove(new Move("E1", "D1", Player.White))); game.MakeMove(new Move("E1", "D1", Player.White), true); Assert.False(game.IsInCheck(Player.Black)); Assert.False(game.IsInCheck(Player.White)); Assert.False(game.IsValidMove(new Move("C1", "D1", Player.Black))); Assert.True(game.IsValidMove(new Move("C1", "D2", Player.Black))); Assert.True(game.IsValidMove(new Move("C1", "C2", Player.Black))); }
public void TestCastling() { AtomarChessGame game = new AtomarChessGame("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"); game.MakeMove(new Move("G1", "F3", Player.White), true); game.MakeMove(new Move("G8", "F6", Player.Black), true); game.MakeMove(new Move("G2", "G3", Player.White), true); game.MakeMove(new Move("G7", "G6", Player.Black), true); game.MakeMove(new Move("F1", "G2", Player.White), true); game.MakeMove(new Move("F8", "G7", Player.Black), true); Assert.True(game.IsValidMove(new Move("E1", "H1", Player.White))); var moves = game.GetValidMoves(Player.White); int ok = 0; foreach (var move in moves) { if (move.OriginalPosition.ToString() == "E1" && (move.NewPosition.ToString() == "G1" || move.NewPosition.ToString() == "H1")) { ok++; } } Assert.AreEqual(2, ok); }
public void TestKingsImmuneToExplosions() { Piece[][] board = new Piece[8][] { new Piece[8] { nb, nw, nb, o, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, kb, o, o, o, o }, new Piece[8] { o, o, o, bb, o, o, o, rw }, new Piece[8] { o, o, o, kw, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o } }; AtomarChessGame game = new AtomarChessGame(board, Player.White); Assert.True(game.IsValidMove(new Move("H4", "D4", Player.White))); game.MakeMove(new Move("H4", "D4", Player.White), true); Assert.AreEqual("nNn5/8/8/3k4/8/3K4/8/8", game.GetFen().Split(" ")[0]); }
public void TestExplosions() { Piece[][] board = new Piece[8][] { new Piece[8] { o, o, o, o, kb, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, pw, qb, o, o, o }, new Piece[8] { o, o, o, bw, pb, o, o, o }, new Piece[8] { o, o, o, o, o, o, nw, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, o, kw, o, o, o } }; AtomarChessGame game = new AtomarChessGame(board, Player.White); Assert.AreEqual(game.MakeMove(new Move("G3", "E4", Player.White), true), MoveType.Move | MoveType.Capture); Piece[][] expected = new Piece[8][] { new Piece[8] { o, o, o, o, kb, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, pw, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, o, o, o, o, o }, new Piece[8] { o, o, o, o, kw, o, o, o } }; Piece[][] actual = game.GetBoard(); Assert.AreEqual(expected, actual); }