1414S_CMD_SUCCESS = Message ('S' , '00,0,31' )
1515S_CMD_ERROR = Message ('S' , '100,1,31' )
1616S_CMD_THROTTLE_ERROR = Message ('S' , '100,1,0' )
17+ Q_CMD = Message ('q' )
1718
1819TEST_TIMEOUT = Timeout ('test' , 1.0 )
1920
@@ -35,16 +36,17 @@ def testDisconnectIsNoopIfAlreadyDisconnected(self, ClassMock):
3536 self .connection .recv .assert_not_called ()
3637 self .connection .close .assert_not_called ()
3738
38- def testUpdateOpensNewConnectionIfDisconnected (self , ClassMock ):
39+ def testUpdateOpensNewNonPersistantConnectionAndClosesIt (self , ClassMock ):
3940 messages = [Message ('H' ), Message ('L' )]
4041 self .init (ClassMock )
42+ self .commander .use_persistent_connection = False
4143 self .connection .recv .side_effect = messages
4244
4345 self .assertEqual (messages , self .commander .update ())
4446
45- self .connection .send .assert_not_called ( )
47+ self .connection .send .assert_called_once_with ( Q_CMD )
4648 self .assertEqual (2 , self .connection .recv .call_count )
47- self .connection .close .assert_not_called ()
49+ self .connection .close .assert_called_once ()
4850
4951 def testUpdateSendsCommandAfterAfterTimeout (self , ClassMock ):
5052 messages = [Message ('H' ), None ]
@@ -78,6 +80,21 @@ def testSendRadioMsgAutoconnects(self, ClassMock = None):
7880 self .assertEqual (2 , self .connection .recv .call_count )
7981 self .connection .close .assert_not_called ()
8082
83+ def testSendRadioMsgOpensNewNonPersistentConnectionAndClosesIt (self , ClassMock = None ):
84+ self .init (ClassMock )
85+ self .commander .use_persistent_connection = False
86+ self .connection .recv .side_effect = [
87+ L_CMD_SUCCESS , # connection preambule
88+ S_CMD_SUCCESS
89+ ]
90+
91+ self .assertTrue (self .commander .send_radio_msg (S_CMD_HEX ))
92+ self .connection .send .assert_has_calls ([
93+ call (S_CMD ), call (Q_CMD )
94+ ])
95+ self .assertEqual (2 , self .connection .recv .call_count )
96+ self .connection .close .assert_called_once ()
97+
8198 def testSendRadioMsgReusesConnection (self , ClassMock ):
8299 self .testSendRadioMsgAutoconnects ()
83100
0 commit comments