-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathJavaTest.java
More file actions
104 lines (86 loc) · 3.08 KB
/
Copy pathJavaTest.java
File metadata and controls
104 lines (86 loc) · 3.08 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package de.softvare.ddnnife;
import java.math.BigInteger;
import java.util.List;
import org.junit.jupiter.api.Test;
import static de.softvare.ddnnife.JavaUtils.*;
import static java.util.Collections.emptyList;
import static org.junit.jupiter.api.Assertions.*;
class JavaTest {
private final Ddnnf ddnnf = ddnnfFromFile("../../example_input/busybox-1.18.0_c2d.nnf", null);
private final Integer features = 854;
@Test
void sat() {
DdnnfMut ddnnfMut = ddnnf.asMut();
assertTrue(ddnnfMut.isSat(emptyList()));
assertTrue(ddnnfMut.isSat(List.of(-2)));
assertFalse(ddnnfMut.isSat(List.of(1)));
}
@Test
void count() {
// Only the root count.
BigInteger count = ddnnf.rc();
BigInteger expected =
new BigInteger("2061138519356781760670618805653750167349287991336595876373542198990734653489713239449032049664199494301454199336000050382457451123894821886472278234849758979132037884598159833615564800000000000000000000");
assertEquals(count, expected);
// The count for a given assumption.
DdnnfMut ddnnfMut = ddnnf.asMut();
assertEquals(ddnnfMut.count(emptyList()), count);
assertEquals(new BigInteger("0"), ddnnfMut.count(List.of(1)));
}
@Test
void coreAndDead() {
List<Integer> both = ddnnf.getCore();
assertEquals(41, both.size());
DdnnfMut ddnnfMut = ddnnf.asMut();
List<Integer> core = ddnnfMut.core(emptyList());
assertEquals(23, core.size());
List<Integer> dead = ddnnfMut.dead(emptyList());
assertEquals(18, dead.size());
}
@Test
void enumerateTest() {
List<List<Integer>> configs = enumerate(ddnnf.asMut(), emptyList(), 1);
assertEquals(1, configs.size());
assertEquals(features, configs.getFirst().size());
}
@Test
void randomTest() {
List<List<Integer>> configs = random(ddnnf.asMut(), emptyList(), 2, 42);
assertEquals(2, configs.size());
assertEquals(features, configs.getFirst().size());
}
@Test
void atomicSetsTest() {
List<List<Short>> atomicSets = atomicSets(ddnnf.asMut(), null, List.of(1), true);
assertEquals(features, atomicSets.getFirst().size());
}
@Test
void tWise() {
SamplingResult result = sampleTWise(ddnnf, 1, null);
assertTrue(isSample(result));
Sample sample = getSample(result);
assertEquals(features, sample.getVars().size());
}
@Test
void cnf() {
Cnf cnf = ddnnf.toCnf();
String serialized = cnf.serialize();
// TODO: `numVariables` is not reachable
//assertEquals(2830u, cnf.numVariables());
assertEquals(7481, cnf.clauses().size());
assertEquals(110642, serialized.length());
}
@Test
void toUIntTest() {
assertEquals(1, toUInt(1));
}
@Test
void trivial() {
Ddnnf trivialDdnnf = ddnnfFromFile("../../ddnnife/tests/data/stub_true.nnf", null);
assert(trivialDdnnf.isTrivial());
}
@Test
void nonTrivial() {
assert(!ddnnf.isTrivial());
}
}