diff --git a/tests/test_structs.py b/tests/test_structs.py index e2ee35a0..16d758e1 100644 --- a/tests/test_structs.py +++ b/tests/test_structs.py @@ -1,6 +1,7 @@ from bionetgen.modelapi.structs import Action import pytest -from bionetgen.modelapi.structs import ModelObj, Action +from bionetgen.modelapi.structs import ModelObj, Observable, Action +from bionetgen.modelapi.pattern import Pattern, Molecule def test_modelobj_setitem(): @@ -44,6 +45,26 @@ def test_modelobj_line_label_setter(): assert obj.line_label == "[1, 2, 3]: " +def test_observable_add_pattern(): + # Test for "Molecules" type + obs_mol = Observable(name="obs_mol", otype="Molecules", patterns=[]) + pat_mol = Pattern(molecules=[Molecule(name="A")]) + pat_mol.MatchOnce = True # Should remain True + obs_mol.add_pattern(pat_mol) + assert len(obs_mol.patterns) == 1 + assert obs_mol.patterns[0] == pat_mol + assert obs_mol.patterns[0].MatchOnce is True + + # Test for "Species" type + obs_spec = Observable(name="obs_spec", otype="Species", patterns=[]) + pat_spec = Pattern(molecules=[Molecule(name="B")]) + pat_spec.MatchOnce = True # Should be set to False + obs_spec.add_pattern(pat_spec) + assert len(obs_spec.patterns) == 1 + assert obs_spec.patterns[0] == pat_spec + assert obs_spec.patterns[0].MatchOnce is False + + def test_action_print_line_v2(): action = Action("simulate", {"method": "ode", "t_end": 100, "n_steps": 100}) # Test base print_line