public void SolvedBoard2_OnlyFilled_MissingOne2()
        {
            var board = BoardSamples.Board2;

            board = board.ApplyChanges(
                new BoardChange(0, 2, CellState.Filled),
                new BoardChange(1, 0, CellState.Filled),
                new BoardChange(1, 1, CellState.Filled),
                //new BoardChange(2, 0, CellState.Filled),
                new BoardChange(2, 2, CellState.Filled)
                );

            Assert.False(BoardChecker.IsBoardCompleted(board));
        }
        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 SolvedBoard2_AllCellsMarked()
        {
            var board = BoardSamples.Board2;

            board = board.ApplyChanges(
                new BoardChange(0, 0, CellState.Blocked),
                new BoardChange(0, 1, CellState.Blocked),
                new BoardChange(0, 2, CellState.Filled),
                new BoardChange(1, 0, CellState.Filled),
                new BoardChange(1, 1, CellState.Filled),
                new BoardChange(1, 2, CellState.Blocked),
                new BoardChange(2, 0, CellState.Filled),
                new BoardChange(2, 1, CellState.Blocked),
                new BoardChange(2, 2, CellState.Filled)
                );

            Assert.True(BoardChecker.IsBoardCompleted(board));
        }