1.1 --- a/chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java Thu Jul 25 21:04:25 2013 +0200
1.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java Thu Jul 25 21:19:14 2013 +0200
1.3 @@ -40,11 +40,16 @@
1.4 data.setSelected(true);
1.5 }
1.6 } else {
1.7 + previoslySelected.setSelected(false);
1.8 + if (data.getPiece() != null && data.getPieceColor() == previoslySelected.getPieceColor()) {
1.9 + previoslySelected.setSelected(false);
1.10 + data.setSelected(true);
1.11 + return;
1.12 + }
1.13 data.setPieceColor(previoslySelected.getPieceColor());
1.14 data.setPiece(previoslySelected.getPiece());
1.15 previoslySelected.setPiece(null);
1.16 previoslySelected.setPieceColor(null);
1.17 - previoslySelected.setSelected(false);
1.18 }
1.19 }
1.20
2.1 --- a/chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java Thu Jul 25 21:04:25 2013 +0200
2.2 +++ b/chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java Thu Jul 25 21:19:14 2013 +0200
2.3 @@ -61,5 +61,23 @@
2.4 BoardModel.selected(b, e3);
2.5 assertNull(BoardModel.findSelectedSquare(b), "No square is selected");
2.6 }
2.7 +
2.8 + @Test public void cantTakeOwnPiece() {
2.9 + Board b = BoardModel.createBoard();
2.10 + Square e1 = BoardModel.findSquare(b, 'E', 1);
2.11 + assertNotNull(e1);
2.12 + BoardModel.selected(b, e1);
2.13 + assertEquals(BoardModel.findSelectedSquare(b), e1, "E1 is selected");
2.14 +
2.15 + Square e2 = BoardModel.findSquare(b, 'E', 2);
2.16 + assertNotNull(e2);
2.17 +
2.18 + BoardModel.selected(b, e2);
2.19 +
2.20 + assertNotNull(e1.getPiece(), "King remains at e1");
2.21 + assertEquals(e2.getPiece(), BoardModel.PieceType.PAWN, "Pawn remains");
2.22 + assertEquals(BoardModel.findSelectedSquare(b), e2, "e2 now selected");
2.23 +
2.24 + }
2.25
2.26 }