45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
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
|