@@ -228,6 +228,61 @@ func (s *SessionSuite) TestCheckTargetTooLow() {
228228 s .Nil (s .session .checkTargetTooLow (msg ))
229229}
230230
231+ func (s * SessionSuite ) TestShouldSendReset () {
232+ var tests = []struct {
233+ BeginString string
234+ ResetOnLogon bool
235+ ResetOnDisconnect bool
236+ ResetOnLogout bool
237+ NextSenderMsgSeqNum int
238+ NextTargetMsgSeqNum int
239+ Expected bool
240+ }{
241+ {BeginStringFIX40 , true , false , false , 1 , 1 , false }, //ResetSeqNumFlag not available < fix41
242+
243+ {BeginStringFIX41 , true , false , false , 1 , 1 , true }, //session must be configured to reset on logon
244+ {BeginStringFIX42 , true , false , false , 1 , 1 , true },
245+ {BeginStringFIX43 , true , false , false , 1 , 1 , true },
246+ {BeginStringFIX44 , true , false , false , 1 , 1 , true },
247+ {BeginStringFIXT11 , true , false , false , 1 , 1 , true },
248+
249+ {BeginStringFIX41 , false , true , false , 1 , 1 , true }, //or disconnect
250+ {BeginStringFIX42 , false , true , false , 1 , 1 , true },
251+ {BeginStringFIX43 , false , true , false , 1 , 1 , true },
252+ {BeginStringFIX44 , false , true , false , 1 , 1 , true },
253+ {BeginStringFIXT11 , false , true , false , 1 , 1 , true },
254+
255+ {BeginStringFIX41 , false , false , true , 1 , 1 , true }, //or logout
256+ {BeginStringFIX42 , false , false , true , 1 , 1 , true },
257+ {BeginStringFIX43 , false , false , true , 1 , 1 , true },
258+ {BeginStringFIX44 , false , false , true , 1 , 1 , true },
259+ {BeginStringFIXT11 , false , false , true , 1 , 1 , true },
260+
261+ {BeginStringFIX41 , true , true , false , 1 , 1 , true }, //or combo
262+ {BeginStringFIX42 , false , true , true , 1 , 1 , true },
263+ {BeginStringFIX43 , true , false , true , 1 , 1 , true },
264+ {BeginStringFIX44 , true , true , true , 1 , 1 , true },
265+
266+ {BeginStringFIX41 , false , false , false , 1 , 1 , false }, //or will not be set
267+
268+ {BeginStringFIX41 , true , false , false , 1 , 10 , false }, //session seq numbers should be reset at the time of check
269+ {BeginStringFIX42 , true , false , false , 2 , 1 , false },
270+ {BeginStringFIX43 , true , false , false , 14 , 100 , false },
271+ }
272+
273+ for _ , test := range tests {
274+ s .session .sessionID .BeginString = test .BeginString
275+ s .session .ResetOnLogon = test .ResetOnLogon
276+ s .session .ResetOnDisconnect = test .ResetOnDisconnect
277+ s .session .ResetOnLogout = test .ResetOnLogout
278+
279+ s .MockStore .SetNextSenderMsgSeqNum (test .NextSenderMsgSeqNum )
280+ s .MockStore .SetNextTargetMsgSeqNum (test .NextTargetMsgSeqNum )
281+
282+ s .Equal (s .shouldSendReset (), test .Expected )
283+ }
284+ }
285+
231286func (s * SessionSuite ) TestCheckSessionTimeNoStartTimeEndTime () {
232287 var tests = []struct {
233288 before , after sessionState
@@ -851,7 +906,7 @@ func (suite *SessionSendTestSuite) TestSendDisableMessagePersist() {
851906
852907func (suite * SessionSendTestSuite ) TestDropAndSendAdminMessage () {
853908 suite .MockApp .On ("ToAdmin" )
854- suite .Require ().Nil (suite .dropAndSend (suite .Heartbeat (), false ))
909+ suite .Require ().Nil (suite .dropAndSend (suite .Heartbeat ()))
855910 suite .MockApp .AssertExpectations (suite .T ())
856911
857912 suite .MessagePersisted (suite .MockApp .lastToAdmin )
@@ -868,7 +923,7 @@ func (suite *SessionSendTestSuite) TestDropAndSendDropsQueue() {
868923 suite .NoMessageSent ()
869924
870925 suite .MockApp .On ("ToAdmin" )
871- require .Nil (suite .T (), suite .dropAndSend (suite .Logon (), false ))
926+ require .Nil (suite .T (), suite .dropAndSend (suite .Logon ()))
872927 suite .MockApp .AssertExpectations (suite .T ())
873928
874929 msg := suite .MockApp .lastToAdmin
@@ -889,7 +944,8 @@ func (suite *SessionSendTestSuite) TestDropAndSendDropsQueueWithReset() {
889944 suite .NoMessageSent ()
890945
891946 suite .MockApp .On ("ToAdmin" )
892- require .Nil (suite .T (), suite .dropAndSend (suite .Logon (), true ))
947+ suite .MockStore .Reset ()
948+ require .Nil (suite .T (), suite .dropAndSend (suite .Logon ()))
893949 suite .MockApp .AssertExpectations (suite .T ())
894950 msg := suite .MockApp .lastToAdmin
895951
0 commit comments