@@ -133,3 +133,112 @@ func (s *InSessionTestSuite) TestFIXMsgInTargetTooHigh() {
133133 stashedRawMsg , _ := stashedMsg .Build ()
134134 s .Equal (string (rawMsg ), string (stashedRawMsg ))
135135}
136+
137+ func (s * InSessionTestSuite ) TestFIXMsgInResendRequestAllAdminExpectGapFill () {
138+ s .MockApp .On ("ToAdmin" )
139+ s .session .Timeout (s .session , internal .NeedHeartbeat )
140+ s .LastToAdminMessageSent ()
141+
142+ s .session .Timeout (s .session , internal .NeedHeartbeat )
143+ s .LastToAdminMessageSent ()
144+
145+ s .session .Timeout (s .session , internal .NeedHeartbeat )
146+ s .LastToAdminMessageSent ()
147+
148+ s .MockApp .AssertNumberOfCalls (s .T (), "ToAdmin" , 3 )
149+ s .NextSenderMsgSeqNum (4 )
150+
151+ s .MockApp .On ("FromAdmin" ).Return (nil )
152+ s .MockApp .On ("ToAdmin" )
153+ s .fixMsgIn (s .session , s .ResendRequest (1 ))
154+
155+ s .MockApp .AssertExpectations (s .T ())
156+ s .LastToAdminMessageSent ()
157+ s .MessageType (enum .MsgType_SEQUENCE_RESET , s .MockApp .lastToAdmin )
158+ s .FieldEquals (tagMsgSeqNum , 1 , s .MockApp .lastToAdmin .Header )
159+ s .FieldEquals (tagPossDupFlag , true , s .MockApp .lastToAdmin .Header )
160+ s .FieldEquals (tagNewSeqNo , 4 , s .MockApp .lastToAdmin .Body )
161+ s .FieldEquals (tagGapFillFlag , true , s .MockApp .lastToAdmin .Body )
162+
163+ s .NextSenderMsgSeqNum (4 )
164+ s .State (inSession {})
165+ }
166+
167+ func (s * InSessionTestSuite ) TestFIXMsgInResendRequestAllAdminThenApp () {
168+ s .MockApp .On ("ToAdmin" )
169+ s .session .Timeout (s .session , internal .NeedHeartbeat )
170+ s .LastToAdminMessageSent ()
171+
172+ s .session .Timeout (s .session , internal .NeedHeartbeat )
173+ s .LastToAdminMessageSent ()
174+
175+ s .MockApp .On ("ToApp" ).Return (nil )
176+ s .session .send (s .NewOrderSingle ())
177+ s .LastToAppMessageSent ()
178+
179+ s .MockApp .AssertNumberOfCalls (s .T (), "ToAdmin" , 2 )
180+ s .MockApp .AssertNumberOfCalls (s .T (), "ToApp" , 1 )
181+ s .NextSenderMsgSeqNum (4 )
182+
183+ s .MockApp .On ("FromAdmin" ).Return (nil )
184+ s .MockApp .On ("ToAdmin" )
185+ s .MockApp .On ("ToApp" ).Return (nil )
186+ s .fixMsgIn (s .session , s .ResendRequest (1 ))
187+
188+ s .MockApp .AssertNumberOfCalls (s .T (), "ToAdmin" , 3 )
189+ s .MockApp .AssertNumberOfCalls (s .T (), "ToApp" , 2 )
190+
191+ s .LastToAdminMessageSent ()
192+ s .MessageType (enum .MsgType_SEQUENCE_RESET , s .MockApp .lastToAdmin )
193+ s .FieldEquals (tagMsgSeqNum , 1 , s .MockApp .lastToAdmin .Header )
194+ s .FieldEquals (tagPossDupFlag , true , s .MockApp .lastToAdmin .Header )
195+ s .FieldEquals (tagNewSeqNo , 3 , s .MockApp .lastToAdmin .Body )
196+ s .FieldEquals (tagGapFillFlag , true , s .MockApp .lastToAdmin .Body )
197+
198+ s .LastToAppMessageSent ()
199+ s .MessageType (enum .MsgType_ORDER_SINGLE , s .MockApp .lastToApp )
200+ s .FieldEquals (tagMsgSeqNum , 3 , s .MockApp .lastToApp .Header )
201+ s .FieldEquals (tagPossDupFlag , true , s .MockApp .lastToApp .Header )
202+
203+ s .NextSenderMsgSeqNum (4 )
204+ s .State (inSession {})
205+ }
206+
207+ func (s * InSessionTestSuite ) TestFIXMsgInResendRequestDoNotSendApp () {
208+ s .MockApp .On ("ToAdmin" )
209+ s .session .Timeout (s .session , internal .NeedHeartbeat )
210+ s .LastToAdminMessageSent ()
211+
212+ s .MockApp .On ("ToApp" ).Return (nil )
213+ s .session .send (s .NewOrderSingle ())
214+ s .LastToAppMessageSent ()
215+
216+ s .session .Timeout (s .session , internal .NeedHeartbeat )
217+ s .LastToAdminMessageSent ()
218+
219+ s .MockApp .AssertNumberOfCalls (s .T (), "ToAdmin" , 2 )
220+ s .MockApp .AssertNumberOfCalls (s .T (), "ToApp" , 1 )
221+ s .NextSenderMsgSeqNum (4 )
222+
223+ //NOTE: a cheat here, need to reset mock
224+ s .MockApp = MockApp {}
225+ s .MockApp .On ("FromAdmin" ).Return (nil )
226+ s .MockApp .On ("ToApp" ).Return (ErrDoNotSend )
227+ s .MockApp .On ("ToAdmin" )
228+ s .fixMsgIn (s .session , s .ResendRequest (1 ))
229+
230+ s .MockApp .AssertNumberOfCalls (s .T (), "ToAdmin" , 1 )
231+ s .MockApp .AssertNumberOfCalls (s .T (), "ToApp" , 1 )
232+
233+ s .LastToAdminMessageSent ()
234+ s .MessageType (enum .MsgType_SEQUENCE_RESET , s .MockApp .lastToAdmin )
235+ s .FieldEquals (tagMsgSeqNum , 1 , s .MockApp .lastToAdmin .Header )
236+ s .FieldEquals (tagPossDupFlag , true , s .MockApp .lastToAdmin .Header )
237+ s .FieldEquals (tagNewSeqNo , 4 , s .MockApp .lastToAdmin .Body )
238+ s .FieldEquals (tagGapFillFlag , true , s .MockApp .lastToAdmin .Body )
239+
240+ s .NoMessageSent ()
241+
242+ s .NextSenderMsgSeqNum (4 )
243+ s .State (inSession {})
244+ }
0 commit comments