private void SolveAndVerifyBoard(string name, IBoard board) { var solver = SolverCombiner.AllSolvers.Value; IEnumerable <BoardChange> changes; do { changes = solver.Solve(board); board = board.ApplyChanges(changes); } while (changes.Any()); Assert.True(BoardChecker.IsBoardCompleted(board), $"Board: {name}\n{BoardASCIIArt.BoardOnlyAsciiArt(board)}"); }
public void EntireRowsAndColumnsFilled() { var board = BoardSamples.Board3 .ApplyChanges( new BoardChange(0, 0, CellState.Filled), new BoardChange(1, 0, CellState.Filled), new BoardChange(2, 0, CellState.Filled), new BoardChange(2, 1, CellState.Filled), new BoardChange(2, 2, CellState.Filled) ); _testOutputHelper.WriteLine(BoardASCIIArt.BoardOnlyAsciiArt(board)); var solver = new LargestNumberInRuleIsSolvedWrapInBlocked(); var actualChanges = solver.Solve(board); var expected = new List <BoardChange> { new BoardChange(0, 1, CellState.Blocked), new BoardChange(1, 2, CellState.Blocked) }; Assert.Equal(expected, actualChanges); }