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.maxsat;
31
32 import static org.junit.Assert.assertFalse;
33 import static org.junit.Assert.assertTrue;
34
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.sat4j.core.VecInt;
38 import org.sat4j.specs.ContradictionException;
39 import org.sat4j.specs.IVecInt;
40 import org.sat4j.specs.TimeoutException;
41
42 public class TestSoftCard {
43
44 private WeightedMaxSatDecorator wms;
45
46 @Before
47 public void setUp() {
48 this.wms = new WeightedMaxSatDecorator(SolverFactory.newDefault());
49 }
50
51 @Test
52 public void test() throws ContradictionException, TimeoutException {
53 this.wms.newVar(5);
54 IVecInt clause = new VecInt();
55 clause.push(1).push(2).push(3);
56 this.wms.addHardClause(clause);
57 clause.clear();
58 clause.push(1).push(-2);
59 this.wms.addHardClause(clause);
60 clause.clear();
61 clause.push(1).push(2);
62 this.wms.addHardClause(clause);
63 clause.clear();
64 clause.push(-1).push(3);
65 this.wms.addHardClause(clause);
66 clause.clear();
67 clause.push(1).push(2).push(3);
68 this.wms.addAtMost(clause, 1);
69 clause.clear();
70 assertFalse(this.wms.isSatisfiable());
71 }
72
73 @Test
74 public void test2() throws ContradictionException, TimeoutException {
75 this.wms.newVar(5);
76 IVecInt clause = new VecInt();
77 clause.push(1).push(2).push(3);
78 this.wms.addHardClause(clause);
79 clause.clear();
80 clause.push(1).push(-2);
81 this.wms.addHardClause(clause);
82 clause.clear();
83 clause.push(1).push(2);
84 this.wms.addHardClause(clause);
85 clause.clear();
86 clause.push(-1).push(3);
87 this.wms.addHardClause(clause);
88 clause.clear();
89 clause.push(1).push(2).push(3);
90 this.wms.addSoftAtMost(clause, 1);
91 clause.clear();
92 assertTrue(this.wms.isSatisfiable());
93 }
94
95 @Test
96 public void test3() throws ContradictionException, TimeoutException {
97 this.wms.newVar(6);
98 IVecInt clause = new VecInt();
99 clause.push(1).push(2).push(3);
100 this.wms.addHardClause(clause);
101 clause.clear();
102 clause.push(4).push(5).push(6);
103 this.wms.addHardClause(clause);
104 clause.clear();
105 clause.push(1).push(2).push(3).push(4).push(5).push(6);
106 this.wms.addSoftAtMost(clause, 1);
107 clause.clear();
108 assertTrue(this.wms.isSatisfiable());
109 }
110
111 }