Coverage for tests/unit_tests/utils/test_usb_util.py: 100%
42 statements
« prev ^ index » next coverage.py v7.16.1, created at 2026-09-23 03:53 +0000
« prev ^ index » next coverage.py v7.16.1, created at 2026-09-23 03:53 +0000
1"""Tests of usb_util.py"""
3from apio.utils.usb_util import (
4 UsbDevice,
5 UsbDeviceFilter,
6)
9def test_device_summaries():
10 """Test usb device summary() string."""
11 device = UsbDevice("0403", "6010", 0, 1, "m0", "p0", "sn0", "t0")
12 assert device.summary() == "[0403:6010] [0:1] [m0] [p0] [sn0]"
15def test_filtering() -> None:
16 """Test the filtering function."""
17 devs: list[UsbDevice] = [
18 UsbDevice("0403", "6010", 0, 1, "m0", "p0", "sn0", "t0"), # devs[0]
19 UsbDevice("0403", "6020", 3, 1, "m1", "p1", "sn1", "t1"), # devs[1]
20 UsbDevice("0405", "6020", 3, 1, "m2", "p2", "sn2", "t2"), # devs[2]
21 UsbDevice("0403", "6020", 2, 1, "m3", "p3", "sn3", "t3"), # devs[3]
22 UsbDevice("0403", "6010", 1, 1, "m4", "p4", "sn4", "t4"), # devs[4]
23 UsbDevice("0405", "6010", 1, 1, "m5", "p5", "sn5", "t5"), # devs[5]
24 ]
26 # -- All filtering disabled.
27 filt = UsbDeviceFilter()
28 assert filt.summary() == "[all]"
29 assert filt.filter(devs) == devs
31 # -- Filter by VID
32 filt = UsbDeviceFilter().set_vid("9999")
33 assert filt.summary() == "[VID=9999]"
34 assert filt.filter(devs) == []
36 filt = UsbDeviceFilter().set_vid("0405")
37 assert filt.summary() == "[VID=0405]"
38 assert filt.filter(devs) == [devs[2], devs[5]]
40 # -- Filter by PID
41 filt = UsbDeviceFilter().set_pid("9999")
42 assert filt.summary() == "[PID=9999]"
43 assert filt.filter(devs) == []
45 filt = UsbDeviceFilter().set_pid("6020")
46 assert filt.summary() == "[PID=6020]"
47 assert filt.filter(devs) == [devs[1], devs[2], devs[3]]
49 # -- Filter by description regex
50 filt = UsbDeviceFilter().set_product_regex("no-such-device")
51 assert filt.summary() == '[REGEX="no-such-device"]'
52 assert filt.filter(devs) == []
54 filt = UsbDeviceFilter().set_product_regex("^p2$")
55 assert filt.summary() == '[REGEX="^p2$"]'
56 assert filt.filter(devs) == [devs[2]]
58 filt = UsbDeviceFilter().set_product_regex("p2")
59 assert filt.summary() == '[REGEX="p2"]'
60 assert filt.filter(devs) == [devs[2]]
62 filt = UsbDeviceFilter().set_product_regex("(p3)|(p2)")
63 assert filt.summary() == '[REGEX="(p3)|(p2)"]'
64 assert filt.filter(devs) == [devs[2], devs[3]]
66 # -- Filter by serial number
67 filt = UsbDeviceFilter().set_serial_num("no-such-device")
68 assert filt.summary() == '[S/N="no-such-device"]'
69 assert filt.filter(devs) == []
71 filt = UsbDeviceFilter().set_serial_num("sn2")
72 assert filt.summary() == '[S/N="sn2"]'
73 assert filt.filter(devs) == [devs[2]]
75 # -- Filter by VID, PID
76 filt = UsbDeviceFilter().set_vid("0403").set_pid("6010")
77 assert filt.summary() == "[VID=0403, PID=6010]"
78 assert filt.filter(devs) == [devs[0], devs[4]]