@@ -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