@@ -35,12 +35,6 @@ def fixture_ascii_framer():
3535 return ModbusAsciiFramer (ClientDecoder ())
3636
3737
38- # @pytest.fixture
39- # def binary_framer():
40- # """Binary framer."""
41- # return ModbusBinaryFramer(ClientDecoder())
42-
43-
4438@pytest .mark .parametrize (
4539 "framer" ,
4640 [
@@ -98,14 +92,6 @@ def test_framer_initialization(framer):
9892 ]
9993
10094
101- @pytest .mark .parametrize ("data" , [(b"" , {}), (b"abcd" , {"fcode" : 98 , "slave" : 97 })])
102- def test_decode_data (rtu_framer , data ):
103- """Test decode data."""
104- data , expected = data
105- decoded = rtu_framer .decode_data (data )
106- assert decoded == expected
107-
108-
10995@pytest .mark .parametrize (
11096 "data" ,
11197 [
@@ -301,12 +287,6 @@ def test_rtu_incoming_packet(rtu_framer, data):
301287 assert mock_reset .call_count == (1 if reset_called else 0 )
302288
303289
304- def test_build_packet (rtu_framer ):
305- """Test build packet."""
306- message = ReadCoilsRequest (1 , 10 )
307- assert rtu_framer .buildPacket (message ) == TEST_MESSAGE
308-
309-
310290def test_send_packet (rtu_framer ):
311291 """Test send packet."""
312292 message = TEST_MESSAGE
@@ -403,3 +383,60 @@ def _handle_response(_reply):
403383 framer = ModbusSocketFramer (ClientDecoder ())
404384 framer .processIncomingPacket (message , _handle_response , slave = 0 )
405385 assert response_ok , "Response is valid, but not accepted"
386+
387+ # ---- 100% coverage
388+ @pytest .mark .parametrize (
389+ ("framer" , "message" ),
390+ [
391+ (ModbusAsciiFramer , b':00010001000AF4\r \n ' ,),
392+ (ModbusBinaryFramer , b'{\x00 \x01 \x00 \x01 \x00 \n \xec \x1c }' ,),
393+ (ModbusRtuFramer , b"\x00 \x01 \x00 \x01 \x00 \n \xec \x1c " ,),
394+ (ModbusSocketFramer , b'\x00 \x00 \x00 \x00 \x00 \x06 \x00 \x01 \x00 \x01 \x00 \n ' ,),
395+ ]
396+ )
397+ def test_build_packet (framer , message ):
398+ """Test build packet."""
399+ test_framer = framer (ClientDecoder ())
400+ request = ReadCoilsRequest (1 , 10 )
401+ assert test_framer .buildPacket (request ) == message
402+
403+
404+ @pytest .mark .parametrize (
405+ ("framer" , "message" ),
406+ [
407+ (ModbusAsciiFramer , b':00010001000AF4\r \n ' ,),
408+ (ModbusBinaryFramer , b'{\x00 \x01 \x00 \x01 \x00 \n \xec \x1c }' ,),
409+ (ModbusRtuFramer , b"\x00 \x01 \x00 \x01 \x00 \n \xec \x1c " ,),
410+ (ModbusSocketFramer , b'\x00 \x00 \x00 \x00 \x00 \x06 \x00 \x01 \x00 \x01 \x00 \n ' ,),
411+ ]
412+ )
413+ def test_processincomingpacket (framer , message ):
414+ """Test processIncomingPacket."""
415+ test_framer = framer (ClientDecoder ())
416+ with mock .patch .object (
417+ framer ,
418+ "_process" ,
419+ wraps = test_framer ._process , # pylint: disable=protected-access
420+ ), mock .patch .object (
421+ test_framer , "resetFrame" , wraps = test_framer .resetFrame
422+ ):
423+ test_framer .processIncomingPacket (message , mock .Mock (), 0x01 )
424+
425+ @pytest .mark .parametrize (
426+ ("framer" , "message" ),
427+ [
428+ (ModbusAsciiFramer , b':61620001000AF4\r \n ' ,),
429+ (ModbusBinaryFramer , b'{\x61 \x62 \x00 \x01 \x00 \n \xec \x1c }' ,),
430+ (ModbusRtuFramer , b"\x61 \x62 \x00 \x01 \x00 \n \xec \x1c " ,),
431+ (ModbusSocketFramer , b'\x00 \x00 \x00 \x00 \x00 \x06 \x61 \x62 \x00 \x01 \x00 \n ' ,),
432+ ]
433+ )
434+ @pytest .mark .parametrize ("expected" , [{"fcode" : 98 , "slave" : 97 }])
435+ def test_decode_data (framer , message , expected ):
436+ """Test decode data."""
437+ test_framer = framer (ClientDecoder ())
438+ decoded = test_framer .decode_data (b'' )
439+ assert decoded == {}
440+ decoded = test_framer .decode_data (message )
441+ assert decoded ["fcode" ] == expected ["fcode" ]
442+ assert decoded ["slave" ] == expected ["slave" ]
0 commit comments