tests: extend tests for device.py
This commit is contained in:
parent
b616419f72
commit
1eb1d4b198
|
@ -80,25 +80,28 @@ r_keyboard_1 = [ # a HID++ 1.0 keyboard
|
||||||
Response("003412", 0x81F1, "02"), # firmware
|
Response("003412", 0x81F1, "02"), # firmware
|
||||||
Response("002345", 0x81F1, "03"), # firmware
|
Response("002345", 0x81F1, "03"), # firmware
|
||||||
Response("003456", 0x81F1, "04"), # firmware
|
Response("003456", 0x81F1, "04"), # firmware
|
||||||
|
Response("050050", 0x8107), # battery status
|
||||||
]
|
]
|
||||||
|
|
||||||
r_keyboard_2 = [ # a HID++ 2.0 keyboard
|
r_keyboard_2 = [ # a HID++ 2.0 keyboard
|
||||||
Response(4.2, 0x0010), # ping
|
Response(4.2, 0x0010), # ping
|
||||||
Response("010001", 0x0000, "0001"), # feature set at 0x01
|
Response("010001", 0x0000, "0001"), # feature set at 0x01
|
||||||
Response("020003", 0x0000, "1000"), # battery status at 0x02
|
Response("020003", 0x0000, "0020"), # CONFIG_CHANGE at 0x02
|
||||||
Response("030001", 0x0000, "0003"), # device information at 0x03
|
Response("030001", 0x0000, "0003"), # device information at 0x03
|
||||||
Response("040003", 0x0000, "0100"), # unknown 0100 at 0x04
|
Response("040003", 0x0000, "0100"), # unknown 0100 at 0x04
|
||||||
Response("050003", 0x0000, "1B04"), # reprogrammable keys V4 at 0x05
|
Response("050003", 0x0000, "1B04"), # reprogrammable keys V4 at 0x05
|
||||||
Response("060003", 0x0000, "0007"), # device friendly name at 0x06
|
Response("060003", 0x0000, "0007"), # device friendly name at 0x06
|
||||||
Response("070003", 0x0000, "0005"), # device name at 0x07
|
Response("070003", 0x0000, "0005"), # device name at 0x07
|
||||||
|
Response("080003", 0x0000, "1000"), # battery status at 0x08
|
||||||
Response("08", 0x0100), # 8 features
|
Response("08", 0x0100), # 8 features
|
||||||
Response("00010001", 0x0110, "01"), # feature set at 0x01
|
Response("00010001", 0x0110, "01"), # feature set at 0x01
|
||||||
Response("10000001", 0x0110, "02"), # battery status at 0x02
|
Response("00200003", 0x0110, "02"), # CONFIG_CHANGE at 0x02
|
||||||
Response("00030001", 0x0110, "03"), # device information at 0x03
|
Response("00030001", 0x0110, "03"), # device information at 0x03
|
||||||
Response("01000003", 0x0110, "04"), # unknown 0100 at 0x04
|
Response("01000003", 0x0110, "04"), # unknown 0100 at 0x04
|
||||||
Response("1B040003", 0x0110, "05"), # reprogrammable keys V4 at 0x05
|
Response("1B040003", 0x0110, "05"), # reprogrammable keys V4 at 0x05
|
||||||
Response("00070003", 0x0000, "06"), # device friendly name at 0x06
|
Response("00070003", 0x0000, "06"), # device friendly name at 0x06
|
||||||
Response("00050003", 0x0000, "07"), # device name at 0x07
|
Response("00050003", 0x0000, "07"), # device name at 0x07
|
||||||
|
Response("10000001", 0x0110, "08"), # battery status at 0x02
|
||||||
Response("0212345678000D1234567890ABAA01", 0x0300), # device information
|
Response("0212345678000D1234567890ABAA01", 0x0300), # device information
|
||||||
Response("04", 0x0500), # reprogrammable keys V4
|
Response("04", 0x0500), # reprogrammable keys V4
|
||||||
Response("00110012AB010203CD00", 0x0510, "00"), # reprogrammable keys V4
|
Response("00110012AB010203CD00", 0x0510, "00"), # reprogrammable keys V4
|
||||||
|
@ -113,6 +116,7 @@ r_keyboard_2 = [ # a HID++ 2.0 keyboard
|
||||||
Response("4142434445464748494A4B4C4D4E4F", 0x0710, "00"),
|
Response("4142434445464748494A4B4C4D4E4F", 0x0710, "00"),
|
||||||
Response("505152530000000000000000000000", 0x0710, "0F"),
|
Response("505152530000000000000000000000", 0x0710, "0F"),
|
||||||
Response("00", 0x0720),
|
Response("00", 0x0720),
|
||||||
|
Response("12345678", 0x0800), # battery status
|
||||||
]
|
]
|
||||||
|
|
||||||
r_mouse_1 = [ # a HID++ 1.0 mouse
|
r_mouse_1 = [ # a HID++ 1.0 mouse
|
||||||
|
@ -299,6 +303,7 @@ responses_profiles_rom = [ # OnboardProfile in ROM
|
||||||
complex_responses_1 = [ # COLOR_LED_EFFECTS
|
complex_responses_1 = [ # COLOR_LED_EFFECTS
|
||||||
Response(4.2, 0x0010), # ping
|
Response(4.2, 0x0010), # ping
|
||||||
Response("010001", 0x0000, "0001"), # FEATURE SET at x01
|
Response("010001", 0x0000, "0001"), # FEATURE SET at x01
|
||||||
|
Response("020001", 0x0000, "0020"), # CONFIG_CHANGE at x02
|
||||||
Response("0A", 0x0100), # 10 features
|
Response("0A", 0x0100), # 10 features
|
||||||
Response("070001", 0x0000, "8070"), # COLOR_LED_EFFECTS at 0x07
|
Response("070001", 0x0000, "8070"), # COLOR_LED_EFFECTS at 0x07
|
||||||
*effects_responses_1,
|
*effects_responses_1,
|
||||||
|
@ -307,6 +312,7 @@ complex_responses_1 = [ # COLOR_LED_EFFECTS
|
||||||
complex_responses_2 = [ # RGB_EFFECTS + reprogrammable keys + persistent actions
|
complex_responses_2 = [ # RGB_EFFECTS + reprogrammable keys + persistent actions
|
||||||
Response(4.2, 0x0010), # ping
|
Response(4.2, 0x0010), # ping
|
||||||
Response("010001", 0x0000, "0001"), # FEATURE SET at x01
|
Response("010001", 0x0000, "0001"), # FEATURE SET at x01
|
||||||
|
Response("020001", 0x0000, "0020"), # CONFIG_CHANGE at x02
|
||||||
Response("0A", 0x0100), # 10 features
|
Response("0A", 0x0100), # 10 features
|
||||||
Response("070001", 0x0000, "8071"), # RGB_EFFECTS at 0x07
|
Response("070001", 0x0000, "8071"), # RGB_EFFECTS at 0x07
|
||||||
*effects_responses_2,
|
*effects_responses_2,
|
||||||
|
|
|
@ -251,15 +251,17 @@ class TestDevice(device.Device): # a fully functional Device but its HID++ func
|
||||||
[
|
[
|
||||||
(di_CCCC, hidpp.r_empty, 1.0, type(None), None, None, None, None, None),
|
(di_CCCC, hidpp.r_empty, 1.0, type(None), None, None, None, None, None),
|
||||||
(di_C318, hidpp.r_empty, 1.0, type(None), None, None, None, None, None),
|
(di_C318, hidpp.r_empty, 1.0, type(None), None, None, None, None, None),
|
||||||
(di_B530, hidpp.r_keyboard_1, 2.0, type(None), 0, 0, 0, None, None),
|
(di_B530, hidpp.r_keyboard_1, 1.0, type(None), None, None, None, None, None),
|
||||||
|
(di_B530, hidpp.r_keyboard_2, 2.0, type(None), 4, 0, 0, None, None),
|
||||||
(di_B530, hidpp.complex_responses_1, 4.5, hidpp20.LEDEffectsInfo, 0, 0, 0, None, None),
|
(di_B530, hidpp.complex_responses_1, 4.5, hidpp20.LEDEffectsInfo, 0, 0, 0, None, None),
|
||||||
(di_B530, hidpp.complex_responses_2, 4.5, hidpp20.RGBEffectsInfo, 8, 3, 1, True, True),
|
(di_B530, hidpp.complex_responses_2, 4.5, hidpp20.RGBEffectsInfo, 8, 3, 1, True, True),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_Device_complex(device_info, responses, protocol, led, keys, remap, gestures, backlight, profiles):
|
def test_Device_complex(device_info, responses, protocol, led, keys, remap, gestures, backlight, profiles, mocker):
|
||||||
test_device = TestDevice(responses, None, None, online=True, device_info=device_info)
|
test_device = TestDevice(responses, None, None, online=True, device_info=device_info)
|
||||||
test_device._name = "TestDevice"
|
test_device._name = "TestDevice"
|
||||||
test_device._protocol = protocol
|
test_device._protocol = protocol
|
||||||
|
spy_request = mocker.spy(test_device, "request")
|
||||||
|
|
||||||
assert type(test_device.led_effects) == led
|
assert type(test_device.led_effects) == led
|
||||||
if keys is None:
|
if keys is None:
|
||||||
|
@ -274,18 +276,57 @@ def test_Device_complex(device_info, responses, protocol, led, keys, remap, gest
|
||||||
assert (test_device.backlight is None) == (backlight is None)
|
assert (test_device.backlight is None) == (backlight is None)
|
||||||
assert (test_device.profiles is None) == (profiles is None)
|
assert (test_device.profiles is None) == (profiles is None)
|
||||||
|
|
||||||
|
test_device.set_configuration(55)
|
||||||
|
if protocol > 1.0:
|
||||||
|
spy_request.assert_called_with(0x210, 55, no_reply=False)
|
||||||
|
test_device.reset()
|
||||||
|
if protocol > 1.0:
|
||||||
|
spy_request.assert_called_with(0x210, 0, no_reply=False)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"device_info, responses, protocol, p, persister, settings",
|
||||||
|
[
|
||||||
|
(di_CCCC, hidpp.r_empty, 1.0, None, None, 0),
|
||||||
|
(di_C318, hidpp.r_empty, 1.0, {}, {}, 0),
|
||||||
|
(di_C318, hidpp.r_keyboard_1, 1.0, {"n": "n"}, {"n": "n"}, 1),
|
||||||
|
(di_B530, hidpp.r_keyboard_2, 4.5, {"m": "m"}, {"m": "m"}, 1),
|
||||||
|
(di_C068, hidpp.r_mouse_1, 1.0, {"o": "o"}, {"o": "o"}, 2),
|
||||||
|
(di_C08A, hidpp.r_mouse_2, 4.5, {"p": "p"}, {"p": "p"}, 0),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def test_Device_settings(device_info, responses, protocol, p, persister, settings, mocker):
|
||||||
|
mocker.patch("solaar.configuration.persister", return_value=p)
|
||||||
|
test_device = TestDevice(responses, None, None, online=True, device_info=device_info)
|
||||||
|
test_device._name = "TestDevice"
|
||||||
|
test_device._protocol = protocol
|
||||||
|
|
||||||
|
assert test_device.persister == persister
|
||||||
|
assert len(test_device.settings) == settings
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"device_info, responses, protocol, battery, changed",
|
||||||
|
[
|
||||||
|
(di_C318, hidpp.r_empty, 1.0, None, {"active": True, "alert": 0, "reason": None}),
|
||||||
|
(di_C318, hidpp.r_keyboard_1, 1.0, common.Battery(50, None, 0, None), {"active": True, "alert": 0, "reason": None}),
|
||||||
|
(di_B530, hidpp.r_keyboard_2, 4.5, common.Battery(18, 52, None, None), {"active": True, "alert": 0, "reason": None}),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def test_Device_battery(device_info, responses, protocol, battery, changed, mocker):
|
||||||
|
test_device = TestDevice(responses, None, None, online=True, device_info=device_info)
|
||||||
|
test_device._name = "TestDevice"
|
||||||
|
test_device._protocol = protocol
|
||||||
|
spy_changed = mocker.spy(test_device, "changed")
|
||||||
|
|
||||||
|
assert test_device.battery() == battery
|
||||||
|
test_device.read_battery()
|
||||||
|
spy_changed.assert_called_with(**changed)
|
||||||
|
|
||||||
|
|
||||||
""" TODO
|
""" TODO
|
||||||
|
|
||||||
settings
|
|
||||||
set configuration
|
|
||||||
reset
|
|
||||||
persister
|
|
||||||
battery
|
|
||||||
set_battery_info
|
|
||||||
read_battery
|
|
||||||
enable_connection_notifications
|
|
||||||
changed
|
changed
|
||||||
|
enable_connection_notifications
|
||||||
add_notification_handler
|
add_notification_handler
|
||||||
remove_notification_handler
|
remove_notification_handler
|
||||||
handle_notification
|
handle_notification
|
||||||
|
|
|
@ -63,7 +63,7 @@ def test_FeaturesArray_check(device, expected_result, expected_count):
|
||||||
"device, expected0, expected1, expected2, expected5, expected5v",
|
"device, expected0, expected1, expected2, expected5, expected5v",
|
||||||
[
|
[
|
||||||
(device_zerofeatures, None, None, None, None, None),
|
(device_zerofeatures, None, None, None, None, None),
|
||||||
(device_standard, 0x0000, 0x0001, 0x1000, hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, 3),
|
(device_standard, 0x0000, 0x0001, 0x0020, hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, 3),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_FeaturesArray_get_feature(device, expected0, expected1, expected2, expected5, expected5v):
|
def test_FeaturesArray_get_feature(device, expected0, expected1, expected2, expected5, expected5v):
|
||||||
|
@ -94,13 +94,13 @@ def test_FeaturesArray_get_feature(device, expected0, expected1, expected2, expe
|
||||||
[
|
[
|
||||||
(hidpp20_constants.FEATURE.ROOT, 0),
|
(hidpp20_constants.FEATURE.ROOT, 0),
|
||||||
(hidpp20_constants.FEATURE.FEATURE_SET, 1),
|
(hidpp20_constants.FEATURE.FEATURE_SET, 1),
|
||||||
(hidpp20_constants.FEATURE.BATTERY_STATUS, 2),
|
(hidpp20_constants.FEATURE.CONFIG_CHANGE, 2),
|
||||||
(hidpp20_constants.FEATURE.DEVICE_FW_VERSION, 3),
|
(hidpp20_constants.FEATURE.DEVICE_FW_VERSION, 3),
|
||||||
(common.NamedInt(256, "unknown:0100"), 4),
|
(common.NamedInt(256, "unknown:0100"), 4),
|
||||||
(hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, 5),
|
(hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, 5),
|
||||||
(None, 6),
|
(None, 6),
|
||||||
(None, 7),
|
(None, 7),
|
||||||
(None, 8),
|
(hidpp20_constants.FEATURE.BATTERY_STATUS, 8),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in New Issue