You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.8 KiB
96 lines
2.8 KiB
5 years ago
|
import sartoriusb
|
||
|
|
||
|
from sartorius_logger.datalogger import DataLogger
|
||
|
|
||
|
|
||
|
class DummyLogger(DataLogger):
|
||
|
""" A DataLogger implementation for testing """
|
||
|
|
||
|
def __init__(self, *args, **kargs):
|
||
|
super().__init__("log/file.txt", end="")
|
||
|
self.handle = StubFile()
|
||
|
|
||
|
def open(self):
|
||
|
""" simulates opening the log file for writing """
|
||
|
pass
|
||
|
|
||
|
def close(self):
|
||
|
""" simulates closing the log file for writing """
|
||
|
pass
|
||
|
|
||
|
|
||
|
class StubFile:
|
||
|
""" a stub file handle that captures everything written to it """
|
||
|
|
||
|
def __init__(self):
|
||
|
self.captured = []
|
||
|
|
||
|
def write(self, data):
|
||
|
""" simulates a filehandle write """
|
||
|
self.captured.append(data)
|
||
|
|
||
|
def __eq__(self, other):
|
||
|
""" quick way of comparing the captured output to something other """
|
||
|
return self.captured == other
|
||
|
|
||
|
|
||
|
class DummyScale:
|
||
|
""" simulates a sartoriusb.SartoriusUSB class """
|
||
|
|
||
|
_responses = {
|
||
|
sartoriusb.CMD_INFO_TYPE: "Model: Quintix-1\r\n",
|
||
|
sartoriusb.CMD_INFO_SNR: "SerialNumber: 0815 \r",
|
||
|
sartoriusb.CMD_INFO_VERSION_SCALE: "ScaleVersion beta1\n",
|
||
|
sartoriusb.CMD_INFO_VERSION_CONTROL_UNIT: "Version.command 1.2.3",
|
||
|
}
|
||
|
|
||
|
_measurements = [
|
||
|
"G + 850.1 \r\n",
|
||
|
"G + 851.0 \r\n",
|
||
|
"G + 852.2 \r\n",
|
||
|
"G + 853.0 mg \r\n",
|
||
|
"G + 854.4 mg \r\n",
|
||
|
"G + 857.0 mg \r\n",
|
||
|
"G + 857.0 mg \r\n",
|
||
|
"G + 858.7 mg \r\n",
|
||
|
"G + 859.0 mg \r\n",
|
||
|
"G - 1000.0 mg \r\n",
|
||
|
" Low \r\n",
|
||
|
"G 0.0 \r\n",
|
||
|
"G 0.0 mg \r\n",
|
||
|
]
|
||
|
|
||
|
def __init__(self, *args, measurements=None, **kargs):
|
||
|
""" intializes the dummy scale
|
||
|
|
||
|
:params measurements: overides for the build in measurements
|
||
|
:params responses: overides for the build in responses
|
||
|
"""
|
||
|
if measurements is None:
|
||
|
self.measurements = self._measurements.copy()
|
||
|
else:
|
||
|
self.measurements = measurements
|
||
|
self.responses = self._responses.copy()
|
||
|
self.iterator = iter(self.measurements)
|
||
|
|
||
|
def get(self, command):
|
||
|
""" simulates the get() method """
|
||
|
response = self.responses.get(command, False)
|
||
|
return [response] if response else []
|
||
|
|
||
|
def measure(self):
|
||
|
""" simulates the measure() method """
|
||
|
try:
|
||
|
value = next(self.iterator)
|
||
|
return sartoriusb.parse_measurement(value)
|
||
|
except StopIteration:
|
||
|
return sartoriusb.Measurement(
|
||
|
None, None, None, None, "Connection Timeout"
|
||
|
)
|
||
|
|
||
|
def __enter__(self):
|
||
|
return self
|
||
|
|
||
|
def __exit__(self, *args, **kargs):
|
||
|
pass
|