Skip to content

Commit 4c97094

Browse files
committed
fix
1 parent 5f3d7b5 commit 4c97094

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

tests/test_adv_parser.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3518,6 +3518,20 @@ def test_humidifer_with_empty_data() -> None:
35183518
"Presence Sensor",
35193519
SwitchbotModel.PRESENCE_SENSOR,
35203520
),
3521+
AdvTestCase(
3522+
b"\xb0\xe9\xfeR\xdd\x84\x06d\x08\x97,\x00\x05",
3523+
b"\x14\x00d",
3524+
{
3525+
"battery": 100,
3526+
"fahrenheit": False,
3527+
"humidity": 44,
3528+
"temp": {"c": 23.8, "f": 74.84},
3529+
"temperature": 23.8,
3530+
},
3531+
b"\x14",
3532+
"Meter Pro",
3533+
SwitchbotModel.METER_PRO,
3534+
)
35213535
],
35223536
)
35233537
def test_adv_active(test_case: AdvTestCase) -> None:
@@ -4091,3 +4105,35 @@ def test_parse_advertisement_with_mac_cache_curtain() -> None:
40914105

40924106
# Clean up
40934107
_MODEL_TO_MAC_CACHE.clear()
4108+
4109+
@pytest.mark.parametrize(
4110+
("manufacturer_data", "service_data", "model"),
4111+
[
4112+
(b"\xff\xff\xff\xff", b"\xff\xff\xff\xff", None),
4113+
(b"\xff\xff\xff\xff", b"\xff\xff\xff\xff", "F"),
4114+
(b"\xff\xff\xff\xff\xff\xff\xff", b"\xff\xff\xff\xff\xff\xff\xff\xff", None),
4115+
(None, None, None),
4116+
]
4117+
)
4118+
def test_with_invalid_advertisement(manufacturer_data, service_data, model) -> None:
4119+
"""Test with invalid advertisement data."""
4120+
ble_device = generate_ble_device("aa:bb:cc:dd:ee:ff", "any")
4121+
adv_data = generate_advertisement_data(
4122+
manufacturer_data={2409: manufacturer_data},
4123+
service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": service_data},
4124+
rssi=-97,
4125+
)
4126+
result = parse_advertisement_data(ble_device, adv_data, model)
4127+
assert result is None
4128+
4129+
def test_with_special_manufacturer_data_length() -> None:
4130+
"""Test with special manufacturer data length."""
4131+
ble_device = generate_ble_device("aa:bb:cc:dd:ee:ff", "any")
4132+
adv_data = generate_advertisement_data(
4133+
manufacturer_data={741: b"\xacg\xb2\xcd\xfa\xbe"},
4134+
service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": b"\xff\x80\x00\xf9\x80Bc\x00"},
4135+
rssi=-97,
4136+
)
4137+
result = parse_advertisement_data(ble_device, adv_data)
4138+
print(result)
4139+
assert result.data["modelName"] == SwitchbotModel.HUMIDIFIER

0 commit comments

Comments
 (0)