1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 package org.sat4j.minisat.core;
31
32 import static org.junit.Assert.assertEquals;
33 import static org.junit.Assert.assertFalse;
34 import static org.junit.Assert.assertTrue;
35
36 import org.junit.Test;
37 import org.sat4j.core.VecInt;
38 import org.sat4j.minisat.SolverFactory;
39 import org.sat4j.opt.MaxSatDecorator;
40 import org.sat4j.specs.ContradictionException;
41 import org.sat4j.specs.ISolver;
42 import org.sat4j.specs.IVecInt;
43 import org.sat4j.specs.TimeoutException;
44 import org.sat4j.tools.ModelIterator;
45 import org.sat4j.tools.OptToSatAdapter;
46
47 public class Bug275101 {
48
49 @Test
50 public void testMaxSAtIteratorIfSat() throws ContradictionException,
51 TimeoutException {
52 ISolver solver = new ModelIterator(new OptToSatAdapter(
53 new MaxSatDecorator(SolverFactory.newDefault())));
54 solver.newVar(3);
55 IVecInt literals = new VecInt();
56 literals.push(-1).push(-2).push(3);
57 solver.addClause(literals);
58 literals.clear();
59 literals.push(-1).push(2);
60 solver.addClause(literals);
61 literals.clear();
62 literals.push(-1).push(-3);
63 solver.addClause(literals);
64 literals.clear();
65 assertTrue(solver.isSatisfiable());
66 assertEquals(3, solver.model().length);
67 System.out.println("" + solver.model(1) + solver.model(2)
68 + solver.model(3));
69 assertTrue(solver.isSatisfiable());
70 assertEquals(3, solver.model().length);
71 System.out.println("" + solver.model(1) + solver.model(2)
72 + solver.model(3));
73 assertTrue(solver.isSatisfiable());
74 assertEquals(3, solver.model().length);
75 System.out.println("" + solver.model(1) + solver.model(2)
76 + solver.model(3));
77 assertTrue(solver.isSatisfiable());
78 assertEquals(3, solver.model().length);
79 System.out.println("" + solver.model(1) + solver.model(2)
80 + solver.model(3));
81 assertFalse(solver.isSatisfiable());
82 }
83
84 @Test
85 public void testMaxSAtIterator() throws ContradictionException,
86 TimeoutException {
87 ISolver solver = new ModelIterator(new OptToSatAdapter(
88 new MaxSatDecorator(SolverFactory.newDefault())));
89 solver.newVar(2);
90 IVecInt literals = new VecInt();
91 literals.push(-1).push(-2);
92 solver.addClause(literals);
93 literals.clear();
94 literals.push(-1).push(2);
95 solver.addClause(literals);
96 literals.clear();
97 literals.push(1).push(-2);
98 solver.addClause(literals);
99 literals.clear();
100 literals.push(1).push(2);
101 solver.addClause(literals);
102 assertTrue(solver.isSatisfiable());
103 assertEquals(2, solver.model().length);
104 System.out.println("" + solver.model(1) + solver.model(2));
105 assertTrue(solver.isSatisfiable());
106 assertEquals(2, solver.model().length);
107 System.out.println("" + solver.model(1) + solver.model(2));
108 assertTrue(solver.isSatisfiable());
109 assertEquals(2, solver.model().length);
110 System.out.println("" + solver.model(1) + solver.model(2));
111 assertTrue(solver.isSatisfiable());
112 assertEquals(2, solver.model().length);
113 System.out.println("" + solver.model(1) + solver.model(2));
114 assertFalse(solver.isSatisfiable());
115 }
116 }