tests: add yaml test for led setting
This commit is contained in:
parent
c3e988a03a
commit
a2bf51386a
|
@ -0,0 +1,120 @@
|
|||
import re
|
||||
|
||||
import logitech_receiver.hidpp20 as hidpp20
|
||||
import pytest
|
||||
import yaml
|
||||
|
||||
|
||||
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_led_setting_yaml():
|
||||
ebytes = bytes.fromhex("0A01020300500407000000")
|
||||
eyaml = (
|
||||
"!LEDEffectSetting {ID: !NamedInt {name: Breathe, value: 0xa}, color: 0x10203, "
|
||||
"form: 0x4, intensity: 0x7, period: 0x50} "
|
||||
)
|
||||
|
||||
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
|
||||
|
||||
yaml_out = yaml.dump(setting)
|
||||
|
||||
assert eyaml == re.compile(r"\s+").sub(" ", yaml_out)
|
||||
|
||||
setting = yaml.safe_load(eyaml)
|
||||
|
||||
assert setting.to_bytes() == ebytes
|
||||
|
||||
|
||||
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
|
Loading…
Reference in New Issue