Skip to content

Commit 369d45e

Browse files
authored
DiagnosticStatus encode missing tuple check. (#1533)
1 parent 92cc53a commit 369d45e

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

pymodbus/diag_message.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ def encode(self):
146146
packet += self.message.encode()
147147
elif isinstance(self.message, bytes):
148148
packet += self.message
149-
elif isinstance(self.message, list):
149+
elif isinstance(self.message, (list, tuple)):
150150
for piece in self.message:
151151
packet += struct.pack(">H", piece)
152152
elif isinstance(self.message, int):

test/test_diag_messages.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,23 @@ class TestDataStore:
119119
(GetClearModbusPlusResponse, b"\x00\x15\x00\x04" + b"\x00\x00" * 55),
120120
]
121121

122+
def test_diagnostic_encode_decode(self):
123+
"""Testing diagnostic request/response can be decoded and encoded."""
124+
for msg in (DiagnosticStatusRequest, DiagnosticStatusResponse):
125+
msg_obj = msg()
126+
data = b"\x00\x01\x02\x03"
127+
msg_obj.decode(data)
128+
result = msg_obj.encode()
129+
assert data == result
130+
122131
def test_diagnostic_requests_decode(self):
123132
"""Testing diagnostic request messages encoding"""
124133
for msg, enc, _ in self.requests:
125134
handle = DiagnosticStatusRequest()
126135
handle.decode(enc)
127136
assert handle.sub_function_code == msg.sub_function_code
137+
encoded = handle.encode()
138+
assert enc == encoded
128139

129140
def test_diagnostic_simple_requests(self):
130141
"""Testing diagnostic request messages encoding"""

0 commit comments

Comments
 (0)