/* * PawnTest.java * JUnit based test * * Created on February 10, 2007, 7:11 PM */ package chess; import junit.framework.*; /** * * @author Stanislav Hromek */ public class PawnTest extends TestCase { public PawnTest(String testName) { super(testName); } protected void setUp() throws Exception { } protected void tearDown() throws Exception { } public static Test suite() { TestSuite suite = new TestSuite(PawnTest.class); return suite; } public void testIsRoadOk() { System.out.println("isRoadOk"); Board board = new Board(); String color = "white"; CurrentMoveInfo currentMoveInfo = new CurrentMoveInfo(); Pawn pawn = new Pawn(color); boolean result; currentMoveInfo.movePieceFrom = "e2"; currentMoveInfo.movePieceTo = "e4"; result = pawn.isRoadOk(board, currentMoveInfo.movePieceFrom, currentMoveInfo.movePieceTo); assertEquals(true, result); currentMoveInfo.movePieceFrom = "e2"; currentMoveInfo.movePieceTo = "a3"; result = pawn.isRoadOk(board, currentMoveInfo.movePieceFrom, currentMoveInfo.movePieceTo); assertEquals(true, result); board.getSquare("b3").setPiece(new Queen("black")); currentMoveInfo.movePieceFrom = "b2"; currentMoveInfo.movePieceTo = "b4"; result = pawn.isRoadOk(board, currentMoveInfo.movePieceFrom, currentMoveInfo.movePieceTo); assertEquals(false, result); } /** * this is little bit complicated * pawn can move: * forwards one square * forwards two squares if in starting position * can take opposite piece to the sides * can take opposite pawn if it moved two squares on the middle square */ public void testPossibleToMoveToEndSquare() { System.out.println("possibleToMoveToEndSquare"); Board board = new Board(); String color = "white"; CurrentMoveInfo currentMoveInfo = new CurrentMoveInfo(); boolean result; // forwards one square board.getSquare("e2").setPiece(new Pawn("white")); Pawn pawn = (Pawn)board.getSquare("e2").getPiece(); Move move = new Move(8, "e2-e3", "e7-e5"); currentMoveInfo = move.extractInfoFromString(color, currentMoveInfo); result = pawn.possibleToMoveToEndSquare(board, currentMoveInfo.movePieceFrom, currentMoveInfo.movePieceTo); assertEquals(true, result); // forwards two squares if in starting position board.getSquare("e2").setPiece(new Pawn("white")); pawn = (Pawn)board.getSquare("e2").getPiece(); move = new Move(8, "e2-e4", "e7-e5"); currentMoveInfo = move.extractInfoFromString(color, currentMoveInfo); result = pawn.possibleToMoveToEndSquare(board, currentMoveInfo.movePieceFrom, currentMoveInfo.movePieceTo); assertEquals(true, result); // two forward but end square not empty board.getSquare("e4").setPiece(new Queen("white")); board.getSquare("e2").setPiece(new Pawn("white")); pawn = (Pawn)board.getSquare("e2").getPiece(); move = new Move(8, "e2-e4", "e7-e5"); currentMoveInfo = move.extractInfoFromString(color, currentMoveInfo); result = pawn.possibleToMoveToEndSquare(board, currentMoveInfo.movePieceFrom, currentMoveInfo.movePieceTo); assertEquals(false, result); // exchange, but end square is empty board.getSquare("d3").setPiece(null); board.getSquare("e2").setPiece(new Pawn("white")); pawn = (Pawn)board.getSquare("e2").getPiece(); move = new Move(8, "e2xd3", "e7-e5"); currentMoveInfo = move.extractInfoFromString(color, currentMoveInfo); result = pawn.possibleToMoveToEndSquare(board, currentMoveInfo.movePieceFrom, currentMoveInfo.movePieceTo); assertEquals(false, result); // exchange, ok board.getSquare("d3").setPiece(new Queen("black")); board.getSquare("e2").setPiece(new Pawn("white")); pawn = (Pawn)board.getSquare("e2").getPiece(); move = new Move(8, "e2xd3", "e7-e5"); currentMoveInfo = move.extractInfoFromString(color, currentMoveInfo); result = pawn.possibleToMoveToEndSquare(board, currentMoveInfo.movePieceFrom, currentMoveInfo.movePieceTo); assertEquals(true, result); // exchange pawn, which moved two squares, so square is empty Game.previousPawnMove = "d6"; board.getSquare("e5").setPiece(new Pawn("white")); pawn = (Pawn)board.getSquare("e2").getPiece(); move = new Move(8, "e5xd6", "e7-e5"); currentMoveInfo = move.extractInfoFromString(color, currentMoveInfo); result = pawn.possibleToMoveToEndSquare(board, currentMoveInfo.movePieceFrom, currentMoveInfo.movePieceTo); assertEquals(false, result); } }