public void TestBattleshipBoardAttack() { List <Coordinate> battleship1Coords = new List <Coordinate> { new Coordinate(0, 0), new Coordinate(0, 1), new Coordinate(0, 2) }; Battleship battleship1 = new Battleship(battleship1Coords); List <Coordinate> battleship2Coords = new List <Coordinate> { new Coordinate(2, 1), new Coordinate(3, 1), new Coordinate(4, 1) }; Battleship battleship2 = new Battleship(battleship2Coords); BattleshipBoard board = new BattleshipBoard(new List <Battleship> { battleship1, battleship2 }); // Destroy Battleship1 board.Attack(new Coordinate(0, 0)); board.Attack(new Coordinate(0, 1)); board.Attack(new Coordinate(0, 2)); Assert.IsTrue(!board.IsLost()); Assert.IsTrue(board.RemainingBattleships == 1); // Destroy Battleship 2 board.Attack(new Coordinate(2, 1)); board.Attack(new Coordinate(3, 1)); board.Attack(new Coordinate(4, 1)); Assert.IsTrue(board.IsLost()); Assert.IsTrue(board.RemainingBattleships == 0); // Redestroy Battleship 2 and check state is still lost board.Attack(new Coordinate(0, 0)); board.Attack(new Coordinate(0, 1)); board.Attack(new Coordinate(0, 2)); Assert.IsTrue(board.IsLost()); Assert.IsTrue(board.RemainingBattleships == 0); }