Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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[]
Exemplo n.º 3
0
        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();
        }