"""Shared test fixtures for pyngspice tests.""" import os import sys import tempfile import pytest # Ensure repo root is on path for editable installs sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) @pytest.fixture def tmp_workdir(): """Provide a temporary working directory, cleaned up after the test.""" with tempfile.TemporaryDirectory() as d: yield d @pytest.fixture def rc_netlist(tmp_workdir): """Write a simple RC circuit netlist and return its path.""" path = os.path.join(tmp_workdir, "rc.cir") with open(path, "w") as f: f.write("""RC Test Circuit V1 in 0 DC 1 R1 in out 1k C1 out 0 1u .tran 0.1m 10m .end """) return path @pytest.fixture def inductor_rser_netlist(tmp_workdir): """Write a netlist with LTspice-style Rser= on inductors.""" path = os.path.join(tmp_workdir, "inductor_rser.cir") with open(path, "w") as f: f.write("""Tesla Coil Primary V1 drive 0 SIN(0 100 250000) L1 drive tank 8.5u Rser=0.012 C1 tank 0 100n L2 tank sec 500u Rser=2.5 R_load sec 0 50 .tran 0.1u 100u .backanno .end """) return path @pytest.fixture def tesla_coil_netlist(tmp_workdir): """Write a Tesla coil netlist with .options savecurrents and Rser=.""" path = os.path.join(tmp_workdir, "tesla_coil.cir") with open(path, "w") as f: f.write("""Tesla Coil AC Analysis V1 vin 0 AC 1 C_mmc vin p1 0.03u L1 p1 0 10.927u Rser=0.001 L2 0 top 15.987m Rser=0.001 C_topload top 0 13.822p K1 L1 L2 0.3204 .options savecurrents .ac dec 100 1k 3meg .end """) return path