public static void TestKnights() { Debug.WriteLine("Test: TestKnights, Begin"); var board = new Board(); //Set them up in standard positions var KW0 = new Knight(new Vector2(1, 7), Color.White); var KW1 = new Knight(new Vector2(6, 7), Color.White); var KB0 = new Knight(new Vector2(1, 0), Color.Black); var KB1 = new Knight(new Vector2(6, 0), Color.Black); board.Pieces.Add(KW0); board.Pieces.Add(KW1); board.Pieces.Add(KB0); board.Pieces.Add(KB1); //Test standard moves Debug.Assert(KW0.IsMoveValid(board, KW0.Position.AddVector(2, -1)), "right 2 up 1"); Debug.Assert(!KW0.IsMoveValid(board, KW0.Position.AddVector(3, -1)), "right 3 up 1"); Debug.Assert(!KW0.IsMoveValid(board, KW0.Position.AddVector(1, -1)), "right 1 up 1"); Debug.Assert(!KW0.IsMoveValid(board, KW0.Position.AddVector(2, 1)), "right 2 down 1, off board"); Debug.Assert(!KW0.IsMoveValid(board, KW0.Position.AddVector(-2, -1)), "left 2 up 1, off board"); //Test collision with other pieces var blockingPawn = new Pawn(KW0.Position.AddVector(2, -1), Color.White); board.Pieces.Add(blockingPawn); Debug.Assert(!KW0.IsMoveValid(board, KW0.Position.AddVector(2, -1)), "right 2 up 1, team mate at destination"); blockingPawn.Color = Color.Black; Debug.Assert(KW0.IsMoveValid(board, KW0.Position.AddVector(2, -1)), "right 2 up 1, enemy at destination"); Debug.WriteLine("Test: TestKnights, End"); }