1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/chess/src/test/java/com/oracle/chess/client/htmljava/BoardModelTest.java Tue Sep 24 22:20:24 2013 +0200
1.3 @@ -0,0 +1,537 @@
1.4 +/**
1.5 + * The MIT License (MIT)
1.6 + *
1.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
1.8 + *
1.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
1.10 + * of this software and associated documentation files (the "Software"), to deal
1.11 + * in the Software without restriction, including without limitation the rights
1.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1.13 + * copies of the Software, and to permit persons to whom the Software is
1.14 + * furnished to do so, subject to the following conditions:
1.15 + *
1.16 + * The above copyright notice and this permission notice shall be included in
1.17 + * all copies or substantial portions of the Software.
1.18 + *
1.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1.25 + * THE SOFTWARE.
1.26 + */
1.27 +package com.oracle.chess.client.htmljava;
1.28 +
1.29 +import com.oracle.chess.client.htmljava.BoardModel.PieceType;
1.30 +import java.util.Arrays;
1.31 +import java.util.Collections;
1.32 +import java.util.List;
1.33 +import static org.testng.Assert.*;
1.34 +import org.testng.annotations.Test;
1.35 +
1.36 +/**
1.37 + *
1.38 + * @author Jaroslav Tulach <jtulach@netbeans.org>
1.39 + */
1.40 +public class BoardModelTest {
1.41 +
1.42 + public BoardModelTest() {
1.43 + }
1.44 +
1.45 + @Test public void whiteRockLeftBottom() {
1.46 + Board b = Rules.createBoard();
1.47 + Row bottom = b.getRows().get(7);
1.48 + Square left = bottom.getColumns().get(0);
1.49 + assertEquals(left.getPiece(), PieceType.ROCK, "Rock is on bottom left square");
1.50 + assertEquals(left.getPieceColor(), Color.W, "It is white");
1.51 + assertEquals(left.getColor(), Color.B, "Square is black");
1.52 + }
1.53 +
1.54 + @Test public void e2e4e7e6() {
1.55 + Board b = Rules.createBoard();
1.56 + b.setGameId("myId");
1.57 + setPlayer(b, Color.W);
1.58 + assertEquals(b.getTurn(), Color.W);
1.59 +
1.60 + Square e2 = BoardModel.findSquare(b, 'E', 2);
1.61 + assertNotNull(e2);
1.62 + BoardModel.selected(b, e2);
1.63 + assertEquals(BoardModel.findSelectedSquare(b), e2, "E2 is selected");
1.64 +
1.65 + Square e4 = BoardModel.findSquare(b, 'E', 4);
1.66 + assertNotNull(e4);
1.67 +
1.68 + BoardModel.selected(b, e4);
1.69 +
1.70 + assertTrue(e4.isPending(), "e4 marked as pending move");
1.71 + assertNull(e2.getPiece(), "No pawn at e2");
1.72 +
1.73 + // ignore all other figures than the two pawns
1.74 + BoardModel.moveResponse(b, null, Collections.singletonList("Pe4"),
1.75 + Collections.singletonList("Pe7"), Color.B, null
1.76 + );
1.77 +
1.78 + assertFalse(e4.isPending(), "e4 now the move is real");
1.79 + assertNull(e2.getPiece(), "No pawn at e2");
1.80 + assertEquals(e4.getPiece(), BoardModel.PieceType.PAWN, "Pawn moved successfully");
1.81 + assertNull(BoardModel.findSelectedSquare(b), "No square selected");
1.82 +
1.83 + BoardModel.selected(b, e4);
1.84 + assertNull(BoardModel.findSelectedSquare(b), "No square selected, it is blacks turn");
1.85 +
1.86 + List<Move> mvs1 = b.getMoves();
1.87 + assertEquals(1, mvs1.size(), "First move was made: " + mvs1);
1.88 + Move firstMove = mvs1.get(0);
1.89 + assertEquals(firstMove.getPiece(), PieceType.PAWN, "Moving with pawn");
1.90 + assertEquals(firstMove.getRound(), 1, "First round of moves");
1.91 + assertEquals(firstMove.getTurn(), Color.W, "Moved by white");
1.92 + assertTrue(firstMove.isWhiteMove(), "Really moved by white");
1.93 +
1.94 + assertTrue(b.isBlackTurn(), "black's turn");
1.95 +
1.96 +
1.97 + Square e7 = BoardModel.findSquare(b, 'E', 7);
1.98 + BoardModel.selected(b, e7);
1.99 + assertNull(BoardModel.findSelectedSquare(b), "Can't select anything when I am white player");
1.100 +
1.101 + Move blackMv = BoardModel.MoveImpl.valueOf("E7E6");
1.102 + BoardModel.moveUpdate(b, blackMv,
1.103 + Collections.singletonList("PE4"),
1.104 + Collections.singletonList("PE6"),
1.105 + Color.W, null
1.106 + );
1.107 +
1.108 + assertNull(e7.getPiece(), "Piece has been moved");
1.109 +
1.110 + List<Move> mvs = b.getMoves();
1.111 + assertEquals(2, mvs.size(), "There are two moves now: " + mvs);
1.112 + Move secondMove = mvs.get(1);
1.113 + assertEquals(secondMove.getPiece(), PieceType.PAWN, "Moving with pawn");
1.114 + assertEquals(secondMove.getRound(), 1, "Still 1st round of moves");
1.115 + assertEquals(secondMove.getTurn(), Color.B, "Moved by black");
1.116 + assertFalse(secondMove.isWhiteMove(), "Really moved by black");
1.117 + }
1.118 +
1.119 + @Test public void unselect() {
1.120 + Board b = Rules.createBoard();
1.121 + b.setGameId("myId");
1.122 + setPlayer(b, Color.W);
1.123 + assertEquals(b.getTurn(), Color.W);
1.124 +
1.125 + Square e2 = BoardModel.findSquare(b, 'E', 2);
1.126 + assertNotNull(e2);
1.127 + BoardModel.selected(b, e2);
1.128 + assertEquals(BoardModel.findSelectedSquare(b), e2, "E2 is selected");
1.129 +
1.130 + BoardModel.selected(b, e2);
1.131 + assertNull(BoardModel.findSelectedSquare(b), "E2 is unselected");
1.132 +
1.133 + for (Row row : b.getRows()) {
1.134 + for (Square s : row.getColumns()) {
1.135 + assertFalse(s.isAccessible(), "No square is accessible anymore: " + s);
1.136 + }
1.137 + }
1.138 + }
1.139 +
1.140 + @Test public void discaredMove() {
1.141 + Board b = Rules.createBoard();
1.142 + b.setGameId("myId");
1.143 + setPlayer(b, Color.W);
1.144 + assertEquals(b.getTurn(), Color.W);
1.145 +
1.146 + Square e2 = BoardModel.findSquare(b, 'E', 2);
1.147 + assertNotNull(e2);
1.148 + BoardModel.selected(b, e2);
1.149 + assertEquals(BoardModel.findSelectedSquare(b), e2, "E2 is selected");
1.150 +
1.151 + Square e4 = BoardModel.findSquare(b, 'E', 4);
1.152 + assertNotNull(e4);
1.153 +
1.154 + BoardModel.selected(b, e4);
1.155 +
1.156 + assertTrue(e4.isPending(), "e4 marked as pending move");
1.157 + assertNull(e2.getPiece(), "No pawn at e2");
1.158 +
1.159 + assertEquals(b.getMoves().size(), 1, "One move recorded");
1.160 + assertEquals(b.getMoves().get(0), b.getPendingMove(), "Pending move is waiting");
1.161 +
1.162 + // ignore all other figures than the two pawns
1.163 + BoardModel.moveResponse(b, "No way, can't play like this", Collections.singletonList("PE2"),
1.164 + Collections.singletonList("Pe7"), Color.W, null
1.165 + );
1.166 +
1.167 + assertEquals(b.getAlertMessage(), "No way, can't play like this");
1.168 + assertNull(e4.getPiece(), "No piece on e4");
1.169 + assertEquals(e2.getPiece(), PieceType.PAWN, "Pawn is back");
1.170 +
1.171 + assertEquals(b.getMoves().size(), 0, "Move was discarded");
1.172 + assertNull(b.getPendingMove(), "No pending moves");
1.173 + }
1.174 +
1.175 + @Test public void cantSelectEmptySquare() {
1.176 + Board b = Rules.createBoard();
1.177 + Square e3 = BoardModel.findSquare(b, 'E', 3);
1.178 + assertNotNull(e3);
1.179 + BoardModel.selected(b, e3);
1.180 + assertNull(BoardModel.findSelectedSquare(b), "No square is selected");
1.181 + }
1.182 +
1.183 + @Test public void cantTakeOwnPiece() {
1.184 + Board b = Rules.createBoard();
1.185 + setPlayer(b, Color.W);
1.186 + Square e1 = BoardModel.findSquare(b, 'E', 1);
1.187 + assertNotNull(e1);
1.188 + BoardModel.selected(b, e1);
1.189 + assertEquals(BoardModel.findSelectedSquare(b), e1, "E1 is selected");
1.190 +
1.191 + Square e2 = BoardModel.findSquare(b, 'E', 2);
1.192 + assertNotNull(e2);
1.193 +
1.194 + BoardModel.selected(b, e2);
1.195 +
1.196 + assertNotNull(e1.getPiece(), "King remains at e1");
1.197 + assertEquals(e2.getPiece(), BoardModel.PieceType.PAWN, "Pawn remains");
1.198 + assertEquals(BoardModel.findSelectedSquare(b), e2, "e2 now selected");
1.199 +
1.200 + }
1.201 +
1.202 + @Test public void knightMustMoveToF3() {
1.203 + Board b = Rules.createBoard();
1.204 + setPlayer(b, Color.W);
1.205 + Square g1 = BoardModel.findSquare(b, 'G', 1);
1.206 + BoardModel.selected(b, g1);
1.207 +
1.208 + Square f3 = BoardModel.findSquare(b, 'F', 3);
1.209 + assertTrue(f3.isAccessible(), "This is a field where knight can move");
1.210 +
1.211 + Square g3 = BoardModel.findSquare(b, 'G', 3);
1.212 + assertFalse(g3.isAccessible(), "Not a place for knight");
1.213 +
1.214 + Square e2 = BoardModel.findSquare(b, 'E', 2);
1.215 + assertFalse(e2.isAccessible(), "Not a place either, occupied");
1.216 +
1.217 + BoardModel.selected(b, g3);
1.218 +
1.219 + assertNull(g3.getPiece(), "No figure was moved");
1.220 + assertTrue(g1.isSelected(), "Original square still selected");
1.221 +
1.222 + BoardModel.selected(b, f3);
1.223 +
1.224 + assertEquals(f3.getPiece(), PieceType.KNIGHT, "Moved");
1.225 + assertFalse(g3.isSelected(), "No longer selected");
1.226 + }
1.227 +
1.228 + @Test public void pawnCanTakeToSide() {
1.229 + Board b = Rules.createBoard();
1.230 + Square e2 = BoardModel.findSquare(b, 'E', 2);
1.231 + Square e4 = BoardModel.findSquare(b, 'E', 4);
1.232 + Square d7 = BoardModel.findSquare(b, 'D', 7);
1.233 + Square d5 = BoardModel.findSquare(b, 'D', 5);
1.234 +
1.235 + BoardModel.selected(b, e2);
1.236 + BoardModel.selected(b, e4);
1.237 +
1.238 + // ignore all other figures than the two pawns
1.239 + BoardModel.moveResponse(b, null, Collections.singletonList("PE4"),
1.240 + Collections.singletonList("PD7"), Color.B, null
1.241 + );
1.242 +
1.243 + setPlayer(b, Color.B);
1.244 +
1.245 + BoardModel.selected(b, d7);
1.246 + BoardModel.selected(b, d5);
1.247 +
1.248 + // ignore all other figures than the two pawns
1.249 + BoardModel.moveResponse(b, null, Collections.singletonList("PE4"),
1.250 + Collections.singletonList("PD5"), Color.W, null
1.251 + );
1.252 +
1.253 + setPlayer(b, Color.W);
1.254 +
1.255 + BoardModel.selected(b, e4);
1.256 + assertTrue(d5.isAccessible(), "Can take on d5");
1.257 + BoardModel.selected(b, d5);
1.258 + assertNull(e4.getPiece(), "No pawn on e4");
1.259 + assertEquals(d5.getPieceColor(), Color.W, "White Pawn on d5");
1.260 + }
1.261 +
1.262 + @Test public void pawnCanJumpOnAnother() {
1.263 + Board b = Rules.createBoard();
1.264 + Square e2 = BoardModel.findSquare(b, 'E', 2);
1.265 + Square e4 = BoardModel.findSquare(b, 'E', 4);
1.266 + Square d7 = BoardModel.findSquare(b, 'D', 7);
1.267 + Square d5 = BoardModel.findSquare(b, 'D', 5);
1.268 + Square e7 = BoardModel.findSquare(b, 'E', 7);
1.269 + Square e6 = BoardModel.findSquare(b, 'E', 6);
1.270 + Square e5 = BoardModel.findSquare(b, 'E', 5);
1.271 +
1.272 + BoardModel.selected(b, e2);
1.273 + BoardModel.selected(b, e4);
1.274 +
1.275 + // ignore all other figures than the three pawns
1.276 + BoardModel.moveResponse(b, null, Collections.singletonList("PE4"),
1.277 + Arrays.asList("PD7", "PE7"), Color.B, null
1.278 + );
1.279 +
1.280 + setPlayer(b, Color.B);
1.281 +
1.282 + BoardModel.selected(b, d7);
1.283 + BoardModel.selected(b, d5);
1.284 +
1.285 + // ignore all other figures than the three pawns
1.286 + BoardModel.moveResponse(b, null, Collections.singletonList("PE4"),
1.287 + Arrays.asList("PD5", "PE7"), Color.W, null
1.288 + );
1.289 +
1.290 + setPlayer(b, Color.W);
1.291 +
1.292 + BoardModel.selected(b, e4);
1.293 + BoardModel.selected(b, e5);
1.294 +
1.295 + // ignore all other figures than the three pawns
1.296 + BoardModel.moveResponse(b, null, Collections.singletonList("PE5"),
1.297 + Arrays.asList("PD5", "PE7"), Color.B, null
1.298 + );
1.299 +
1.300 + setPlayer(b, Color.B);
1.301 +
1.302 + BoardModel.selected(b, e7);
1.303 + assertTrue(e6.isAccessible(), "Can move by one piece");
1.304 + assertFalse(e5.isAccessible(), "Can't move where other pawn is");
1.305 + }
1.306 +
1.307 + @Test public void showFirstMove() {
1.308 + Board b = Rules.createBoard();
1.309 + setPlayer(b, Color.W);
1.310 + Square e2 = BoardModel.findSquare(b, 'E', 2);
1.311 + Square e4 = BoardModel.findSquare(b, 'E', 4);
1.312 + Square d7 = BoardModel.findSquare(b, 'D', 7);
1.313 + Square d5 = BoardModel.findSquare(b, 'D', 5);
1.314 +
1.315 + BoardModel.selected(b, e2);
1.316 + BoardModel.selected(b, e4);
1.317 +
1.318 + // ignore all other figures than the two pawns
1.319 + BoardModel.moveResponse(b, null, Collections.singletonList("Pe4"),
1.320 + Collections.singletonList("PD7"), Color.B, null
1.321 + );
1.322 +
1.323 + Move blackMv = BoardModel.MoveImpl.valueOf("D7D5");
1.324 + BoardModel.moveUpdate(b, blackMv,
1.325 + Collections.singletonList("PE4"),
1.326 + Collections.singletonList("PD5"),
1.327 + Color.W, null
1.328 + );
1.329 +
1.330 +
1.331 + assertEquals(b.getMoves().size(), 2, "Two moves");
1.332 + BoardModel.showPosition(b, b.getMoves().get(0));
1.333 +
1.334 + assertEquals(b.getRows().size(), 8, "Still eight rows");
1.335 + assertEquals(b.getRows().get(0).getColumns().size(), 8, "Eight columns");
1.336 +
1.337 + assertNull(e2.getPiece(), "e2 is empty");
1.338 + assertEquals(e4.getPiece(), PieceType.PAWN, "e4 has pawn");
1.339 + assertEquals(d7.getPiece(), PieceType.PAWN, "d7 has pawn");
1.340 + assertNull(d5.getPiece(), "Second move is not made");
1.341 + assertNull(b.getTurn(), "Nobody to make a move");
1.342 + }
1.343 +
1.344 + @Test public void initialPositionReadFromAServer() {
1.345 + List<String> blacks = Arrays.asList(
1.346 + "Pa7",
1.347 + "Pb7",
1.348 + "Pc7",
1.349 + "Pd7",
1.350 + "Pe7",
1.351 + "Pf7",
1.352 + "Pg7",
1.353 + "Ph7",
1.354 + "Ra8",
1.355 + "Nb8",
1.356 + "Bc8",
1.357 + "Qd8",
1.358 + "Ke8",
1.359 + "Bf8",
1.360 + "Ng8",
1.361 + "Rh8"
1.362 + );
1.363 + List<String> whites = Arrays.asList(
1.364 + "Ra1",
1.365 + "Nb1",
1.366 + "Bc1",
1.367 + "Qd1",
1.368 + "Ke1",
1.369 + "Bf1",
1.370 + "Ng1",
1.371 + "Rh1",
1.372 + "Pa2",
1.373 + "Pb2",
1.374 + "Pc2",
1.375 + "Pd2",
1.376 + "Pe2",
1.377 + "Pf2",
1.378 + "Pg2",
1.379 + "Ph2"
1.380 + );
1.381 +
1.382 + Board b = Rules.createBoard();
1.383 + Rules.initBoard(b, whites, blacks, Color.W);
1.384 +
1.385 + Board b2 = Rules.createBoard();
1.386 + Rules.initBoard(b2);
1.387 +
1.388 + for (int i = 0; i < 7; i++) {
1.389 + for (int j = 0; j < 7; j++) {
1.390 + Square s = b.getRows().get(i).getColumns().get(j);
1.391 + Square s2 = b2.getRows().get(i).getColumns().get(j);
1.392 +
1.393 + assertEquals(s.getPiece(), s2.getPiece(), "Same piece at " + i + "/" + j);
1.394 + assertEquals(s.getPieceColor(), s2.getPieceColor(), "Same piece color at " + i + "/" + j);
1.395 + }
1.396 + }
1.397 + }
1.398 +
1.399 + @Test public void allowSmallRochade() {
1.400 + Board b = Rules.createBoard();
1.401 + setPlayer(b, Color.W);
1.402 + Square f1 = BoardModel.findSquare(b, 'F', 1);
1.403 + f1.setPiece(null);
1.404 + f1.setPieceColor(null);
1.405 + Square g1 = BoardModel.findSquare(b, 'G', 1);
1.406 + g1.setPiece(null);
1.407 + g1.setPieceColor(null);
1.408 + Square e1 = BoardModel.findSquare(b, 'E', 1);
1.409 +
1.410 + BoardModel.selected(b, e1);
1.411 + assertTrue(g1.isAccessible(), "Can do 0-0");
1.412 + }
1.413 +
1.414 + @Test public void allowSmallRochadeForBlack() {
1.415 + Board b = Rules.createBoard();
1.416 + setPlayer(b, Color.B);
1.417 + b.setTurn(Color.B);
1.418 + Square f8 = BoardModel.findSquare(b, 'F', 8);
1.419 + f8.setPiece(null);
1.420 + f8.setPieceColor(null);
1.421 + Square g8 = BoardModel.findSquare(b, 'G', 8);
1.422 + g8.setPiece(null);
1.423 + g8.setPieceColor(null);
1.424 + Square e8 = BoardModel.findSquare(b, 'E', 8);
1.425 +
1.426 + BoardModel.selected(b, e8);
1.427 + assertTrue(g8.isAccessible(), "Can do 0-0");
1.428 + }
1.429 +
1.430 + @Test public void disallowSmallRochadeWhenNoRock() {
1.431 + Board b = Rules.createBoard();
1.432 + setPlayer(b, Color.W);
1.433 + Square f1 = BoardModel.findSquare(b, 'F', 1);
1.434 + f1.setPiece(null);
1.435 + f1.setPieceColor(null);
1.436 + Square g1 = BoardModel.findSquare(b, 'G', 1);
1.437 + g1.setPiece(null);
1.438 + g1.setPieceColor(null);
1.439 + Square h1 = BoardModel.findSquare(b, 'H', 1);
1.440 + h1.setPiece(null);
1.441 + h1.setPieceColor(null);
1.442 + Square e1 = BoardModel.findSquare(b, 'E', 1);
1.443 +
1.444 + BoardModel.selected(b, e1);
1.445 + assertFalse(g1.isAccessible(), "Cannot do 0-0 when there is no rock");
1.446 + }
1.447 +
1.448 + @Test public void disallowSmallRochadeWhenBishop() {
1.449 + Board b = Rules.createBoard();
1.450 + setPlayer(b, Color.W);
1.451 + Square g1 = BoardModel.findSquare(b, 'G', 1);
1.452 + g1.setPiece(null);
1.453 + Square e1 = BoardModel.findSquare(b, 'E', 1);
1.454 +
1.455 + BoardModel.selected(b, e1);
1.456 + assertFalse(g1.isAccessible(), "Cannot do 0-0 when there is bishop");
1.457 + }
1.458 +
1.459 + @Test public void disallowSmallRochadeWhenKnight() {
1.460 + Board b = Rules.createBoard();
1.461 + setPlayer(b, Color.W);
1.462 + Square f1 = BoardModel.findSquare(b, 'F', 1);
1.463 + f1.setPiece(null);
1.464 + Square e1 = BoardModel.findSquare(b, 'E', 1);
1.465 +
1.466 + BoardModel.selected(b, e1);
1.467 + assertFalse(f1.isAccessible(), "Cannot do 0-0 when there is knight");
1.468 + }
1.469 +
1.470 + @Test public void allowBigRochadeForBlack() {
1.471 + Board b = Rules.createBoard();
1.472 + setPlayer(b, Color.B);
1.473 + b.setTurn(Color.B);
1.474 + Square b8 = BoardModel.findSquare(b, 'B', 8);
1.475 + b8.setPiece(null);
1.476 + b8.setPieceColor(null);
1.477 + Square c8 = BoardModel.findSquare(b, 'C', 8);
1.478 + c8.setPiece(null);
1.479 + c8.setPieceColor(null);
1.480 + Square d8 = BoardModel.findSquare(b, 'D', 8);
1.481 + d8.setPiece(null);
1.482 + d8.setPieceColor(null);
1.483 + Square e8 = BoardModel.findSquare(b, 'E', 8);
1.484 +
1.485 + BoardModel.selected(b, e8);
1.486 + assertTrue(c8.isAccessible(), "Can do 0-0-0");
1.487 + }
1.488 +
1.489 + @Test public void enPassant() {
1.490 + Board b = Rules.createBoard();
1.491 + setPlayer(b, Color.B);
1.492 + b.setTurn(Color.B);
1.493 +
1.494 + Square e7 = BoardModel.findSquare(b, 'E', 7);
1.495 + Square e4 = BoardModel.findSquare(b, 'E', 4);
1.496 + movePiece(e7, e4);
1.497 +
1.498 + Move move = new Move();
1.499 + move.setFrom(position('D', 2));
1.500 + move.setTo(position('D', 4));
1.501 + move.setPiece(PieceType.PAWN);
1.502 + b.getMoves().add(move);
1.503 +
1.504 + Square d2 = BoardModel.findSquare(b, 'D', 2);
1.505 + Square d4 = BoardModel.findSquare(b, 'D', 4);
1.506 + movePiece(d2, d4);
1.507 +
1.508 + BoardModel.selected(b, e4);
1.509 +
1.510 + Square e3 = BoardModel.findSquare(b, 'E', 3);
1.511 + assertTrue(e3.isAccessible(), "Obviously can move to e3");
1.512 +
1.513 + Square d3 = BoardModel.findSquare(b, 'D', 3);
1.514 + assertTrue(d3.isAccessible(), "Can also take on d3");
1.515 + }
1.516 +
1.517 + private void movePiece(Square from, Square to) {
1.518 + to.setPiece(from.getPiece());
1.519 + to.setPieceColor(from.getPieceColor());
1.520 + from.setPiece(null);
1.521 + from.setPieceColor(null);
1.522 + }
1.523 +
1.524 + private Position position(char c, int i) {
1.525 + Position p = new Position();
1.526 + p.setX(c);
1.527 + p.setY(i);
1.528 + return p;
1.529 + }
1.530 +
1.531 + private static void setPlayer(Board b, Color c) {
1.532 + b.setWhitePlayer("x");
1.533 + b.setBlackPlayer("y");
1.534 + if (c == Color.B) {
1.535 + b.setPlayer("y");
1.536 + } else {
1.537 + b.setPlayer("x");
1.538 + }
1.539 + }
1.540 +}