From 415ad8e8ee7137fa4087e87fbf7f6e82ee6112ce Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Wed, 14 Mar 2018 18:24:16 -0400 Subject: [PATCH] Queens are obstructed We got this for free because the queens moves combine both the rook and bishop. --- test/chess/moves/queen_test.exs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/test/chess/moves/queen_test.exs b/test/chess/moves/queen_test.exs index 4191368..7bc105e 100644 --- a/test/chess/moves/queen_test.exs +++ b/test/chess/moves/queen_test.exs @@ -16,6 +16,38 @@ defmodule Chess.Moves.QueenTest do assert Enum.sort(moves) == expected_moves end + test "queens are blocked by another piece of the same colour" do + board = %{ + "0,0" => %{"type" => "queen", "colour" => "white"}, + "0,5" => %{"type" => "king", "colour" => "white"}, + "5,0" => %{"type" => "bishop", "colour" => "white"}, + } + moves = Moves.available(board, {0, 0}) + + expected_moves = Enum.sort([ + {0, 1}, {0, 2}, {0, 3}, {0, 4}, + {1, 0}, {2, 0}, {3, 0}, {4, 0}, + {1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}, {6, 6}, {7, 7}, + ]) + assert Enum.sort(moves) == expected_moves + end + + test "queens can take an opponents piece" do + board = %{ + "0,0" => %{"type" => "queen", "colour" => "white"}, + "0,5" => %{"type" => "knight", "colour" => "black"}, + "5,0" => %{"type" => "rook", "colour" => "black"}, + } + moves = Moves.available(board, {0, 0}) + + expected_moves = Enum.sort([ + {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, + {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, + {1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}, {6, 6}, {7, 7}, + ]) + assert Enum.sort(moves) == expected_moves + end + def board do Chess.Board.default end