public void SolveTest_Positive() { var sudokuSolver = new ClassicSudokuSolver(EClassicSudokuType.Classic9x9); var data = sudokuSolver.Solve(_sudokuMediumLevel); Assert.AreEqual(_sudokuSolved, data.Data); }
public void SolveTest_Negative_NotUniqueSolution() { var sudokuSolver = new ClassicSudokuSolver(EClassicSudokuType.Classic9x9); var data = sudokuSolver.Solve(_sudokuNotUniqueSolution); Assert.IsFalse(data.IsUnique); }
public void GenerateTest() { var solver = new ClassicSudokuSolver(EClassicSudokuType.Classic9x9); var generator = new ClassicSudokuGenerator(solver); var level = new SudokuLevel(ESudokuLevel.Medium); var data = generator.Generate(level); var resultOfSolvingGeneratedSudoku = solver.Solve(data.Data); Assert.IsTrue(resultOfSolvingGeneratedSudoku.HasUniqueSolution); }
public static ISudoku GetSudoku(ESudokuType type) { ISudokuSolver solver; ISudokuGenerator generator; switch (type) { case ESudokuType.Classic9X9: solver = new ClassicSudokuSolver(EClassicSudokuType.Classic9x9); generator = new ClassicSudokuGenerator((IClassicSudokuSolver)solver); break; case ESudokuType.Classic16X16: solver = new ClassicSudokuSolver(EClassicSudokuType.Classic16x16); generator = new ClassicSudokuGenerator((IClassicSudokuSolver)solver); break; default: throw new NotSupportedException(Enum.GetName(typeof(ESudokuType), type)); } return(new Sudoku(solver, generator)); }
public void GenerateSolvedTest() { var sudokuSolver = new ClassicSudokuSolver(EClassicSudokuType.Classic9x9); var data = sudokuSolver.GenerateSolved().Data; for (int i = 0; i < 9; i++) { var possibleRowValues = Enumerable.Range(1, 9).ToList(); var possibleColValues = Enumerable.Range(1, 9).ToList(); for (int j = 0; i < 9; i++) { if (!possibleRowValues.Remove(data[i, j]) || !possibleColValues.Remove(data[j, i])) { Assert.Fail("Column or Row contain not unique value."); } } } for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { var possibleValues = Enumerable.Range(1, 9).ToList(); for (int i = x * 3; i < x * 3 + 3; i++) { for (int j = y * 3; j < y * 3 + 3; j++) { if (!possibleValues.Remove(data[i, j])) { Assert.Fail("Block contain not unique value."); } } } } } }