public static void TestApplyMoveWhitePawn()
{
ChessGame cb = new ChessGame();
Move move1 = new Move(new Position(File.E, 2), new Position(File.E, 3), Player.White);
Assert.AreNotEqual(cb.ApplyMove(move1, false), MoveType.Invalid);
Piece[][] expected = new Piece[8][]
{
new[] { rb, nb, bb, qb, kb, bb, nb, rb },
new[] { pb, pb, pb, pb, pb, pb, pb, pb },
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, pw, o, o, o },
new[] { pw, pw, pw, pw, o, pw, pw, pw },
new[] { rw, nw, bw, qw, kw, bw, nw, rw }
};
Assert.AreEqual(expected, cb.GetBoard(), "Unexpected board layout after applying move1");
Move move2 = new Move(new Position(File.E, 3), new Position(File.E, 4), Player.White);
Assert.AreNotEqual(cb.ApplyMove(move2, true), MoveType.Invalid);
expected = new Piece[8][]
{
new[] { rb, nb, bb, qb, kb, bb, nb, rb },
new[] { pb, pb, pb, pb, pb, pb, pb, pb },
new[] { o, o, o, o, o, o, o, o },
new[] { o, o, o, o, o, o, o, o },
new[] { o, o, o, o, pw, o, o, o },
new[] { o, o, o, o, o, o, o, o },
new[] { pw, pw, pw, pw, o, pw, pw, pw },
new[] { rw, nw, bw, qw, kw, bw, nw, rw }
};
Assert.AreEqual(expected, cb.GetBoard(), "Unexpected board layout after applying move2");
}