diff --git a/tests/test_profiles.py b/tests/test_profiles.py new file mode 100644 index 00000000..d06b3d0a --- /dev/null +++ b/tests/test_profiles.py @@ -0,0 +1,93 @@ +import logitech_receiver.hidpp20 as hidpp20 +import pytest + + +def test_led_setting_bytes(): + ebytes = bytes.fromhex("0A01020300500407000000") + + setting = hidpp20.LEDEffectSetting.from_bytes(ebytes) + + assert setting.ID == 0x0A + assert setting.color == 0x010203 + assert setting.period == 0x0050 + assert setting.form == 0x04 + assert setting.intensity == 0x07 + + bytes_out = setting.to_bytes() + + assert ebytes == bytes_out + + +def test_button_bytes_1(): + bbytes = bytes.fromhex("8000FFFF") + + button = hidpp20.Button.from_bytes(bbytes) + + assert button.behavior == 0x8 + assert button.type == 0x00 + + bytes_out = button.to_bytes() + + assert bbytes == bytes_out + + +def test_button_bytes_2(): + bbytes = bytes.fromhex("900aFF00") + + button = hidpp20.Button.from_bytes(bbytes) + + assert button.behavior == 0x9 + + bytes_out = button.to_bytes() + + assert bbytes == bytes_out + + +def test_button_bytes_3(): + bbytes = bytes.fromhex("80020454") + + button = hidpp20.Button.from_bytes(bbytes) + + assert button.behavior == 0x8 + assert button.modifiers == 0x04 + + bytes_out = button.to_bytes() + + assert bbytes == bytes_out + + +@pytest.fixture +def profile_bytes(): + return bytes.fromhex( + "01010290018003000700140028FFFFFF" + "FFFF0000000000000000000000000000" + "8000FFFF900aFF00800204548000FFFF" + "900aFF00800204548000FFFF900aFF00" + "800204548000FFFF900aFF0080020454" + "8000FFFF900aFF00800204548000FFFF" + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "54004500370000000000000000000000" + "00000000000000000000000000000000" + "00000000000000000000000000000000" + "0A01020300500407000000FFFFFFFFFF" + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "FFFFFFFFFFFFFFFFFFFFFFFFFF7C81" + ) + + +def test_profile_bytes(profile_bytes): + pbytes = profile_bytes + profile = hidpp20.OnboardProfile.from_bytes(2, 1, 16, 0, pbytes) + + assert profile.sector == 2 + assert profile.resolutions == [0x0190, 0x0380, 0x0700, 0x1400, 0x2800] + assert profile.buttons[0].to_bytes() == bytes.fromhex("8000FFFF") + assert profile.lighting[0].to_bytes() == bytes.fromhex("0A01020300500407000000") + assert profile.name == "TE7" + + bytes_out = profile.to_bytes(255) + + assert pbytes == bytes_out