import pytest import sys import os sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) from slic.utils.lazypv import PV def test_getattr(): # Only valid kwargs accepted by epics.PV pv = PV( "ca://TEST:FLOAT", form='time', auto_monitor=True, verbose=True, connection_timeout=3.0 ) # Pv not yet instantiated assert pv._pv is None # Trigger instantiation by accessing a real attribute pvname = pv.__getattr__('pvname') assert isinstance(pvname, str) assert pvname == "ca://TEST:FLOAT" assert pv._pv is not None # access all known epics.PV kwargs via __getattr__ form = pv.__getattr__('form') assert form == 'time' auto_monitor = pv.__getattr__('auto_monitor') assert auto_monitor is True verbose = pv.__getattr__('verbose') assert verbose is True timeout = pv.__getattr__('connection_timeout') assert isinstance(timeout, (float, int)) assert timeout == 3.0 # Remove the instantiated PV del pv._pv pv._pv = None assert pv._pv is None