diff --git a/CHANGELOG.md b/CHANGELOG.md index 925dccc14..c46cf8e74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - `Expr` and `GenExpr` support `__pos__` magic method like `+Expr` or `+GenExpr` - Added type annotations to most methods on the `Model` class ### Fixed +- Made `test_markDoNotAggrVar_and_getStatus` robust to SCIP presolve changes by discovering the aggregated/multi-aggregated variables instead of hardcoding them ### Changed - Move magic methods (`__radd__`, `__sub__`, `__rsub__`, `__rmul__`, `__richcmp__`, `__neg__`, and `__rtruediv__`) to `ExprLike` base class (#1204) - Speed up `Expr.__add__` and `Expr.__iadd__` via the C-level API diff --git a/tests/test_vars.py b/tests/test_vars.py index 43f71586d..b32acfd67 100644 --- a/tests/test_vars.py +++ b/tests/test_vars.py @@ -142,28 +142,25 @@ def test_markDoNotAggrVar_and_getStatus(): model.addCons(y - 2*x == 0) model.addCons(x + z + w == 10) model.addCons(x*y*z >= 21) # to prevent presolve from removing all variables - model.presolve() - assert z.getStatus() == "ORIGINAL" - assert model.getTransformedVar(z).getStatus() == "AGGREGATED" - assert model.getTransformedVar(w).getStatus() == "MULTAGGR" + variables = (x, y, z, w) + model.presolve() - assert model.getNVars(True) == 1 + multaggr = [v for v in variables if model.getTransformedVar(v).getStatus() == "MULTAGGR"] + aggregated = [v for v in variables if model.getTransformedVar(v).getStatus() == "AGGREGATED"] + assert multaggr, "presolve no longer multi-aggregates; update the test model" + assert aggregated, "presolve no longer aggregates; update the test model" + assert multaggr[0].getStatus() == "ORIGINAL" model.freeTransform() - model.markDoNotMultaggrVar(w) + model.markDoNotMultaggrVar(multaggr[0]) model.presolve() - - assert model.getTransformedVar(w).getStatus() != "MULTAGGR" - assert model.getNVars(True) == 3 + assert model.getTransformedVar(multaggr[0]).getStatus() != "MULTAGGR" model.freeTransform() - model.markDoNotAggrVar(y) + model.markDoNotAggrVar(aggregated[0]) model.presolve() - assert model.getTransformedVar(z).getStatus() != "AGGREGATED" - assert model.getNVars(True) == 4 - - assert x.getStatus() == "ORIGINAL" + assert model.getTransformedVar(aggregated[0]).getStatus() != "AGGREGATED" def test_isIntegral():