equipment
Electronic Load Molecule
Public Made by Adomby adom
Siglent SDL1020X-E electronic load equipment prototype: reconstructed carrier STEP/GLB, constant-current dashboard, serial-pinned SCPI driver, control-panel integration guide and purchase budget.
main
John Lauer
Add electronic load equipment prototype, carrier reconstruction and control dashboard
d1c6e4f
1d ago
import unittest,time,sys
from pathlib import Path
sys.path.insert(0,str(Path(__file__).resolve().parents[1]))
from driver import Load
class Tests(unittest.TestCase):
def test_disconnected_refuses_on(self):
with self.assertRaises(RuntimeError):Load().on()
def test_invalid_setpoints_never_enable(self):
l=Load(simulate=True)
for v in [-1,1.001,float('nan'),float('inf'),True,None,'1']:
with self.assertRaises(ValueError):l.set_current(v)
self.assertFalse(l.enabled)
def test_lease_expiry_disables(self):
l=Load(simulate=True);l.set_current(1);l.on();l.deadline=time.monotonic()-1;l.sample();self.assertFalse(l.enabled);self.assertIn('expired',l.error)
def test_simulated_measurements_are_labelled(self):
l=Load(simulate=True);l.set_current(.5);l.on();r=l.sample();self.assertTrue(r['simulated']);self.assertEqual(r['current_a'],.5);l.off();self.assertEqual(l.sample()['current_a'],0)
def test_instrument_timeout_clears_measurements(self):
class Bad:
def query(self,c):raise TimeoutError('link lost')
def write(self,c):raise TimeoutError('link lost')
l=Load(simulate=True);l.sample();l.simulate=False;l.io=Bad();l.sample();self.assertFalse(l.connected);self.assertIsNone(l.state()['measurement']);self.assertIn('UNKNOWN',l.error)
if __name__=='__main__':unittest.main()