From 32632572f233c9276ed9d6009dda37f65d5f12e3 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 14:33:30 +0000 Subject: [PATCH] test: Add unit test for Observable.add_pattern Added a unit test for `Observable.add_pattern` in `tests/test_structs.py` to test the state mutation on the `MatchOnce` attribute depending on `Observable.type` being Species vs Molecules. Co-authored-by: akutuva21 <44119804+akutuva21@users.noreply.github.com> --- tests/test_structs.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/test_structs.py b/tests/test_structs.py index b08d64ef..f2c5f2d3 100644 --- a/tests/test_structs.py +++ b/tests/test_structs.py @@ -1,5 +1,6 @@ import pytest -from bionetgen.modelapi.structs import ModelObj +from bionetgen.modelapi.structs import ModelObj, Observable +from bionetgen.modelapi.pattern import Pattern, Molecule def test_modelobj_setitem(): @@ -41,3 +42,23 @@ def test_modelobj_line_label_setter(): # Test TypeError (setting a non-string/non-integer like a list) obj.line_label = [1, 2, 3] 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