tests/virtual-device: Add function that figures out the command from type

This commit is contained in:
Marco Trevisan (Treviño) 2021-01-24 18:20:20 +01:00
parent 81e53c422d
commit dfb27222eb

View file

@ -113,6 +113,26 @@ class VirtualDevice(unittest.TestCase):
while not (self.dev.get_finger_status() & expected): while not (self.dev.get_finger_status() & expected):
ctx.iteration(True) ctx.iteration(True)
def send_error(self, error):
self.assertIsInstance(error, FPrint.DeviceError)
self.send_command('ERROR', int(error))
def send_retry(self, retry):
self.assertIsInstance(retry, FPrint.DeviceRetry)
self.send_command('RETRY', int(retry))
def send_auto(self, obj):
if isinstance(obj, FPrint.DeviceError):
self.send_error(obj)
elif isinstance(obj, FPrint.DeviceRetry):
self.send_retry(obj)
elif isinstance(obj, FPrint.FingerStatusFlags):
self.send_finger_report(obj & FPrint.FingerStatusFlags.PRESENT, iterate=False)
elif isinstance(obj, FPrint.ScanType):
self.send_command('SET_SCAN_TYPE', obj.value_nick)
else:
raise Exception('No known type found for {}'.format(obj))
def enroll_print(self, nick, finger, username='testuser'): def enroll_print(self, nick, finger, username='testuser'):
self._enrolled = None self._enrolled = None
@ -172,10 +192,8 @@ class VirtualDevice(unittest.TestCase):
if isinstance(scan_nick, str): if isinstance(scan_nick, str):
self.send_command('SCAN', scan_nick) self.send_command('SCAN', scan_nick)
elif isinstance(scan_nick, FPrint.DeviceError): else:
self.send_command('ERROR', int(scan_nick)) self.send_auto(scan_nick)
elif isinstance(scan_nick, FPrint.DeviceRetry):
self.send_command('RETRY', int(scan_nick))
def verify_cb(dev, res): def verify_cb(dev, res):
try: try:
@ -302,7 +320,7 @@ class VirtualDevice(unittest.TestCase):
for scan_type in [FPrint.ScanType.PRESS, FPrint.ScanType.SWIPE]: for scan_type in [FPrint.ScanType.PRESS, FPrint.ScanType.SWIPE]:
notified_spec = None notified_spec = None
self.send_command('SET_SCAN_TYPE', scan_type.value_nick) self.send_auto(scan_type)
self.assertEqual(self.dev.get_scan_type(), scan_type) self.assertEqual(self.dev.get_scan_type(), scan_type)
self.assertEqual(notified_spec.name, 'scan-type') self.assertEqual(notified_spec.name, 'scan-type')