use ipasir_sys::*;
#[test]
fn it_can_incrementally_solve_a_coloring_problem() {
let a_is_white = 1;
let a_is_black = 2;
let b_is_white = 3;
let b_is_black = 4;
unsafe {
let solver = ipasir_init();
ipasir_add(solver, a_is_white);
ipasir_add(solver, a_is_black);
ipasir_add(solver, 0);
ipasir_add(solver, b_is_white);
ipasir_add(solver, b_is_black);
ipasir_add(solver, 0);
ipasir_add(solver, -a_is_white);
ipasir_add(solver, -b_is_white);
ipasir_add(solver, 0);
ipasir_add(solver, -a_is_black);
ipasir_add(solver, -b_is_black);
ipasir_add(solver, 0);
ipasir_assume(solver, a_is_white);
ipasir_assume(solver, b_is_white);
let unsat_status = ipasir_solve(solver);
assert_eq!(unsat_status, 20);
let caused_unsat = ipasir_failed(solver, a_is_white);
assert_eq!(caused_unsat, 1);
ipasir_assume(solver, a_is_white);
let sat_status = ipasir_solve(solver);
assert_eq!(sat_status, 10);
assert_eq!(ipasir_val(solver, a_is_white), a_is_white);
assert_eq!(ipasir_val(solver, a_is_black), -a_is_black);
assert_eq!(ipasir_val(solver, b_is_white), -b_is_white);
assert_eq!(ipasir_val(solver, b_is_black), b_is_black);
}
}