public void TestSolve() { var cpb = new CPBoard(bSolvableByCP); var sr = CPSolver.Solve(cpb); Assert.True(sr.DidSolve); Assert.True(CPSolver.IsSolved(sr.CPB)); cpb = new CPBoard(bSolved); sr = CPSolver.Solve(cpb); Assert.True(sr.DidSolve); Assert.Equal("7", cpb.Get(0)); Assert.True(CPSolver.IsSolved(sr.CPB)); // Double check results cpb = new CPBoard(bSolvable); sr = CPSolver.Solve(cpb); Assert.True(sr.DidSolve); Assert.True(CPSolver.IsSolved(sr.CPB)); cpb = new CPBoard(bEmpty); sr = CPSolver.Solve(cpb); Assert.True(sr.DidSolve); Assert.True(CPSolver.IsSolved(sr.CPB)); }
public void TestInitializeConstraints() { // This board is solvable from the constraints alone var cpb = new CPBoard(bSolvableByCP); Assert.True(CPSolver.InitializeConstraints(cpb)); Assert.True(CPSolver.IsSolved(cpb)); cpb = new CPBoard(bInvalid); Assert.False(CPSolver.InitializeConstraints(cpb)); cpb = new CPBoard(bEmpty); Assert.True(CPSolver.InitializeConstraints(cpb)); for (int i = 0; i < Const.N2; i++) { Assert.Equal("123456789", cpb.Get(i)); } cpb = new CPBoard("1234" + bEmpty.Remove(0, 4)); CPSolver.InitializeConstraints(cpb); Assert.Equal("1", cpb.Get(0)); Assert.Equal("2", cpb.Get(1)); Assert.Equal("3", cpb.Get(2)); Assert.Equal("4", cpb.Get(3)); Assert.Equal("56789", cpb.Get(4)); // TODO: Double check results cpb = new CPBoard(bSolvable); CPSolver.InitializeConstraints(cpb); Assert.Equal("1458", cpb.Get(2)); }
public void TestIsSolved() { var cpb = new CPBoard(bSolvableByCP); Assert.False(CPSolver.IsSolved(cpb)); cpb = new CPBoard(bSolved); Assert.True(CPSolver.IsSolved(cpb)); cpb = new CPBoard(bInvalid); Assert.False(CPSolver.IsSolved(cpb)); }