use std::process::{self, Command};
use sat::solver::Solver;
extern crate sat;
#[test]
fn smoke_test() {
let mut i = sat::Instance::new();
let x = i.fresh_var();
let y = i.fresh_var();
let z = i.fresh_var();
i.assert_any(&[x, z]);
i.assert_any(&[!x, !y, !z]);
i.assert_any(&[y]);
let s = sat::solver::Dimacs::new(|| {
let mut c = Command::new("minisat");
c.stdout(process::Stdio::null());
c
});
let a = s.solve(&i).unwrap();
assert!(a.get(x) || a.get(z));
assert!(!a.get(x) || !a.get(y) || !a.get(z));
assert!(a.get(y));
i.assert_any(&[!y]);
assert!(s.solve(&i).is_none());
}