87 lines
2.0 KiB
Python
87 lines
2.0 KiB
Python
import pytest
|
|
|
|
from lib.logitech_receiver import common
|
|
|
|
|
|
def test_crc16():
|
|
value = b"123456789"
|
|
expected = 0x29B1
|
|
|
|
result = common.crc16(value)
|
|
|
|
assert result == expected
|
|
|
|
|
|
def test_named_int():
|
|
named_int = common.NamedInt(0x2, "pulse")
|
|
|
|
assert named_int.name == "pulse"
|
|
assert named_int == 2
|
|
|
|
|
|
def test_named_int_comparison():
|
|
default_value = 0
|
|
default_name = "entry"
|
|
named_int = common.NamedInt(default_value, default_name)
|
|
|
|
named_int_equal = common.NamedInt(default_value, default_name)
|
|
named_int_unequal_name = common.NamedInt(default_value, "unequal")
|
|
named_int_unequal_value = common.NamedInt(5, default_name)
|
|
named_int_unequal = common.NamedInt(2, "unequal")
|
|
|
|
assert named_int == named_int_equal
|
|
assert named_int != named_int_unequal_name
|
|
assert named_int != named_int_unequal_value
|
|
assert named_int != named_int_unequal
|
|
|
|
|
|
@pytest.fixture
|
|
def named_ints():
|
|
return common.NamedInts(empty=0, critical=5, low=20, good=50, full=90)
|
|
|
|
|
|
def test_named_ints(named_ints):
|
|
assert named_ints.empty == 0
|
|
assert named_ints.empty.name == "empty"
|
|
assert named_ints.critical == 5
|
|
assert named_ints.critical.name == "critical"
|
|
assert named_ints.low == 20
|
|
assert named_ints.low.name == "low"
|
|
assert named_ints.good == 50
|
|
assert named_ints.good.name == "good"
|
|
assert named_ints.full == 90
|
|
assert named_ints.full.name == "full"
|
|
|
|
assert len(named_ints) == 5
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"bytes_input, expected_output",
|
|
[
|
|
(b"\x01\x02\x03\x04", "01020304"),
|
|
(b"", ""),
|
|
],
|
|
)
|
|
def test_strhex(bytes_input, expected_output):
|
|
result = common.strhex(bytes_input)
|
|
|
|
assert result == expected_output
|
|
|
|
|
|
def test_bytest2int():
|
|
value = b"\x12\x34\x56\x78"
|
|
expected = 0x12345678
|
|
|
|
result = common.bytes2int(value)
|
|
|
|
assert result == expected
|
|
|
|
|
|
def test_int2bytes():
|
|
value = 0x12345678
|
|
expected = b"\x12\x34\x56\x78"
|
|
|
|
result = common.int2bytes(value)
|
|
|
|
assert result == expected
|