@@ -20,8 +20,6 @@ import (
2020 "testing"
2121 "time"
2222
23- "github.com/stretchr/testify/assert"
24-
2523 "github.com/quickfixgo/quickfix/datadictionary"
2624)
2725
@@ -32,6 +30,7 @@ type validateTest struct {
3230 ExpectedRejectReason int
3331 ExpectedRefTagID * Tag
3432 DoNotExpectReject bool
33+ ExpectParseError bool
3534}
3635
3736func TestValidate (t * testing.T ) {
@@ -90,38 +89,49 @@ func TestValidate(t *testing.T) {
9089
9190 msg := NewMessage ()
9291 for _ , test := range tests {
93- assert .Nil (t , ParseMessage (msg , bytes .NewBuffer (test .MessageBytes )))
94- reject := test .Validator .Validate (msg )
92+ t .Run (test .TestName , func (t * testing.T ) {
93+ err := ParseMessage (msg , bytes .NewBuffer (test .MessageBytes ))
94+
95+ if test .ExpectParseError {
96+ if err == nil {
97+ t .Errorf ("%v: Expected ParseMessage to fail, but it succeeded" , test .TestName )
98+ }
99+ return
100+ }
95101
96- switch {
97- case reject == nil && test .DoNotExpectReject :
98- continue
102+ if err != nil {
103+ t .Fatalf ("ParseMessage failed: %v" , err )
104+ }
105+ reject := test .Validator .Validate (msg )
99106
100- case reject != nil && test . DoNotExpectReject :
101- t . Errorf ( "%v: Unexpected reject: %v" , test .TestName , reject )
102- continue
107+ switch {
108+ case reject == nil && test .DoNotExpectReject :
109+ return
103110
104- case reject == nil :
105- t .Errorf ("%v: Expected reject" , test .TestName )
106- continue
107- }
111+ case reject != nil && test .DoNotExpectReject :
112+ t .Errorf ("%v: Unexpected reject: %v" , test .TestName , reject )
113+ return
108114
109- if reject .RejectReason () != test .ExpectedRejectReason {
110- t .Errorf ("%v: Expected reason %v got %v" , test .TestName , test .ExpectedRejectReason , reject .RejectReason ())
111- }
115+ case reject == nil :
116+ t .Errorf ("%v: Expected reject" , test .TestName )
117+ return
118+ }
112119
113- switch {
114- case reject .RefTagID () == nil && test .ExpectedRefTagID == nil :
115- // OK, expected and actual ref tag not set.
116- case reject .RefTagID () != nil && test .ExpectedRefTagID == nil :
117- t .Errorf ("%v: Unexpected RefTag '%v'" , test .TestName , * reject .RefTagID ())
118- case reject .RefTagID () == nil && test .ExpectedRefTagID != nil :
119- t .Errorf ("%v: Expected RefTag '%v'" , test .TestName , * test .ExpectedRefTagID )
120- case * reject .RefTagID () == * test .ExpectedRefTagID :
121- // OK, tags equal.
122- default :
123- t .Errorf ("%v: Expected RefTag '%v' got '%v'" , test .TestName , * test .ExpectedRefTagID , * reject .RefTagID ())
124- }
120+ if reject .RejectReason () != test .ExpectedRejectReason {
121+ t .Errorf ("%v: Expected reason %v got %v" , test .TestName , test .ExpectedRejectReason , reject .RejectReason ())
122+ }
123+
124+ switch {
125+ case reject .RefTagID () == nil && test .ExpectedRefTagID == nil :
126+ case reject .RefTagID () != nil && test .ExpectedRefTagID == nil :
127+ t .Errorf ("%v: Unexpected RefTag '%v'" , test .TestName , * reject .RefTagID ())
128+ case reject .RefTagID () == nil && test .ExpectedRefTagID != nil :
129+ t .Errorf ("%v: Expected RefTag '%v'" , test .TestName , * test .ExpectedRefTagID )
130+ case * reject .RefTagID () == * test .ExpectedRefTagID :
131+ default :
132+ t .Errorf ("%v: Expected RefTag '%v' got '%v'" , test .TestName , * test .ExpectedRefTagID , * reject .RefTagID ())
133+ }
134+ })
125135 }
126136}
127137
@@ -201,6 +211,7 @@ func tcInvalidTagNumberHeader() validateTest {
201211 invalidHeaderFieldMessage := createFIX40NewOrderSingle ()
202212 tag := Tag (9999 )
203213 invalidHeaderFieldMessage .Header .SetField (tag , FIXString ("hello" ))
214+ invalidHeaderFieldMessage .cook ()
204215 msgBytes := invalidHeaderFieldMessage .build ()
205216
206217 return validateTest {
@@ -1109,7 +1120,7 @@ func tcTagAppearsMoreThanOnce() validateTest {
11091120 return validateTest {
11101121 TestName : "Tag appears more than once" ,
11111122 Validator : validator ,
1112- MessageBytes : []byte ("8=FIX.4.09=10735=D34=249=TW52=20060102-15:04:0556=ISLD11=ID21=140=140=254=138=20055=INTC60=20060102-15:04:0510=234 " ),
1123+ MessageBytes : []byte ("8=FIX.4.09=10735=D34=249=TW52=20060102-15:04:0556=ISLD11=ID21=140=140=254=138=20055=INTC60=20060102-15:04:0510=166 " ),
11131124 ExpectedRejectReason : rejectReasonTagAppearsMoreThanOnce ,
11141125 ExpectedRefTagID : & tag ,
11151126 }
@@ -1124,7 +1135,7 @@ func tcTagAppearsMoreThanOnceFixT() validateTest {
11241135 return validateTest {
11251136 TestName : "Tag appears more than once FIXT" ,
11261137 Validator : validator ,
1127- MessageBytes : []byte ("8=FIXT.1.19=10735=D34=249=TW52=20060102-15:04:0556=ISLD11=ID21=140=140=254=138=20055=INTC60=20060102-15:04:0510=234 " ),
1138+ MessageBytes : []byte ("8=FIXT.1.19=10735=D34=249=TW52=20060102-15:04:0556=ISLD11=ID21=140=140=254=138=20055=INTC60=20060102-15:04:0510=248 " ),
11281139 ExpectedRejectReason : rejectReasonTagAppearsMoreThanOnce ,
11291140 ExpectedRefTagID : & tag ,
11301141 }
@@ -1151,7 +1162,7 @@ func tcFloatValidationFixT() validateTest {
11511162 return validateTest {
11521163 TestName : "FloatValidation FIXT" ,
11531164 Validator : validator ,
1154- MessageBytes : []byte ("8=FIXT.1.19=10635=D34=249=TW52=20140329-22:38:4556=ISLD11=ID21=140=154=138=+200.0055=INTC60=20140329-22:38:4510=178 " ),
1165+ MessageBytes : []byte ("8=FIXT.1.19=10635=D34=249=TW52=20140329-22:38:4556=ISLD11=ID21=140=154=138=+200.0055=INTC60=20140329-22:38:4510=002 " ),
11551166 ExpectedRejectReason : rejectReasonIncorrectDataFormatForValue ,
11561167 ExpectedRefTagID : & tag ,
11571168 }
@@ -1163,7 +1174,7 @@ func tcMultipleRepeatingGroupFields() validateTest {
11631174 return validateTest {
11641175 TestName : "Multiple repeating group fields in a message" ,
11651176 Validator : validator ,
1166- MessageBytes : []byte ("8=FIX.4.39=17635=D34=249=TW52=20140329-22:38:4556=ISLD11=ID453=2448=PARTYID452=3523=SUBID448=PARTYID2452=378=179=ACCOUNT80=121=140=154=138=20055=INTC60=20140329-22:38:4510=178 " ),
1177+ MessageBytes : []byte ("8=FIX.4.39=17635=D34=249=TW52=20140329-22:38:4556=ISLD11=ID453=2448=PARTYID452=3523=SUBID448=PARTYID2452=378=179=ACCOUNT80=121=140=154=138=20055=INTC60=20140329-22:38:4510=012 " ),
11671178 DoNotExpectReject : true ,
11681179 }
11691180}
0 commit comments