From 2718f1c653cc434247a468332334a6238678af48 Mon Sep 17 00:00:00 2001 From: Arjan Molenaar Date: Wed, 21 Dec 2022 15:41:48 +0100 Subject: [PATCH] Add test that checks for regression in 3.9.1 This test checks for the fix made in 5803d1. --- gaphas/solver/solver.py | 6 ++++++ tests/test_solver.py | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/gaphas/solver/solver.py b/gaphas/solver/solver.py index 7f5e1f8b..fe783d93 100644 --- a/gaphas/solver/solver.py +++ b/gaphas/solver/solver.py @@ -133,6 +133,11 @@ def request_resolve_constraint(self, c: Constraint) -> None: elif self._marked_cons.count(c) < self._resolve_limit: self._marked_cons.append(c) + @property + def needs_solving(self) -> bool: + """Return if there are constraints that need solving.""" + return bool(self._marked_cons) + def solve(self) -> None: # sourcery skip: while-to-for """ Example: @@ -164,6 +169,7 @@ def solve(self) -> None: # sourcery skip: while-to-for >>> c._value 10.0 """ + # NB. marked_cons is updated during the solving process marked_cons = self._marked_cons notify = self._notify try: diff --git a/tests/test_solver.py b/tests/test_solver.py index be88a567..3c23c564 100644 --- a/tests/test_solver.py +++ b/tests/test_solver.py @@ -141,3 +141,22 @@ def handler(constraint): solver.solve() assert outer in events + + +def test_needs_solving(): + solver = Solver() + a = Variable() + b = Variable() + eq = EqualsConstraint(a, b) + + solver.add_constraint(eq) + assert solver.needs_solving + + solver.solve() + assert not solver.needs_solving + + a.value = 3 + assert solver.needs_solving + + solver.solve() + assert not solver.needs_solving