more tests

This commit is contained in:
Erik Frojdh
2019-09-20 10:46:28 +02:00
parent 27d223d199
commit af9c67539f
6 changed files with 251 additions and 23 deletions

View File

@ -7,3 +7,5 @@ from _sls_detector import DetectorApi
import _sls_detector
runStatus = _sls_detector.slsDetectorDefs.runStatus
detectorType = _sls_detector.slsDetectorDefs.detectorType
detectorSettings = _sls_detector.slsDetectorDefs.detectorSettings

View File

@ -3,9 +3,11 @@ from _sls_detector import slsDetectorDefs
runStatus = slsDetectorDefs.runStatus
from .utils import element_if_equal, all_equal
from .utils import Geometry, to_geo
import datetime as dt
from functools import wraps
from collections import namedtuple
def freeze(cls):
@ -52,9 +54,15 @@ class ExperimentalDetector(CppDetectorApi):
# CONFIGURATION
def __len__(self):
return self.size()
def free(self):
self.freeSharedMemory()
@property
def hostname(self):
return element_if_equal(self.getHostname())
return self.getHostname()
@hostname.setter
def hostname(self, hostnames):
@ -69,6 +77,39 @@ class ExperimentalDetector(CppDetectorApi):
def detectorversion(self):
return element_if_equal(self.getFirmwareVersion())
@property
def detector_type(self):
return element_if_equal(self.getDetectorType())
@property
def module_geometry(self):
return to_geo(self.getModuleGeometry())
@property
def module_size(self):
ms = [to_geo(item) for item in self.getModuleSize()]
return element_if_equal(ms)
@property
def detector_size(self):
return to_geo(self.getDetectorSize())
@property
def settings(self):
return element_if_equal(self.getSettings())
@settings.setter
def settings(self, value):
self.setSettings(value)
@property
def frames(self):
return element_if_equal(self.getNumberOfFrames())
@frames.setter
def frames(self, n_frames):
self.setNumberOfFrames(n_frames)
# Acq
@property
def rx_status(self):
@ -178,7 +219,10 @@ class ExperimentalDetector(CppDetectorApi):
@exptime.setter
def exptime(self, t):
self.setExptime(dt.timedelta(seconds=t))
if isinstance(t, dt.timedelta):
self.setExptime(t)
else:
self.setExptime(dt.timedelta(seconds=t))
@property
def subexptime(self):
@ -187,7 +231,10 @@ class ExperimentalDetector(CppDetectorApi):
@subexptime.setter
def subexptime(self, t):
self.setSubExptime(dt.timedelta(seconds=t))
if isinstance(t, dt.timedelta):
self.setSubExptime(t)
else:
self.setSubExptime(dt.timedelta(seconds=t))
@property
def period(self):
@ -196,5 +243,8 @@ class ExperimentalDetector(CppDetectorApi):
@period.setter
def period(self, t):
self.setPeriod(dt.timedelta(seconds=t))
if isinstance(t, dt.timedelta):
self.setPeriod(t)
else:
self.setPeriod(dt.timedelta(seconds=t))

View File

@ -2,7 +2,16 @@
Utility functions that are useful for testing and troubleshooting
but not directly used in controlling the detector
"""
from collections import namedtuple
import _sls_detector #C++ lib
Geometry = namedtuple('Geometry', ['x', 'y'])
def to_geo(value):
if isinstance(value, _sls_detector.xy):
return Geometry(x = value.x, y = value.y)
else:
raise ValueError("Can only convert sls_detector.xy")
def all_equal(mylist):
"""If all elements are equal return true otherwise false"""