Recursion limit for bailing on unsolvable, more extensive testing and additions to interface

This commit is contained in:
Imbus 2023-12-10 13:36:51 +01:00
parent 6366a5e0f2
commit 196f066281
3 changed files with 93 additions and 25 deletions

View file

@ -1,6 +1,6 @@
package sudoku;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.RepeatedTest;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import java.util.stream.IntStream;
@ -45,6 +45,7 @@ class SolverTest {
}
@Test
@RepeatedTest(100)
void solverTest() {
Solver solver = new Solver();
assertFalse(solver.isSolved());
@ -52,12 +53,16 @@ class SolverTest {
assertTrue(solver.isSolved());
solver.clear();
solver.randomizeBoard();
assertFalse(solver.isSolved());
assertTrue(solver.solve());
solver.clear();
}
@Test
@RepeatedTest(100)
void randomizeBoardGuaranteeSolvableTest() {
Solver solver = new Solver();
solver.randomizeBoard();
assertFalse(solver.isSolved());
assertTrue(solver.solve());
}
@Test
@ -79,11 +84,26 @@ class SolverTest {
}
@Test
@Disabled
void unsolvableTest() {
Solver solver = new Solver();
// Simple example
solver.clear();
solver.set(0, 0, 1);
solver.set(0, 1, 1);
assertFalse(solver.solve());
// More complex example
solver.clear();
solver.set(0, 5, 7);
solver.set(0, 6, 8);
solver.set(0, 7, 2);
solver.set(1, 5, 3);
solver.set(2, 7, 1);
solver.set(3, 1, 4);
solver.set(5, 2, 8);
solver.set(5, 8, 6);
solver.set(7, 1, 8);
assertFalse(solver.solve());
}
}