Remove if/else from modbus test cases (#48514)

This commit is contained in:
jan iversen 2021-03-31 11:20:14 +02:00 committed by GitHub
parent d4d8f74858
commit 64d5dd1f6b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 255 additions and 107 deletions

View file

@ -31,57 +31,138 @@ from homeassistant.const import (
from .conftest import base_config_test, base_test
@pytest.mark.parametrize("do_discovery", [False, True])
@pytest.mark.parametrize("do_options", [False, True])
@pytest.mark.parametrize(
"read_type", [CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT, CALL_TYPE_COIL]
"array_type, do_config",
[
(
None,
{
CONF_ADDRESS: 1234,
},
),
(
None,
{
CONF_ADDRESS: 1234,
},
),
(
None,
{
CONF_ADDRESS: 1234,
CONF_INPUT_TYPE: CALL_TYPE_COIL,
},
),
(
None,
{
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_STATE_OFF: 0,
CONF_STATE_ON: 1,
CONF_VERIFY_REGISTER: 1235,
CONF_COMMAND_OFF: 0x00,
CONF_COMMAND_ON: 0x01,
CONF_DEVICE_CLASS: "switch",
CONF_INPUT_TYPE: CALL_TYPE_REGISTER_HOLDING,
},
),
(
None,
{
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_STATE_OFF: 0,
CONF_STATE_ON: 1,
CONF_VERIFY_REGISTER: 1235,
CONF_COMMAND_OFF: 0x00,
CONF_COMMAND_ON: 0x01,
CONF_DEVICE_CLASS: "switch",
CONF_INPUT_TYPE: CALL_TYPE_REGISTER_INPUT,
},
),
(
None,
{
CONF_ADDRESS: 1234,
CONF_INPUT_TYPE: CALL_TYPE_COIL,
CONF_SLAVE: 1,
CONF_DEVICE_CLASS: "switch",
CONF_INPUT_TYPE: CALL_TYPE_COIL,
},
),
(
CONF_REGISTERS,
{
CONF_REGISTER: 1234,
CONF_COMMAND_OFF: 0x00,
CONF_COMMAND_ON: 0x01,
},
),
(
CONF_REGISTERS,
{
CONF_REGISTER: 1234,
CONF_COMMAND_OFF: 0x00,
CONF_COMMAND_ON: 0x01,
},
),
(
CONF_COILS,
{
CALL_TYPE_COIL: 1234,
CONF_SLAVE: 1,
},
),
(
CONF_REGISTERS,
{
CONF_REGISTER: 1234,
CONF_COMMAND_OFF: 0x00,
CONF_COMMAND_ON: 0x01,
CONF_SLAVE: 1,
CONF_STATE_OFF: 0,
CONF_STATE_ON: 1,
CONF_VERIFY_REGISTER: 1235,
CONF_COMMAND_OFF: 0x00,
CONF_COMMAND_ON: 0x01,
CONF_VERIFY_STATE: True,
CONF_REGISTER_TYPE: CALL_TYPE_REGISTER_INPUT,
},
),
(
CONF_REGISTERS,
{
CONF_REGISTER: 1234,
CONF_COMMAND_OFF: 0x00,
CONF_COMMAND_ON: 0x01,
CONF_SLAVE: 1,
CONF_STATE_OFF: 0,
CONF_STATE_ON: 1,
CONF_VERIFY_REGISTER: 1235,
CONF_COMMAND_OFF: 0x00,
CONF_COMMAND_ON: 0x01,
CONF_VERIFY_STATE: True,
CONF_REGISTER_TYPE: CALL_TYPE_REGISTER_HOLDING,
},
),
(
CONF_COILS,
{
CALL_TYPE_COIL: 1234,
CONF_SLAVE: 1,
},
),
],
)
async def test_config_switch(hass, do_discovery, do_options, read_type):
async def test_config_switch(hass, array_type, do_config):
"""Run test for switch."""
device_name = "test_switch"
device_config = {
CONF_NAME: device_name,
**do_config,
}
if not do_discovery:
if read_type == CALL_TYPE_COIL:
array_type = CONF_COILS
device_config[CALL_TYPE_COIL] = 1234
device_config[CONF_SLAVE] = 1
else:
array_type = CONF_REGISTERS
device_config[CONF_REGISTER] = 1234
device_config[CONF_COMMAND_OFF] = 0x00
device_config[CONF_COMMAND_ON] = 0x01
else:
array_type = None
device_config[CONF_ADDRESS] = 1234
if read_type == CALL_TYPE_COIL:
device_config[CONF_INPUT_TYPE] = CALL_TYPE_COIL
if do_options:
device_config[CONF_SLAVE] = 1
if read_type != CALL_TYPE_COIL:
device_config.update(
{
CONF_STATE_OFF: 0,
CONF_STATE_ON: 1,
CONF_VERIFY_REGISTER: 1235,
CONF_COMMAND_OFF: 0x00,
CONF_COMMAND_ON: 0x01,
}
)
if do_discovery:
device_config.update(
{
CONF_DEVICE_CLASS: "switch",
CONF_INPUT_TYPE: read_type,
}
)
else:
if read_type != CALL_TYPE_COIL:
device_config[CONF_VERIFY_STATE] = True
device_config[CONF_REGISTER_TYPE] = read_type
await base_config_test(
hass,
@ -90,7 +171,7 @@ async def test_config_switch(hass, do_discovery, do_options, read_type):
SWITCH_DOMAIN,
CONF_SWITCHES,
array_type,
method_discovery=do_discovery,
method_discovery=(array_type is None),
)