package com.proquest.chess; import static org.junit.Assert.assertEquals; import java.util.List; import org.junit.Before; import org.junit.Test; public class RookTest { private Board board; private Rook whiteRook; @Before public void setUp() { board = new Board(); whiteRook = new Rook(Color.White); } @Test public void shouldCreate14MovesForRook() { board.placePiece(whiteRook, new Position(4,4)); List moves = whiteRook.makeMoves(board); assertEquals (14, moves.size()); } @Test public void shouldHaveAllVerticalAndHorizontalMovesForRook() { Position start = new Position(4,4); board.placePiece(whiteRook, start); List moves = whiteRook.makeMoves(board); for (int x=start.getX()+1; x <8; ++x) ChessTestUtils.findMoveToSquare(moves, x, start.getY()); for (int x=start.getX()-1; x>=0; --x) ChessTestUtils.findMoveToSquare(moves, x, start.getY()); for (int y=start.getY()+1; y <8; ++y) ChessTestUtils.findMoveToSquare(moves, start.getX(), y); for (int y=start.getY()-1; y>=0; --y) ChessTestUtils.findMoveToSquare(moves, start.getX(), y); } @Test public void shouldMakeCorrectMoves_whenBlockedBySameAndDifferentColorPieces() { Position start = new Position(0,0); board.placePiece(whiteRook, start); Knight whiteKnight = new Knight(Color.White); board.placePiece(whiteKnight, new Position(2,0)); Knight blackKnight = new Knight(Color.Black); board.placePiece(blackKnight, new Position(0, 3)); List moves = whiteRook.makeMoves(board); assertEquals (4, moves.size()); ChessTestUtils.findMoveToSquare(moves, 1, 0); ChessTestUtils.findMoveToSquare(moves, 0, 1); ChessTestUtils.findMoveToSquare(moves, 0, 2); Move capturingMove = ChessTestUtils.findMoveToSquare(moves, 0, 3); assertEquals (blackKnight, capturingMove.getCapture()); } }