Skip to content

Commit 760c3a7

Browse files
committed
chore: cover
1 parent 11e6c94 commit 760c3a7

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

tests/test_gap.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,54 @@ def test_parse_multiple_32bit_uuids():
359359
assert adv.tx_power is None
360360

361361

362+
def test_parse_mixed_16bit_32bit_uuids():
363+
"""Test parsing advertisement data with 16-bit UUID followed by 32-bit UUID."""
364+
# Build advertisement data with:
365+
# - One 16-bit UUID: 0x1234
366+
# - Two 32-bit UUIDs: 0x56789ABC, 0xDEF01234
367+
data = [
368+
bytes.fromhex(
369+
"03023412" # Length=3, Type=0x02, UUID=0x1234 (little-endian)
370+
"090478563412F0DEBC9A" # Length=9, Type=0x04, UUIDs in little-endian
371+
)
372+
]
373+
adv = parse_advertisement_data(data)
374+
375+
assert adv.service_uuids == [
376+
"00001234-0000-1000-8000-00805f9b34fb", # 16-bit
377+
"12345678-0000-1000-8000-00805f9b34fb", # 32-bit
378+
"9abcdef0-0000-1000-8000-00805f9b34fb", # 32-bit
379+
]
380+
assert adv.local_name is None
381+
assert adv.service_data == {}
382+
assert adv.manufacturer_data == {}
383+
assert adv.tx_power is None
384+
385+
386+
def test_parse_mixed_16bit_128bit_uuids():
387+
"""Test parsing advertisement data with 16-bit UUID followed by 128-bit UUID."""
388+
# Build advertisement data with:
389+
# - One 16-bit UUID: 0x1234
390+
# - One 128-bit UUID: 550e8400-e29b-41d4-a716-446655440000
391+
# Note: 128-bit UUIDs are stored in reverse byte order in BLE
392+
data = [
393+
bytes.fromhex(
394+
"03023412" # Length=3, Type=0x02, UUID=0x1234 (little-endian)
395+
"110600004455664416a7d4419be200840e55" # Length=17, Type=0x06, 128-bit UUID (reversed)
396+
)
397+
]
398+
adv = parse_advertisement_data(data)
399+
400+
assert adv.service_uuids == [
401+
"00001234-0000-1000-8000-00805f9b34fb", # 16-bit
402+
"550e8400-e29b-41d4-a716-446655440000", # 128-bit
403+
]
404+
assert adv.local_name is None
405+
assert adv.service_data == {}
406+
assert adv.manufacturer_data == {}
407+
assert adv.tx_power is None
408+
409+
362410
def test_parse_advertisement_data_zero_padded_scan_included():
363411
data = [
364412
b"\x02\x01\x06\t\xffY\x00\xfe\x024\x9e\xa6\xba\x00\x00\x00\x00\x00\x00\x00\x00"

0 commit comments

Comments
 (0)