One transaction class serves many tests. Each test freezes fields, drops rules, pins values, or reshapes the whole space, and each change belongs to one layer.
You need to | Use | Scope |
|---|---|---|
Tighten one call |
| One call |
Drop a rule for a while, on one object |
| One object until restored |
Replace a rule for a whole test | A subclass with the same block name, installed by a factory | Every object of the type |
Pin a field across many calls | Set it, then | One field until restored |
Read a range from configuration | A non- | Every call that reads it |
Lesson | Control question it answers |
|---|---|
Which fields does the solver assign, and which does it read as state? | |
Which named rule blocks stay active on this object? | |
What extra rules apply to this one call only? | |
What standing personality does this test type carry? | |
What configuration does the solve read as constants? |
Disable the legality block with constraint_mode(0), then steer with an inline with toward the illegal corner. Inline expressions only intersect with class constraints, so they can never relax the legal range by themselves.