1 package org.sat4j.tools; 2 3 import static org.junit.Assert.assertEquals; 4 import static org.junit.Assert.assertTrue; 5 6 import org.junit.Before; 7 import org.junit.Test; 8 import org.sat4j.core.VecInt; 9 import org.sat4j.minisat.SolverFactory; 10 import org.sat4j.specs.ContradictionException; 11 import org.sat4j.specs.ISolver; 12 import org.sat4j.specs.IVecInt; 13 import org.sat4j.specs.TimeoutException; 14 15 public class NegationDecoratorTest { 16 17 private ISolver solver; 18 19 @Before 20 public void setUp() throws Exception { 21 solver = new NegationDecorator<ISolver>(SolverFactory.newDefault()); 22 } 23 24 @Test 25 public void testNegatingASingleClause() throws TimeoutException, 26 ContradictionException { 27 solver.newVar(3); 28 IVecInt clause = new VecInt(); 29 clause.push(1).push(2).push(3); 30 solver.addClause(clause); 31 assertTrue(solver.isSatisfiable()); 32 int[] model = solver.model(); 33 assertEquals(-1, model[0]); 34 assertEquals(-2, model[1]); 35 assertEquals(-3, model[2]); 36 } 37 38 @Test 39 public void testNegatingTwoClauses() throws TimeoutException, 40 ContradictionException { 41 solver.newVar(3); 42 IVecInt clause = new VecInt(); 43 clause.push(1).push(2).push(3); 44 solver.addClause(clause); 45 clause.clear(); 46 clause.push(-1).push(2).push(3); 47 solver.addClause(clause); 48 assertTrue(solver.isSatisfiable()); 49 int[] model = solver.model(); 50 assertEquals(-2, model[1]); 51 assertEquals(-3, model[2]); 52 } 53 54 }