public void Should_GetTheOnlyUnusedField_WhenAllOtherFieldsWereUsed(int gridSize) { // Arrange var gameBoard = new GameBoard(gridSize, Enumerable.Empty <Ship>()); var aiPlayer = new AIPlayer(gameBoard); var previousShotResults = Enumerable.Range(1, gridSize) .SelectMany(x => Enumerable.Range(1, gridSize) .Select(y => new ShotResult(new GameField(x, y), ShotResultType.Miss))) .ToList(); var lastShotResult = previousShotResults.Last(); previousShotResults.Remove(lastShotResult); foreach (var shotResult in previousShotResults) { gameBoard.AddShotResult(shotResult); } // Act var gameField = aiPlayer.GetGameFieldToShoot(); // Assert gameField.Should().NotBeNull(); gameField.Should().Be(lastShotResult.GameField); previousShotResults.Any(x => x.GameField == gameField).Should().BeFalse(); }
public void Should_GetCorrectMostProbableField_AfterHittingShip(int triedPositionsCount) { // Arrange var gridSize = 10; var gameBoard = new GameBoard(gridSize, Enumerable.Empty <Ship>()); var aiPlayer = new AIPlayer(gameBoard); const int x = 2; const int y = 3; var lastShotResult = new ShotResult(new GameField(x, y), ShotResultType.Hit, ShipType.Battleship); gameBoard.AddShotResult(lastShotResult); var randomGameField = aiPlayer.GetGameFieldToShoot(); var nextPositions = new[]
public void Should_GetRandomUnusedField_WhenShootingFirstTime(int gridSize) { // Arrange var gameBoard = new GameBoard(gridSize, Enumerable.Empty <Ship>()); var aiPlayer = new AIPlayer(gameBoard); var previousShotResults = Enumerable.Empty <ShotResult>(); // Act var gameField = aiPlayer.GetGameFieldToShoot(); // Assert gameField.Should().NotBeNull(); gameField.X.Should().BeLessOrEqualTo(gridSize); gameField.X.Should().BePositive(); gameField.Y.Should().BePositive(); gameField.Y.Should().BeLessOrEqualTo(gridSize); previousShotResults.Any(x => x.GameField == gameField).Should().BeFalse(); }