From 45aec2ea40c45ce74f87e0988e7659cfc316abc4 Mon Sep 17 00:00:00 2001 From: flebourse Date: Mon, 19 Aug 2019 19:34:33 +0200 Subject: [PATCH] huawei_lte: support out of range values in default sensor formatter (#26052) * Update sensor.py Change regexp to cope with out of range values, ie "rssi" : ">=-51dBm". * Add tests for format_default * Fix black formatting --- homeassistant/components/huawei_lte/sensor.py | 4 +++- tests/components/huawei_lte/test_sensor.py | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 tests/components/huawei_lte/test_sensor.py diff --git a/homeassistant/components/huawei_lte/sensor.py b/homeassistant/components/huawei_lte/sensor.py index 4ef88eb783e..da78dc7d8cf 100644 --- a/homeassistant/components/huawei_lte/sensor.py +++ b/homeassistant/components/huawei_lte/sensor.py @@ -137,7 +137,9 @@ def format_default(value): unit = None if value is not None: # Clean up value and infer unit, e.g. -71dBm, 15 dB - match = re.match(r"(?P.+?)\s*(?P[a-zA-Z]+)\s*$", str(value)) + match = re.match( + r"([>=<]*)(?P.+?)\s*(?P[a-zA-Z]+)\s*$", str(value) + ) if match: try: value = float(match.group("value")) diff --git a/tests/components/huawei_lte/test_sensor.py b/tests/components/huawei_lte/test_sensor.py new file mode 100644 index 00000000000..f9834349750 --- /dev/null +++ b/tests/components/huawei_lte/test_sensor.py @@ -0,0 +1,14 @@ +"""Huawei LTE sensor tests.""" + +import pytest + +from homeassistant.components.huawei_lte import sensor + + +@pytest.mark.parametrize( + ("value", "expected"), + (("-71 dBm", (-71, "dBm")), ("15dB", (15, "dB")), (">=-51dBm", (-51, "dBm"))), +) +def test_format_default(value, expected): + """Test that default formatter copes with expected values.""" + assert sensor.format_default(value) == expected