17
17
18
18
TEST_MESSAGE = b"\x06 \x00 \x0a \x00 \x0b \x00 \x0c "
19
19
20
- # ---------------------------------------------------------------------------#
21
- # Fixture
22
- # ---------------------------------------------------------------------------#
23
-
24
-
25
20
class TestReadRegisterMessages :
26
21
"""Register Message Test Fixture.
27
22
@@ -86,14 +81,15 @@ def test_register_read_response_decode_error(self):
86
81
with pytest .raises (ModbusIOException ):
87
82
reg .decode (b'\x14 \x00 \x03 \x00 \x11 ' )
88
83
89
- async def test_register_read_requests_count_errors (self ):
84
+ async def test_register_read_requests_count_errors (self , mock_context ):
90
85
"""This tests that the register request messages.
91
86
92
87
will break on counts that are out of range
93
88
"""
89
+ context = mock_context ()
94
90
requests = [
95
- # ReadHoldingRegistersRequest(address=1, count=0x800),
96
- # ReadInputRegistersRequest(address=1, count=0x800),
91
+ ReadHoldingRegistersRequest (address = 1 , count = 0x800 ),
92
+ ReadInputRegistersRequest (address = 1 , count = 0x800 ),
97
93
ReadWriteMultipleRegistersRequest (
98
94
read_address = 1 , read_count = 0x800 , write_address = 1 , write_registers = [5 ]
99
95
),
@@ -102,7 +98,7 @@ async def test_register_read_requests_count_errors(self):
102
98
),
103
99
]
104
100
for request in requests :
105
- result = await request .update_datastore (None )
101
+ result = await request .update_datastore (context )
106
102
assert result .exception_code == ExcCodes .ILLEGAL_VALUE
107
103
108
104
async def test_register_read_requests_verify_errors (self , mock_context ):
@@ -114,8 +110,8 @@ async def test_register_read_requests_verify_errors(self, mock_context):
114
110
requests = [
115
111
ReadHoldingRegistersRequest (address = - 1 , count = 5 ),
116
112
ReadInputRegistersRequest (address = - 1 , count = 5 ),
117
- # ReadWriteMultipleRegistersRequest(-1,5,1,5 ),
118
- # ReadWriteMultipleRegistersRequest(1,5,-1,5 ),
113
+ ReadWriteMultipleRegistersRequest (- 1 ,5 ,1 ,[ 5 ] ),
114
+ ReadWriteMultipleRegistersRequest (1 ,5 ,- 1 ,[ 5 ] ),
119
115
]
120
116
for request in requests :
121
117
await request .update_datastore (context )
@@ -147,17 +143,28 @@ async def test_read_write_multiple_registers_verify(self, mock_context):
147
143
"""Test read/write multiple registers."""
148
144
context = mock_context ()
149
145
request = ReadWriteMultipleRegistersRequest (
150
- read_address = 1 , read_count = 10 , write_address = 2 , write_registers = [0x00 ]
146
+ read_address = 1 , read_count = 0x200 , write_address = 2 , write_registers = [0x00 ]
151
147
)
152
- await request .update_datastore (context )
153
- # assert response.exception_code == ExcCodes.ILLEGAL_ADDRESS
148
+ response = await request .update_datastore (context )
149
+ assert response .exception_code == ExcCodes .ILLEGAL_VALUE
154
150
155
151
await request .update_datastore (context )
156
- # assert response.exception_code == ExcCodes.ILLEGAL_ADDRESS
152
+ assert response .exception_code == ExcCodes .ILLEGAL_VALUE
157
153
158
154
request .write_byte_count = 0x100
159
155
await request .update_datastore (context )
160
- #assert response.exception_code == ExcCodes.ILLEGAL_VALUE
156
+ assert response .exception_code == ExcCodes .ILLEGAL_VALUE
157
+
158
+ async def test_register_datastore_exceptions (self , mock_context ):
159
+ """Test exception response from datastore."""
160
+ context = mock_context ()
161
+ context .async_getValues = mock .AsyncMock (return_value = ExcCodes .ILLEGAL_VALUE )
162
+ for pdu in (
163
+ ReadHoldingRegistersRequest (address = - 1 , count = 5 ),
164
+ ReadInputRegistersRequest (address = - 1 , count = 5 ),
165
+ ReadWriteMultipleRegistersRequest (- 1 , 5 , 1 , [5 ], 1 ),
166
+ ):
167
+ await pdu .update_datastore (context )
161
168
162
169
def test_serializing_to_string (self ):
163
170
"""Test serializing to string."""
0 commit comments