public Field[,] GenerateGameBoard(int dimX, int dimY) { dimX = AdjustDimension(dimX); dimY = AdjustDimension(dimY); var field = new Field[dimX, dimY]; FillCovered(field); int rand = numberGenerator.NextInt(LowerBound, UpperBound); int numberOfMines = (int)((dimX * dimY) * (rand / 100.0)); FillMines(field, numberOfMines); FillNumbers(field); return(field); }
public void GivenGameBoard_ContainsValidPercentOfMines(int dimX, int dimY, int percent) { IRandomInteger randomGenerator = A.Fake <IRandomInteger>(); A.CallTo(() => randomGenerator.NextInt(20, 60)).Returns(percent); IGameBoardCreator creator = new GameBoardCreator(randomGenerator); var board = creator.GenerateGameBoard(dimX, dimY); int mineCount = 0; int expectedCount = (int)((dimX * dimY) * (percent / 100.0)); for (int i = 0; i < dimX; i++) { for (int j = 0; j < dimY; j++) { if (board[i, j].HasFlag(Field.Mine)) { mineCount++; } } } Assert.That(mineCount == expectedCount, $"{mineCount} neq {expectedCount}"); }