From cb16a46b9357e1d2960b2ff08e1cd3b6c1e8a8f2 Mon Sep 17 00:00:00 2001 From: "Peter F. Patel-Schneider" Date: Tue, 26 Mar 2024 18:35:12 -0400 Subject: [PATCH] tests: test more settings --- tests/logitech_receiver/hidpp.py | 6 +- .../test_setting_templates.py | 73 +++++++++++++++---- 2 files changed, 62 insertions(+), 17 deletions(-) diff --git a/tests/logitech_receiver/hidpp.py b/tests/logitech_receiver/hidpp.py index 7bad8732..105e3c41 100644 --- a/tests/logitech_receiver/hidpp.py +++ b/tests/logitech_receiver/hidpp.py @@ -139,7 +139,8 @@ class Device: offset: Optional[int] = 4 version: Optional[int] = 0 setting_callback: Any = None - _backlight = _keys = _remap_keys = _led_effects = None + settings = [] + sliding = profiles = _backlight = _keys = _remap_keys = _led_effects = None read_register = device.Device.read_register write_register = device.Device.write_register @@ -154,6 +155,9 @@ class Device: self.responses = [Response("010001", 0x0000, "0001"), Response("20", 0x0100)] + self.responses if self.feature is not None: self.responses.append(Response(f"{self.offset:0>2X}00{self.version:0>2X}", 0x0000, f"{self.feature:0>4X}")) + if self.setting_callback is None: + self.setting_callback = lambda x, y, z: None + self.add_notification_handler = lambda x, y: None def request(self, id, *params, no_reply=False): if params is None: diff --git a/tests/logitech_receiver/test_setting_templates.py b/tests/logitech_receiver/test_setting_templates.py index 8b3f5e0f..6375e6b0 100644 --- a/tests/logitech_receiver/test_setting_templates.py +++ b/tests/logitech_receiver/test_setting_templates.py @@ -32,7 +32,7 @@ from logitech_receiver import special_keys from . import hidpp # TODO DpiSlidingXY, MouseGesturesXY, SpeedChange -# TODO Gesture2Gestures, Gesture2Divert, Gesture2Params, MKeyLEDs, Equalizer +# TODO Gesture2Gestures, Gesture2Divert, Gesture2Params class Setup: @@ -239,6 +239,11 @@ simple_tests = [ hidpp.Response("00", 0x0400), hidpp.Response("01", 0x0420, "01"), ), + Setup( + FeatureTest(settings_templates.MKeyLEDs, {1: False, 2: False, 4: False}, {1: False, 2: True, 4: True}), + hidpp.Response("03", 0x0400), + hidpp.Response("06", 0x0410, "06"), + ), Setup( FeatureTest(settings_templates.MRKeyLED, False, True), hidpp.Response("01", 0x0400, "01"), @@ -375,20 +380,27 @@ simple_tests = [ hidpp.Response("01", 0x0C20), hidpp.Response("05", 0x0C30, "05"), ), - # Setup( - # FeatureTest(settings_templates.AdjustableDpi, 800, 400, version=0x03), - # common.NamedInts.list([400, 800, 1600]), - # hidpp.Response("000190032006400000", 0x0410, "000000"), - # hidpp.Response("000320", 0x0420), - # hidpp.Response("000190", 0x0430, "000190"), - # ), - # Setup( - # FeatureTest(settings_templates.AdjustableDpi, 256, 512, version=0x03), - # common.NamedInts.list([256, 512]), - # hidpp.Response("000100e10002000000", 0x0410, "000000"), - # hidpp.Response("000100", 0x0420), - # hidpp.Response("000200", 0x0430, "000200"), - # ), + Setup( + FeatureTest(settings_templates.AdjustableDpi, 800, 400, version=0x03), + common.NamedInts.list([400, 800, 1600]), + hidpp.Response("000190032006400000000000000000", 0x0410), + hidpp.Response("000320", 0x0420), + hidpp.Response("000190", 0x0430, "000190"), + ), + Setup( + FeatureTest(settings_templates.AdjustableDpi, 1600, 400, version=0x03), + common.NamedInts.list([400, 800, 1600]), + hidpp.Response("000190032006400000000000000000", 0x0410), + hidpp.Response("0000000640", 0x0420), + hidpp.Response("000190", 0x0430, "000190"), + ), + Setup( + FeatureTest(settings_templates.AdjustableDpi, 400, 800, version=0x03), + common.NamedInts.list([400, 800, 1200, 1600]), + hidpp.Response("000190E19006400000000000000000", 0x0410), + hidpp.Response("000190", 0x0420), + hidpp.Response("000320", 0x0430, "000320"), + ), # Setup( # FeatureTest(settings_templates.ExtendedAdjustableDpi, 256, 512, version=0x09), # common.NamedInts.list([256, 512]), @@ -533,6 +545,13 @@ key_tests = [ hidpp.Response("00C4020000", 0x0530, "00C4020000"), # Smart Shift write hidpp.Response("00C4030000", 0x0530, "00C4030000"), # Smart Shift divert write ), + Setup( + FeatureTest(settings_templates.DivertKeys, {0xC4: 0}, {0xC4: 2}, 2, offset=0x05), + {common.NamedInt(0xC4, "Smart Shift"): common.NamedInts(Regular=0, Diverted=1, Mouse_Gestures=2)}, + *responses_reprog_controls, + hidpp.Response("00C4300000", 0x0530, "00C4300000"), # Smart Shift write + hidpp.Response("00C4030000", 0x0530, "00C4030000"), # Smart Shift divert write + ), Setup( FeatureTest(settings_templates.PersistentRemappableAction, {80: 16797696, 81: 16797696}, {0x51: 16797952}, 3), { @@ -552,6 +571,24 @@ key_tests = [ hidpp.Response("0051FF01005000", 0x0440, "0051FF01005000"), # right button write hidpp.Response("0051FF01005100", 0x0440, "0051FF01005100"), # right button set write ), + Setup( + FeatureTest(settings_templates.Equalizer, {0: 0x10, 1: 0x14}, {1: 0x20}, 2), + [16, 32], + hidpp.Response("0220001020", 0x0400), + hidpp.Response("0001000200000000000000", 0x0410, "00"), + hidpp.Response("1014", 0x0420, "00"), + hidpp.Response("1014", 0x0430, "021014"), + hidpp.Response("1020", 0x0430, "021020"), + ), + Setup( + FeatureTest(settings_templates.Equalizer, {0: -0x20, 1: 0x10}, {1: 0x18}, 2), + [-32, 32], + hidpp.Response("0220000000", 0x0400), + hidpp.Response("0000800100000000000000", 0x0410, "00"), + hidpp.Response("E010", 0x0420, "00"), + hidpp.Response("E010", 0x0430, "02E010"), + hidpp.Response("E018", 0x0430, "02E018"), + ), Setup( FeatureTest( settings_templates.PerKeyLighting, @@ -589,7 +626,11 @@ def test_key_template(test, mocker): assert setting if isinstance(setting, list): setting = setting[0] - assert setting.choices == test.choices + if isinstance(test.choices, dict): + assert setting.choices == test.choices + elif isinstance(test.choices, list): + assert setting._validator.min_value == test.choices[0] + assert setting._validator.max_value == test.choices[1] value = setting.read(cached=False) assert value == tst.initial_value