1.1 --- a/chess/src/main/java/org/apidesign/html/demo/chess/Rules.java Fri Jul 26 17:14:25 2013 +0200
1.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/Rules.java Fri Jul 26 17:21:50 2013 +0200
1.3 @@ -126,5 +126,14 @@
1.4 }
1.5 }
1.6 }
1.7 + BoardModel.ColorType opposite = white ? BoardModel.ColorType.BLACK : BoardModel.ColorType.WHITE;
1.8 + Square takeLeft = BoardModel.findSquare(b, (char)(s.getX() - 1), s.getY() + dy);
1.9 + if (takeLeft != null && takeLeft.getPieceColor() == opposite) {
1.10 + takeLeft.setAccessible(true);
1.11 + }
1.12 + Square takeRight = BoardModel.findSquare(b, (char)(s.getX() + 1), s.getY() + dy);
1.13 + if (takeRight != null && takeRight.getPieceColor() == opposite) {
1.14 + takeRight.setAccessible(true);
1.15 + }
1.16 }
1.17 }
2.1 --- a/chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java Fri Jul 26 17:14:25 2013 +0200
2.2 +++ b/chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java Fri Jul 26 17:21:50 2013 +0200
2.3 @@ -120,4 +120,23 @@
2.4 assertEquals(f3.getPiece(), PieceType.KNIGHT, "Moved");
2.5 assertFalse(g3.isSelected(), "No longer selected");
2.6 }
2.7 +
2.8 + @Test public void pawnCanTakeToSide() {
2.9 + Board b = BoardModel.createBoard();
2.10 + Square e2 = BoardModel.findSquare(b, 'E', 2);
2.11 + Square e4 = BoardModel.findSquare(b, 'E', 4);
2.12 + Square d7 = BoardModel.findSquare(b, 'D', 7);
2.13 + Square d5 = BoardModel.findSquare(b, 'D', 5);
2.14 +
2.15 + BoardModel.selected(b, e2);
2.16 + BoardModel.selected(b, e4);
2.17 + BoardModel.selected(b, d7);
2.18 + BoardModel.selected(b, d5);
2.19 +
2.20 + BoardModel.selected(b, e4);
2.21 + assertTrue(d5.isAccessible(), "Can take on d5");
2.22 + BoardModel.selected(b, d5);
2.23 + assertNull(e4.getPiece(), "No pawn on e4");
2.24 + assertEquals(d5.getPieceColor(), ColorType.WHITE, "White Pawn on d5");
2.25 + }
2.26 }