Skip to content

Commit

Permalink
Test swig exception-handling
Browse files Browse the repository at this point in the history
Related to AMICI-dev#2478.
  • Loading branch information
dweindl committed Jul 10, 2024
1 parent 42dc328 commit bcff06c
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions python/tests/test_swig_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -534,3 +534,28 @@ def test_rdataview(sbml_example_presimulation_module):

# field names are included by dir()
assert "x" in dir(rdata)


def test_python_exceptions(sbml_example_presimulation_module):
"""Test that C++ exceptions are correctly caught and re-raised in Python."""

# only amici-base extension
solver = amici.CVodeSolver()
with pytest.raises(
RuntimeError, match="maxsteps must be a positive number"
):
solver.setMaxSteps(-1)

# only model extension
model = sbml_example_presimulation_module.get_model()
with pytest.raises(RuntimeError, match="Steadystate mask has wrong size"):
model.set_steadystate_mask([1] * model.nx_solver * 2)

edata = amici.ExpData(1, 1, 1, [1])
# too short sx0
edata.sx0 = (1, 2)
with pytest.raises(
RuntimeError,
match=r"Number of initial conditions sensitivities \(36\) in model does not match ExpData \(2\).",
):
amici.runAmiciSimulation(model, solver, edata)

0 comments on commit bcff06c

Please sign in to comment.