- Minor codebase clean-up - Slight reorganisation of examples + tests so that we don't break stuff by accident - CI tests
1.8 KiB
Testing ReactICS
Prerequisites
- BDD module: compiled (
./reactics setupormakeinreactics-bdd/) - SMT module: Python 3 with
z3-solverandpytestinstalled
pip install z3-solver pytest
Running all tests
./run_tests.sh
This runs the BDD, SMT, and generator test suites in sequence.
BDD tests
bash tests/run_tests.sh
10 regression tests that run the compiled reactics-bdd/reactics binary
against example .drs files and compare output to saved baselines in
tests/expected/. Covers:
- Parsed system printing (
-P) - Reaction listing (
-r) - Reachable state enumeration (
-s) - RSCTLK model checking (
-c) for properties f1--f4
Input files: examples/bdd/tgc.drs, examples/bdd/tgc4.drs,
reactics-bdd/in/trivial.drs.
To update baselines after an intentional output change, delete the
relevant file in tests/expected/ and re-run; the test will regenerate it.
SMT tests
python3 -m pytest tests/test_smt.py -v
23 pytest tests exercising the Python API directly. Organised by layer:
- Data model -- ReactionSystem, concentrations, context automata, formula construction (BagDescription, rsLTL)
- SmtCheckerRS -- basic reachability (no concentrations)
- SmtCheckerRSC -- reachability and rsLTL model checking with concentrations (chain reaction, heat shock response)
- SmtCheckerRSCParam -- parametric verification
- RSC-to-RS translation -- verifying the translated system
Generator tests
7 tests that run each generator (from examples/bdd/generators/),
feed the output into the BDD model checker, and verify the expected
verification result (holds / does not hold).
Generators using old syntax (examples/bdd/generators/old_syntax/)
are not tested this way as they are not compatible with the current
parser.