public void SolveBoardWithValidInput()
        {
            int[,] board = new int[, ]
            {
                { 3, 0, 6, 5, 0, 8, 4, 0, 0 },
                { 5, 2, 0, 0, 0, 0, 0, 0, 0 },
                { 0, 8, 7, 0, 0, 0, 0, 3, 1 },
                { 0, 0, 3, 0, 1, 0, 0, 8, 0 },
                { 9, 0, 0, 8, 6, 3, 0, 0, 5 },
                { 0, 5, 0, 0, 9, 0, 6, 0, 0 },
                { 1, 3, 0, 0, 0, 0, 2, 5, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 7, 4 },
                { 0, 0, 5, 2, 0, 6, 3, 0, 0 }
            };

            var solved = new SudokuSolverCore().Solve(board);

            int[,] expected = new int[, ]
            {
                { 3, 1, 6, 5, 7, 8, 4, 9, 2 },
                { 5, 2, 9, 1, 3, 4, 7, 6, 8 },
                { 4, 8, 7, 6, 2, 9, 5, 3, 1 },
                { 2, 6, 3, 4, 1, 5, 9, 8, 7 },
                { 9, 7, 4, 8, 6, 3, 1, 2, 5 },
                { 8, 5, 1, 7, 9, 2, 6, 4, 3 },
                { 1, 3, 8, 9, 4, 7, 2, 5, 6 },
                { 6, 9, 2, 3, 5, 1, 8, 7, 4 },
                { 7, 4, 5, 2, 8, 6, 3, 1, 9 }
            };

            if (!solved)
            {
                Assert.Fail("SolveBoardWithValidInput: Board could not be solved with valid input.");
            }

            for (int row = 0; row < 9; row++)
            {
                for (int col = 0; col < 9; col++)
                {
                    if (board[row, col] != expected[row, col])
                    {
                        Assert.Fail("SolveBoardWithValidInput: Solved board does not match expected values.");
                    }
                }
            }
        }
        public void BoardCannotBeSolved()
        {
            int[,] board = new int[, ]
            {
                { 6, 0, 2, 5, 0, 0, 4, 9, 0 }, //first 0 in this row cannot be filled with any valid value (1-9), as all 1-9 exists in either row, col or 3x3 block
                { 5, 1, 0, 0, 0, 0, 0, 0, 0 },
                { 0, 8, 7, 0, 0, 0, 0, 0, 2 },
                { 0, 0, 3, 0, 1, 0, 0, 8, 0 },
                { 9, 0, 0, 8, 0, 4, 0, 0, 5 },
                { 0, 5, 0, 0, 2, 0, 9, 0, 0 },
                { 0, 3, 0, 0, 0, 0, 1, 5, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 7, 4 },
                { 0, 0, 8, 2, 0, 0, 3, 0, 0 }
            };

            var solved = new SudokuSolverCore().Solve(board);

            Assert.AreEqual(solved, false);
        }