Skip to content

Commit 7f2fb2d

Browse files
author
Chris Busbey
committed
test coverage around sequence resets in resend state
1 parent a209fdb commit 7f2fb2d

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

quickfix_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,13 @@ func (m *MessageFactory) ResendRequest(beginSeqNo int) Message {
151151
return msg
152152
}
153153

154+
func (m *MessageFactory) SequenceReset(seqNo int) Message {
155+
msg := m.buildMessage(enum.MsgType_SEQUENCE_RESET)
156+
msg.Body.SetField(tagNewSeqNo, FIXInt(seqNo))
157+
158+
return msg
159+
}
160+
154161
type MockSessionReceiver struct {
155162
sendChannel chan []byte
156163
}

resend_state_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,34 @@ func (s *resendStateTestSuite) TestFixMsgIn() {
9595
s.State(inSession{})
9696
s.NextTargetMsgSeqNum(5)
9797
}
98+
99+
func (s *resendStateTestSuite) TestFixMsgInSequenceReset() {
100+
s.session.State = inSession{}
101+
102+
//in session expects seq number 1, send too high
103+
s.MessageFactory.SetNextSeqNum(3)
104+
s.MockApp.On("ToAdmin")
105+
106+
msgSeqNum2 := s.NewOrderSingle()
107+
s.fixMsgIn(s.session, msgSeqNum2)
108+
109+
s.MockApp.AssertExpectations(s.T())
110+
s.State(resendState{})
111+
s.LastToAdminMessageSent()
112+
s.MessageType(enum.MsgType_RESEND_REQUEST, s.MockApp.lastToAdmin)
113+
s.FieldEquals(tagBeginSeqNo, 1, s.MockApp.lastToAdmin.Body)
114+
s.NextTargetMsgSeqNum(1)
115+
116+
s.MessageFactory.SetNextSeqNum(1)
117+
s.MockApp.On("FromAdmin").Return(nil)
118+
s.fixMsgIn(s.session, s.SequenceReset(2))
119+
s.NextTargetMsgSeqNum(2)
120+
s.State(resendState{})
121+
122+
s.MockApp.On("FromApp").Return(nil)
123+
s.fixMsgIn(s.session, s.NewOrderSingle())
124+
125+
s.MockApp.AssertNumberOfCalls(s.T(), "FromApp", 2)
126+
s.NextTargetMsgSeqNum(4)
127+
s.State(inSession{})
128+
}

0 commit comments

Comments
 (0)