test: Extract get_kind_from_index function and test it
Pull get_kind_from_index from class to module level and add tests. Related #1097
This commit is contained in:
parent
c23c6b7124
commit
7ec3eddccc
|
@ -405,7 +405,7 @@ class Ex100Receiver(Receiver):
|
||||||
assert notification.address == 0x02
|
assert notification.address == 0x02
|
||||||
online = True
|
online = True
|
||||||
encrypted = bool(notification.data[0] & 0x80)
|
encrypted = bool(notification.data[0] & 0x80)
|
||||||
kind = hidpp10_constants.DEVICE_KIND[self.get_kind_from_index(number)]
|
kind = hidpp10_constants.DEVICE_KIND[_get_kind_from_index(self, number)]
|
||||||
wpid = "00" + notification.data[2:3].hex().upper()
|
wpid = "00" + notification.data[2:3].hex().upper()
|
||||||
return online, encrypted, wpid, kind
|
return online, encrypted, wpid, kind
|
||||||
|
|
||||||
|
@ -414,10 +414,11 @@ class Ex100Receiver(Receiver):
|
||||||
if not wpid:
|
if not wpid:
|
||||||
logger.error("Unable to get wpid from udev for device %d of %s", number, self)
|
logger.error("Unable to get wpid from udev for device %d of %s", number, self)
|
||||||
raise exceptions.NoSuchDevice(number=number, receiver=self, error="Not present 27Mhz device")
|
raise exceptions.NoSuchDevice(number=number, receiver=self, error="Not present 27Mhz device")
|
||||||
kind = hidpp10_constants.DEVICE_KIND[self.get_kind_from_index(number)]
|
kind = hidpp10_constants.DEVICE_KIND[_get_kind_from_index(self, number)]
|
||||||
return {"wpid": wpid, "kind": kind, "polling": "", "serial": None, "power_switch": "(unknown)"}
|
return {"wpid": wpid, "kind": kind, "polling": "", "serial": None, "power_switch": "(unknown)"}
|
||||||
|
|
||||||
def get_kind_from_index(self, index):
|
|
||||||
|
def _get_kind_from_index(receiver, index):
|
||||||
"""Get device kind from 27Mhz device index"""
|
"""Get device kind from 27Mhz device index"""
|
||||||
# From drivers/hid/hid-logitech-dj.c
|
# From drivers/hid/hid-logitech-dj.c
|
||||||
if index == 1: # mouse
|
if index == 1: # mouse
|
||||||
|
@ -429,8 +430,8 @@ class Ex100Receiver(Receiver):
|
||||||
elif index == 4: # numpad
|
elif index == 4: # numpad
|
||||||
kind = 3
|
kind = 3
|
||||||
else: # unknown device number on 27Mhz receiver
|
else: # unknown device number on 27Mhz receiver
|
||||||
logger.error("failed to calculate device kind for device %d of %s", index, self)
|
logger.error("failed to calculate device kind for device %d of %s", index, receiver)
|
||||||
raise exceptions.NoSuchDevice(number=index, receiver=self, error="Unknown 27Mhz device number")
|
raise exceptions.NoSuchDevice(number=index, receiver=receiver, error="Unknown 27Mhz device number")
|
||||||
return kind
|
return kind
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
from unittest import mock
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from logitech_receiver import exceptions, receiver
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"index, expected_kind",
|
||||||
|
[
|
||||||
|
(0, None),
|
||||||
|
(1, 2), # mouse
|
||||||
|
(2, 2), # mouse
|
||||||
|
(3, 1), # keyboard
|
||||||
|
(4, 3), # numpad
|
||||||
|
(5, None),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def test_get_kind_from_index(index, expected_kind):
|
||||||
|
mock_receiver = mock.Mock()
|
||||||
|
|
||||||
|
if expected_kind:
|
||||||
|
assert receiver._get_kind_from_index(mock_receiver, index) == expected_kind
|
||||||
|
else:
|
||||||
|
with pytest.raises(exceptions.NoSuchDevice):
|
||||||
|
receiver._get_kind_from_index(mock_receiver, index)
|
Loading…
Reference in New Issue