smart_brain_test/tests/common_testcases.py
2025-08-31 18:01:11 +02:00

62 regels
2.3 KiB
Python

import time
from unittest.test import equivalency_chk
from .help import DELAY_SET_GET, DELAY_FLASH, set_precondition
FLASH_TRIGGER_LONGPUSH = 'longpush'
FLASH_TRIGGER_ACTIVATE = 'activate'
def device_follow(tLogger, master, master_key, slave, slave_key, values, switch_on):
prepare_list = []
# Prepare System
if switch_on is not None:
prepare_list.append((switch_on, switch_on.KEY_OUTPUT_0, True, True))
start_state = values[-1]
prepare_list.append((master, master_key, start_state, False))
prepare_list.append((slave, slave_key, start_state, False))
set_precondition(tLogger, prepare_list)
#
master_exp = master.get(master_key)
slave_exp = slave.get(slave_key)
equivalency_chk((master_exp, slave_exp), (start_state, start_state), tLogger, "Start state (master, slave)")
#
# Test devices
for value in values:
master.set(master_key, value)
time.sleep(DELAY_SET_GET)
tLogger.debug("Setting state of %s to %s", master.get_name(master_key, master.topic), repr(value))
result = slave.get(slave_key)
equivalency_chk(result, value, tLogger, f"Value for {slave.get_name(slave_key, slave.topic)}")
def device_flash(tLogger, device, device_flash_key, trigger_device, trigger_device_key, start_state):
#
# Precondition
#
time.sleep(DELAY_SET_GET + DELAY_FLASH) # Wait for possibly flashing dvice to finish
set_precondition(tLogger, ((trigger_device, trigger_device_key, False, False), (device, device_flash_key, start_state, False), ))
#
# Trigger
#
trigger_device.set(trigger_device_key, True)
#
# Test
#
time.sleep(DELAY_SET_GET)
#
tLogger.debug("Waiting for first state change after %.1fs.", DELAY_SET_GET)
equivalency_chk(not start_state, device.get(device_flash_key), tLogger, f"Value for {device.get_name(device_flash_key, device.topic)}")
#
time.sleep(DELAY_FLASH)
tLogger.debug("Waiting for second state change after %.1fs.", DELAY_FLASH)
equivalency_chk(start_state, device.get(device_flash_key), tLogger, f"Value for {device.get_name(device_flash_key, device.topic)}")
# Reset Trigger
trigger_device.set(trigger_device_key, False)
time.sleep(DELAY_SET_GET)
tLogger.debug("Collect finalise logs.")