diff --git a/pumpkin-crates/core/src/constraints/arithmetic/inequality.rs b/pumpkin-crates/core/src/constraints/arithmetic/inequality.rs index 1c9212381..0de38aa74 100644 --- a/pumpkin-crates/core/src/constraints/arithmetic/inequality.rs +++ b/pumpkin-crates/core/src/constraints/arithmetic/inequality.rs @@ -40,7 +40,7 @@ pub fn greater_than( rhs: i32, constraint_tag: ConstraintTag, ) -> impl NegatableConstraint { - greater_than_or_equals(terms, rhs - 1, constraint_tag) + greater_than_or_equals(terms, rhs + 1, constraint_tag) } /// Create the [`NegatableConstraint`] `\sum terms_i >= rhs`. @@ -140,3 +140,38 @@ impl NegatableConstraint for Inequality { } } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn less_than_conflict() { + let mut solver = Solver::default(); + + let constraint_tag = solver.new_constraint_tag(); + let x = solver.new_named_bounded_integer(0, 0, "x"); + + let result = less_than([x], 0, constraint_tag).post(&mut solver); + assert_eq!( + result, + Err(ConstraintOperationError::InfeasiblePropagator), + "Expected {result:?} to be an `InfeasiblePropagator` error" + ); + } + + #[test] + fn greater_than_conflict() { + let mut solver = Solver::default(); + + let constraint_tag = solver.new_constraint_tag(); + let x = solver.new_named_bounded_integer(0, 0, "x"); + + let result = greater_than([x], 0, constraint_tag).post(&mut solver); + assert_eq!( + result, + Err(ConstraintOperationError::InfeasiblePropagator), + "Expected {result:?} to be an `InfeasiblePropagator` error" + ); + } +}