|
@@ -0,0 +1,64 @@
|
|
|
+import unittest.mock
|
|
|
+
|
|
|
+import pytest
|
|
|
+
|
|
|
+import cc1101.options
|
|
|
+
|
|
|
+
|
|
|
+def test_transmit_empty_payload(transceiver):
|
|
|
+ with unittest.mock.patch.object(
|
|
|
+ transceiver,
|
|
|
+ "get_packet_length_mode",
|
|
|
+ return_value=cc1101.options.PacketLengthMode.VARIABLE,
|
|
|
+ ), unittest.mock.patch.object(
|
|
|
+ transceiver, "get_packet_length_bytes", return_value=21
|
|
|
+ ):
|
|
|
+ with pytest.raises(ValueError, match=r"\bempty\b"):
|
|
|
+ transceiver.transmit([])
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize("payload", (b"\0\x01\x02", [0, 127]))
|
|
|
+def test_transmit_first_null(transceiver, payload):
|
|
|
+ with unittest.mock.patch.object(
|
|
|
+ transceiver,
|
|
|
+ "get_packet_length_mode",
|
|
|
+ return_value=cc1101.options.PacketLengthMode.VARIABLE,
|
|
|
+ ), unittest.mock.patch.object(
|
|
|
+ transceiver, "get_packet_length_bytes", return_value=21
|
|
|
+ ):
|
|
|
+ with pytest.raises(ValueError, match=r"\bfirst byte\b.*\bmust not be null\b"):
|
|
|
+ transceiver.transmit(payload)
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("max_packet_length", "payload"),
|
|
|
+ ((3, "\x04\x01\x02\x03"), (4, [7, 21, 42, 0, 0, 1, 2, 3])),
|
|
|
+)
|
|
|
+def test_transmit_exceeding_max_length(transceiver, max_packet_length, payload):
|
|
|
+ with unittest.mock.patch.object(
|
|
|
+ transceiver,
|
|
|
+ "get_packet_length_mode",
|
|
|
+ return_value=cc1101.options.PacketLengthMode.VARIABLE,
|
|
|
+ ), unittest.mock.patch.object(
|
|
|
+ transceiver, "get_packet_length_bytes", return_value=max_packet_length
|
|
|
+ ):
|
|
|
+ with pytest.raises(
|
|
|
+ ValueError, match=r"\bpayload exceeds maximum payload length\b"
|
|
|
+ ):
|
|
|
+ transceiver.transmit(payload)
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("packet_length", "payload"),
|
|
|
+ ((3, "\x04\x01\x02\x03"), (4, [7, 21, 42, 0, 0, 1, 2, 3])),
|
|
|
+)
|
|
|
+def test_transmit_unexpected_payload_len(transceiver, packet_length, payload):
|
|
|
+ with unittest.mock.patch.object(
|
|
|
+ transceiver,
|
|
|
+ "get_packet_length_mode",
|
|
|
+ return_value=cc1101.options.PacketLengthMode.FIXED,
|
|
|
+ ), unittest.mock.patch.object(
|
|
|
+ transceiver, "get_packet_length_bytes", return_value=packet_length
|
|
|
+ ):
|
|
|
+ with pytest.raises(ValueError, match=r"\bpayload length\b"):
|
|
|
+ transceiver.transmit(payload)
|