Skip to content

Commit c61e613

Browse files
committed
Add some more tests for NESTML support
1 parent e2ac3df commit c61e613

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

test/system/test_nest_nestml.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,3 +148,57 @@ def test_nestml_tsodyks_synapse_vm_trace():
148148
err_msg="V_m traces differ between NESTML and native tsodyks_synapse")
149149

150150
sim.end()
151+
152+
153+
def test_nestml_cell_type_inline_string():
154+
"""nestml_cell_type() should accept inline NESTML source, not just file paths."""
155+
if not have_nest:
156+
pytest.skip("nest not available")
157+
if not have_pynestml:
158+
pytest.skip("pynestml not available")
159+
160+
from pyNN.nest import nestml as pynn_nestml
161+
iaf_path = os.path.join(NESTML_MODEL_DIR, "iaf_psc_exp_neuron.nestml")
162+
with open(iaf_path) as f:
163+
iaf_source = f.read()
164+
165+
NestmlIAF = pynn_nestml.nestml_cell_type("iaf_psc_exp_neuron", iaf_source)
166+
sim.setup(timestep=0.1, min_delay=1.0)
167+
168+
pop = sim.Population(1, NestmlIAF(I_e=400.0), label="nestml_inline")
169+
pop.record("V_m")
170+
sim.run(100.0)
171+
172+
vm = pop.get_data().segments[0].filter(name="V_m")[0].magnitude
173+
assert np.ptp(vm) > 5.0, "No membrane potential dynamics — inline model may not have compiled"
174+
175+
sim.end()
176+
177+
178+
def test_nestml_register_after_setup_raises():
179+
"""Calling nestml_cell_type() after sim.setup() should raise RuntimeError."""
180+
if not have_nest:
181+
pytest.skip("nest not available")
182+
183+
from pyNN.nest import nestml as pynn_nestml
184+
sim.setup(timestep=0.1, min_delay=1.0)
185+
iaf_path = os.path.join(NESTML_MODEL_DIR, "iaf_psc_exp_neuron.nestml")
186+
187+
with pytest.raises(RuntimeError, match="before sim.setup"):
188+
pynn_nestml.nestml_cell_type("iaf_psc_exp_neuron", iaf_path)
189+
190+
sim.end()
191+
192+
193+
def test_nestml_setup_without_models():
194+
"""sim.setup() should succeed and set _compiled even when no NESTML models are registered."""
195+
if not have_nest:
196+
pytest.skip("nest not available")
197+
198+
from pyNN.nest import nestml as pynn_nestml
199+
sim.setup(timestep=0.1, min_delay=1.0)
200+
201+
assert pynn_nestml._compiled, "_compiled should be True after setup() even with no models"
202+
assert pynn_nestml._pending == [], "_pending should be empty after setup()"
203+
204+
sim.end()

0 commit comments

Comments
 (0)