diff --git a/test/chess/board_test.exs b/test/chess/board_test.exs new file mode 100644 index 0000000..0215798 --- /dev/null +++ b/test/chess/board_test.exs @@ -0,0 +1,43 @@ +defmodule Chess.BoardTest do + @moduledoc false + + use Chess.DataCase + + alias Chess.Board + + test "returns a piece from the board" do + board = Board.default + + expected_piece = %{"type" => "pawn", "colour" => "white"} + assert Board.piece(board, {4, 1}) == expected_piece + end + + test "finds pieces on the board" do + board = Board.default + + piece = %{"type" => "pawn", "colour" => "white"} + expected_result = [ + {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}, {7, 1}, + ] + assert Board.search(board, piece) == expected_result + end + + test "finds a single piece on the board" do + board = Board.default + + piece = %{"type" => "king", "colour" => "black"} + assert Board.search(board, piece) == [{4, 7}] + end + + test "moves a piece" do + board = %{ + "3,0" => %{"type" => "queen", "colour" => "white"}, + } + + new_board = Board.move_piece(board, %{"from" => [3, 0], "to" => [5, 2]}) + + assert new_board == %{ + "5,2" => %{"type" => "queen", "colour" => "white"}, + } + end +end