File tree Expand file tree Collapse file tree 2 files changed +41
-24
lines changed Expand file tree Collapse file tree 2 files changed +41
-24
lines changed Original file line number Diff line number Diff line change @@ -25,19 +25,28 @@ use super::config::Config;
25
25
/// The Glucose solver
26
26
pub struct Glucose {
27
27
preprocessing : bool ,
28
+ syrup : bool ,
28
29
}
29
30
30
31
impl Glucose {
31
32
pub fn new ( ) -> Self {
32
33
Glucose {
33
34
preprocessing : false ,
35
+ syrup : false ,
34
36
}
35
37
}
36
38
pub fn enable_preprocessing ( & mut self ) {
37
39
self . preprocessing = true ;
38
40
}
39
41
}
40
42
43
+ #[ cfg( not( target_os = "windows" ) ) ]
44
+ impl Glucose {
45
+ pub fn enable_syrup ( & mut self ) {
46
+ self . syrup = true ;
47
+ }
48
+ }
49
+
41
50
impl Solver for Glucose {
42
51
fn solve_with_config (
43
52
& self ,
@@ -49,7 +58,7 @@ impl Solver for Glucose {
49
58
unsafe {
50
59
let ptr = bindings:: glucose_new (
51
60
self . preprocessing as i32 ,
52
- true as i32 ,
61
+ self . syrup as i32 ,
53
62
) ;
54
63
let mut m_vars: HashMap < Var , i32 > = HashMap :: new ( ) ;
55
64
for clause in cnf. get_clauses ( ) {
Original file line number Diff line number Diff line change @@ -15,32 +15,40 @@ fn test_solver<S: Solver>(solver: S) {
15
15
] ;
16
16
let models = solver. get_all_models ( & mut cnf. clone ( ) ) ;
17
17
assert_eq ! ( models. len( ) , 2 ) ;
18
- // let cnf = cnf![
19
- // 1;
20
- // -1
21
- // ];
22
- // assert!(solver.solve(&cnf).is_none());
18
+ let cnf = cnf ! [
19
+ 1 ;
20
+ -1
21
+ ] ;
22
+ assert ! ( solver. solve( & cnf) . is_none( ) ) ;
23
23
}
24
24
25
25
#[ test]
26
26
fn test_solvers ( ) {
27
- // test_solver(DPLL::new());
28
- // test_solver(Minisat::new());
29
- // test_solver(Manysat::new());
30
- // test_solver(portfolio![
31
- // DPLL::new(),
32
- // Minisat::new(),
33
- // Manysat::new(),
34
- // ]);
35
- // test_solver(portfolio![Manysat::new()]);
27
+ test_solver ( DPLL :: new ( ) ) ;
28
+ test_solver ( Minisat :: new ( ) ) ;
29
+ test_solver ( Manysat :: new ( ) ) ;
30
+ test_solver ( portfolio ! [
31
+ DPLL :: new( ) ,
32
+ Minisat :: new( ) ,
33
+ Manysat :: new( ) ,
34
+ ] ) ;
35
+ test_solver ( portfolio ! [ Manysat :: new( ) ] ) ;
36
36
test_solver ( Glucose :: new ( ) ) ;
37
- // test_solver({
38
- // let mut s = Glucose::new();
39
- // s.enable_preprocessing();
40
- // s
41
- // });
42
- // test_solver(portfolio![
43
- // Glucose::new(),
44
- // DPLL::new(),
45
- // ]);
37
+ test_solver ( {
38
+ let mut s = Glucose :: new ( ) ;
39
+ s. enable_preprocessing ( ) ;
40
+ s
41
+ } ) ;
42
+ {
43
+ #[ cfg( not( target_os = "windows" ) ) ]
44
+ test_solver ( {
45
+ let mut s = Glucose :: new ( ) ;
46
+ s. enable_syrup ( ) ;
47
+ s
48
+ } ) ;
49
+ }
50
+ test_solver ( portfolio ! [
51
+ Glucose :: new( ) ,
52
+ DPLL :: new( ) ,
53
+ ] ) ;
46
54
}
You can’t perform that action at this time.
0 commit comments