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

@ -5,25 +5,30 @@ import voluptuous as vol
from homeassistant.components.modbus import number from homeassistant.components.modbus import number
async def test_number_validator(): @pytest.mark.parametrize(
"value,value_type",
[
(15, int),
(15.1, float),
("15", int),
("15.1", float),
(-15, int),
(-15.1, float),
("-15", int),
("-15.1", float),
],
)
async def test_number_validator(value, value_type):
"""Test number validator.""" """Test number validator."""
# positive tests assert isinstance(number(value), value_type)
value = number(15)
assert isinstance(value, int)
value = number(15.1)
assert isinstance(value, float)
value = number("15") async def test_number_exception():
assert isinstance(value, int) """Test number exception."""
value = number("15.1")
assert isinstance(value, float)
# exception test
try: try:
value = number("x15.1") number("x15.1")
except (vol.Invalid): except (vol.Invalid):
return return

View file

@ -55,9 +55,11 @@ from .conftest import base_config_test
async def test_config_modbus(hass, do_discovery, do_options, do_config): async def test_config_modbus(hass, do_discovery, do_options, do_config):
"""Run test for modbus.""" """Run test for modbus."""
config = { config = {
DOMAIN: do_config, DOMAIN: {
**do_config,
**do_options,
}
} }
config.update(do_options)
await base_config_test( await base_config_test(
hass, hass,
None, None,

View file

@ -22,22 +22,25 @@ from .conftest import base_config_test, base_test
@pytest.mark.parametrize("do_discovery", [False, True]) @pytest.mark.parametrize("do_discovery", [False, True])
@pytest.mark.parametrize("do_options", [False, True]) @pytest.mark.parametrize(
"do_options",
[
{},
{
CONF_SLAVE: 10,
CONF_INPUT_TYPE: CALL_TYPE_DISCRETE,
CONF_DEVICE_CLASS: "door",
},
],
)
async def test_config_binary_sensor(hass, do_discovery, do_options): async def test_config_binary_sensor(hass, do_discovery, do_options):
"""Run test for binary sensor.""" """Run test for binary sensor."""
sensor_name = "test_sensor" sensor_name = "test_sensor"
config_sensor = { config_sensor = {
CONF_NAME: sensor_name, CONF_NAME: sensor_name,
CONF_ADDRESS: 51, CONF_ADDRESS: 51,
**do_options,
} }
if do_options:
config_sensor.update(
{
CONF_SLAVE: 10,
CONF_INPUT_TYPE: CALL_TYPE_DISCRETE,
CONF_DEVICE_CLASS: "door",
}
)
await base_config_test( await base_config_test(
hass, hass,
config_sensor, config_sensor,

View file

@ -13,7 +13,16 @@ from homeassistant.const import CONF_NAME, CONF_SCAN_INTERVAL, CONF_SLAVE
from .conftest import base_config_test, base_test from .conftest import base_config_test, base_test
@pytest.mark.parametrize("do_options", [False, True]) @pytest.mark.parametrize(
"do_options",
[
{},
{
CONF_SCAN_INTERVAL: 20,
CONF_DATA_COUNT: 2,
},
],
)
async def test_config_climate(hass, do_options): async def test_config_climate(hass, do_options):
"""Run test for climate.""" """Run test for climate."""
device_name = "test_climate" device_name = "test_climate"
@ -22,14 +31,8 @@ async def test_config_climate(hass, do_options):
CONF_TARGET_TEMP: 117, CONF_TARGET_TEMP: 117,
CONF_CURRENT_TEMP: 117, CONF_CURRENT_TEMP: 117,
CONF_SLAVE: 10, CONF_SLAVE: 10,
**do_options,
} }
if do_options:
device_config.update(
{
CONF_SCAN_INTERVAL: 20,
CONF_DATA_COUNT: 2,
}
)
await base_config_test( await base_config_test(
hass, hass,
device_config, device_config,

View file

@ -15,7 +15,16 @@ from homeassistant.const import (
from .conftest import base_config_test, base_test from .conftest import base_config_test, base_test
@pytest.mark.parametrize("do_options", [False, True]) @pytest.mark.parametrize(
"do_options",
[
{},
{
CONF_SLAVE: 10,
CONF_SCAN_INTERVAL: 20,
},
],
)
@pytest.mark.parametrize("read_type", [CALL_TYPE_COIL, CONF_REGISTER]) @pytest.mark.parametrize("read_type", [CALL_TYPE_COIL, CONF_REGISTER])
async def test_config_cover(hass, do_options, read_type): async def test_config_cover(hass, do_options, read_type):
"""Run test for cover.""" """Run test for cover."""
@ -23,14 +32,8 @@ async def test_config_cover(hass, do_options, read_type):
device_config = { device_config = {
CONF_NAME: device_name, CONF_NAME: device_name,
read_type: 1234, read_type: 1234,
**do_options,
} }
if do_options:
device_config.update(
{
CONF_SLAVE: 10,
CONF_SCAN_INTERVAL: 20,
}
)
await base_config_test( await base_config_test(
hass, hass,
device_config, device_config,

View file

@ -31,21 +31,19 @@ from homeassistant.const import (
from .conftest import base_config_test, base_test 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( @pytest.mark.parametrize(
"do_type", [CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT] "do_discovery, do_config",
) [
async def test_config_sensor(hass, do_discovery, do_options, do_type): (
"""Run test for sensor.""" False,
sensor_name = "test_sensor"
config_sensor = {
CONF_NAME: sensor_name,
CONF_ADDRESS: 51,
}
if do_options:
config_sensor.update(
{ {
CONF_REGISTER: 51,
},
),
(
False,
{
CONF_REGISTER: 51,
CONF_SLAVE: 10, CONF_SLAVE: 10,
CONF_COUNT: 1, CONF_COUNT: 1,
CONF_DATA_TYPE: "int", CONF_DATA_TYPE: "int",
@ -53,17 +51,70 @@ async def test_config_sensor(hass, do_discovery, do_options, do_type):
CONF_SCALE: 1, CONF_SCALE: 1,
CONF_REVERSE_ORDER: False, CONF_REVERSE_ORDER: False,
CONF_OFFSET: 0, CONF_OFFSET: 0,
CONF_INPUT_TYPE: do_type, CONF_REGISTER_TYPE: CALL_TYPE_REGISTER_HOLDING,
CONF_DEVICE_CLASS: "battery", CONF_DEVICE_CLASS: "battery",
},
),
(
False,
{
CONF_REGISTER: 51,
CONF_SLAVE: 10,
CONF_COUNT: 1,
CONF_DATA_TYPE: "int",
CONF_PRECISION: 0,
CONF_SCALE: 1,
CONF_REVERSE_ORDER: False,
CONF_OFFSET: 0,
CONF_REGISTER_TYPE: CALL_TYPE_REGISTER_INPUT,
CONF_DEVICE_CLASS: "battery",
},
),
(
True,
{
CONF_ADDRESS: 51,
},
),
(
True,
{
CONF_ADDRESS: 51,
CONF_SLAVE: 10,
CONF_COUNT: 1,
CONF_DATA_TYPE: "int",
CONF_PRECISION: 0,
CONF_SCALE: 1,
CONF_REVERSE_ORDER: False,
CONF_OFFSET: 0,
CONF_INPUT_TYPE: CALL_TYPE_REGISTER_HOLDING,
CONF_DEVICE_CLASS: "battery",
},
),
(
True,
{
CONF_ADDRESS: 51,
CONF_SLAVE: 10,
CONF_COUNT: 1,
CONF_DATA_TYPE: "int",
CONF_PRECISION: 0,
CONF_SCALE: 1,
CONF_REVERSE_ORDER: False,
CONF_OFFSET: 0,
CONF_INPUT_TYPE: CALL_TYPE_REGISTER_INPUT,
CONF_DEVICE_CLASS: "battery",
},
),
],
)
async def test_config_sensor(hass, do_discovery, do_config):
"""Run test for sensor."""
sensor_name = "test_sensor"
config_sensor = {
CONF_NAME: sensor_name,
**do_config,
} }
)
if not do_discovery:
# bridge difference in configuration
config_sensor[CONF_REGISTER] = config_sensor[CONF_ADDRESS]
del config_sensor[CONF_ADDRESS]
if do_options:
config_sensor[CONF_REGISTER_TYPE] = config_sensor[CONF_INPUT_TYPE]
del config_sensor[CONF_INPUT_TYPE]
await base_config_test( await base_config_test(
hass, hass,
config_sensor, config_sensor,

View file

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