public void BoardGenerator_GenerateBoard_Nominal() { for (var i = 0; i < 200; i++) { // Act var(solvedBoard, playingBoard) = _boardGenerator.GenerateBoard(_gameConfig); // Assert foreach (var board in new[] { solvedBoard, playingBoard }) { Assert.Equal(_height, board.Height); Assert.Equal(_width, board.Width); Assert.Equal(_height * _width, board.Cells.Length); var nonNullCenterCellMovesCount = BoardGenerator.Moves(board.Cells[_height / 2, _width / 2]); Assert.True(nonNullCenterCellMovesCount >= 2); Assert.True(nonNullCenterCellMovesCount <= 3); } for (var row = 0; row < solvedBoard.Height; row++) { for (var col = 0; col < solvedBoard.Width; col++) { Assert.Equal(BoardGenerator.Moves(solvedBoard.Cells[row, col]), BoardGenerator.Moves(playingBoard.Cells[row, col])); } } } }