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
|
||||
online = True
|
||||
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()
|
||||
return online, encrypted, wpid, kind
|
||||
|
||||
|
@ -414,10 +414,11 @@ class Ex100Receiver(Receiver):
|
|||
if not wpid:
|
||||
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")
|
||||
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)"}
|
||||
|
||||
def get_kind_from_index(self, index):
|
||||
|
||||
def _get_kind_from_index(receiver, index):
|
||||
"""Get device kind from 27Mhz device index"""
|
||||
# From drivers/hid/hid-logitech-dj.c
|
||||
if index == 1: # mouse
|
||||
|
@ -429,8 +430,8 @@ class Ex100Receiver(Receiver):
|
|||
elif index == 4: # numpad
|
||||
kind = 3
|
||||
else: # unknown device number on 27Mhz receiver
|
||||
logger.error("failed to calculate device kind for device %d of %s", index, self)
|
||||
raise exceptions.NoSuchDevice(number=index, receiver=self, error="Unknown 27Mhz device number")
|
||||
logger.error("failed to calculate device kind for device %d of %s", index, receiver)
|
||||
raise exceptions.NoSuchDevice(number=index, receiver=receiver, error="Unknown 27Mhz device number")
|
||||
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