コード例 #1
0
ファイル: BoardTest.java プロジェクト: scho/battleship
  @Test(expected = GameException.class)
  public void testIllegalPlacementThrowsException() {
    Ship ship = Ship.createHorizontal(new Position(9, 9), 1);
    Ship otherShip = Ship.createHorizontal(new Position(9, 9), 1);

    board.placeShip(ship);
    board.placeShip(otherShip);
  }
コード例 #2
0
ファイル: BoardTest.java プロジェクト: scho/battleship
  @Test
  public void testShipIsNotPlaceableIfOtherShipIsOnSpot() {
    board.placeShip(Ship.createHorizontal(new Position(0, 0), 5));

    Ship ship = Ship.createHorizontal(new Position(4, 0), 2);

    assertThat(board.shipIsPlaceable(ship), is(false));
  }
コード例 #3
0
ファイル: BoardTest.java プロジェクト: scho/battleship
  @Test
  public void testIsNotPlaceableIfOtherShipBordersInYDirection() {
    board.placeShip(Ship.createHorizontal(new Position(0, 1), 5));

    Ship ship = Ship.createHorizontal(new Position(0, 0), 1);

    assertThat(board.shipIsPlaceable(ship), is(false));
  }
コード例 #4
0
ファイル: BoardTest.java プロジェクト: scho/battleship
  @Test
  public void testAllShipsSunkIsTrueIfAllShipsWereFullyHit() {
    Ship ship = Ship.createHorizontal(new Position(0, 0), 2);

    board.placeShip(ship);
    board.shootAt(new Position(0, 0));
    board.shootAt(new Position(1, 0));

    assertThat(board.allShipsSunk(), is(true));
  }
コード例 #5
0
ファイル: BoardTest.java プロジェクト: scho/battleship
  @Test
  public void testAllShipsSunkIsFalseIfSomeShipsPartiallyRemain() {
    Ship ship = Ship.createHorizontal(new Position(0, 0), 2);
    Ship otherShip = Ship.createVertical(new Position(3, 3), 3);

    board.placeShip(ship);
    board.placeShip(otherShip);
    board.shootAt(new Position(0, 0));
    board.shootAt(new Position(1, 0));
    board.shootAt(new Position(3, 3));

    assertThat(board.allShipsSunk(), is(false));
  }
コード例 #6
0
 private BoardPosition processPosition(Position position) {
   if (board.positionWasShotAt(position)) {
     if (board.positionIsTakenByShip(position)) {
       Ship ship = board.getShipAtPosition(position);
       if (ship.sunk()) {
         return BoardPosition.createShipSunk();
       }
       return BoardPosition.createShipHit();
     }
     return BoardPosition.createWaterHit();
   }
   if (mask) {
     return BoardPosition.createUnknown();
   }
   if (board.positionIsTakenByShip(position)) {
     return BoardPosition.createShip();
   }
   return BoardPosition.createWater();
 }
コード例 #7
0
ファイル: BoardTest.java プロジェクト: scho/battleship
 @Test(expected = GameException.class)
 public void testIllegalVerticalPlacementThrowsException() {
   board.shootAt(new Position(0, 0));
   board.shootAt(new Position(0, 0));
 }
コード例 #8
0
ファイル: BoardTest.java プロジェクト: scho/battleship
 @Test
 public void testIsShootableAtIsTrueIfNotShotAt() {
   assertThat(board.positionIsShootableAt(new Position(0, 0)), is(true));
 }
コード例 #9
0
ファイル: BoardTest.java プロジェクト: scho/battleship
  @Test
  public void testIsShootableAtIsFalseIfAlreadyShotAt() {
    board.shootAt(new Position(0, 0));

    assertThat(board.positionIsShootableAt(new Position(0, 0)), is(false));
  }
コード例 #10
0
ファイル: BoardTest.java プロジェクト: scho/battleship
  @Test
  public void testIsPlaceableInCorner() {
    Ship ship = Ship.createHorizontal(new Position(9, 9), 1);

    assertThat(board.shipIsPlaceable(ship), is(true));
  }
コード例 #11
0
ファイル: BoardTest.java プロジェクト: scho/battleship
  @Test
  public void testIsNotPlaceableIfShipIsOutOfBoard() {
    Ship ship = Ship.createHorizontal(new Position(9, 9), 2);

    assertThat(board.shipIsPlaceable(ship), is(false));
  }
コード例 #12
0
ファイル: BoardTest.java プロジェクト: scho/battleship
  @Test
  public void testShipIsPlaceableNextToEdge() {
    Ship ship = Ship.createHorizontal(new Position(0, 9), 5);

    assertThat(board.shipIsPlaceable(ship), is(true));
  }
コード例 #13
0
ファイル: BoardTest.java プロジェクト: scho/battleship
  @Test
  public void testShipIsPlaceableForEmptyBoard() {
    Ship ship = Ship.createHorizontal(new Position(2, 2), 5);

    assertThat(board.shipIsPlaceable(ship), is(true));
  }