public void testExecute() { IntVar a = C.addIntVar(0, 10, "a", IntVar.DOMAIN_PLAIN); IntVar b = C.addIntVar(0, 10, "b", IntVar.DOMAIN_PLAIN); try { C.postConstraint(a.add(b).gt(4)); C.postConstraint(a.add(b).lt(6)); C.postConstraint(a.le(b)); C.postConstraint(a.mul(b).eq(6)); Goal gen = new GoalAnd(new GoalInstantiate(a), new GoalInstantiate(b)); boolean flag = C.execute(gen); assertTrue("Can't generate any solution", flag); assertEquals("a = " + a.value(), a.value(), 2); assertEquals("b = " + b.value(), b.value(), 3); } catch (Failure f) { f.printStackTrace(); } catch (Throwable ex) { fail("Unexpected exception has been thrown"); } }
public void testExecute1() { IntVar var = C.addIntVar(0, 10, "var", IntVar.DOMAIN_PLAIN); class GoalSuccess extends GoalImpl { GoalSuccess() { super(C, "GoalSuccess"); } public Goal execute() throws Failure { return null; } } class GoalOutput extends GoalImpl { private String _str = null; GoalOutput(String str) { super(C, ""); _str = str; } public Goal execute() throws Failure { fail(_str); return null; } } assertTrue(C.execute(new GoalAnd(new GoalSetMin(var, 2), new GoalSetMax(var, 8)))); assertTrue((var.min() == 2) && (var.max() == 8)); assertTrue(!C.execute(new GoalAnd(new GoalSetMin(var, 5), new GoalSetMax(var, 4)))); assertTrue(!C.execute(new GoalAnd(new GoalFail(C), new GoalSuccess()))); assertTrue( !C.execute( new GoalAnd( new GoalFail(C), new GoalOutput( "Test Failed:" + "Both subgoals of GoalAnd has been executed despite the fact that the first subgoal failed")))); }