tests: improve infrastructure for testing setting_templates
This commit is contained in:
parent
1ed5f765e3
commit
4d0f93b35c
|
@ -505,6 +505,9 @@ class NamedInts:
|
||||||
def __or__(self, other):
|
def __or__(self, other):
|
||||||
return NamedInts(**self.__dict__, **other.__dict__)
|
return NamedInts(**self.__dict__, **other.__dict__)
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return type(self) == type(other) and self._values == other._values
|
||||||
|
|
||||||
|
|
||||||
class UnsortedNamedInts(NamedInts):
|
class UnsortedNamedInts(NamedInts):
|
||||||
def _sort_values(self):
|
def _sort_values(self):
|
||||||
|
|
|
@ -136,7 +136,8 @@ class Device:
|
||||||
codename: str = "TESTC"
|
codename: str = "TESTC"
|
||||||
responses: Any = field(default_factory=list)
|
responses: Any = field(default_factory=list)
|
||||||
feature: Optional[int] = None
|
feature: Optional[int] = None
|
||||||
features: Any = None
|
offset: Optional[int] = 4
|
||||||
|
version: Optional[int] = 0
|
||||||
setting_callback: Any = None
|
setting_callback: Any = None
|
||||||
_backlight = _keys = _remap_keys = _led_effects = None
|
_backlight = _keys = _remap_keys = _led_effects = None
|
||||||
|
|
||||||
|
@ -150,15 +151,15 @@ class Device:
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
self.persister = configuration._DeviceEntry()
|
self.persister = configuration._DeviceEntry()
|
||||||
self.features = hidpp20.FeaturesArray(self)
|
self.features = hidpp20.FeaturesArray(self)
|
||||||
self.responses += [Response("010001", 0x0000, "0001"), Response("20", 0x0100)]
|
self.responses = [Response("010001", 0x0000, "0001"), Response("20", 0x0100)] + self.responses
|
||||||
if self.feature is not None:
|
if self.feature is not None:
|
||||||
self.responses.append(Response("040001", 0x0000, f"{self.feature:0>4X}"))
|
self.responses.append(Response(f"{self.offset:0>2X}00{self.version:0>2X}", 0x0000, f"{self.feature:0>4X}"))
|
||||||
|
|
||||||
def request(self, id, *params, no_reply=False):
|
def request(self, id, *params, no_reply=False):
|
||||||
if params is None:
|
if params is None:
|
||||||
params = []
|
params = []
|
||||||
params = b"".join(pack("B", p) if isinstance(p, int) else p for p in params)
|
params = b"".join(pack("B", p) if isinstance(p, int) else p for p in params)
|
||||||
print("REQUEST ", self.name, hex(id), params.hex())
|
print("REQUEST ", self.name, hex(id), params.hex().upper())
|
||||||
for r in self.responses:
|
for r in self.responses:
|
||||||
if id == r.id and params == bytes.fromhex(r.params):
|
if id == r.id and params == bytes.fromhex(r.params):
|
||||||
print("RESPONSE", self.name, hex(r.id), r.params, r.response)
|
print("RESPONSE", self.name, hex(r.id), r.params, r.response)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue