View Javadoc

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  }