@@ -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
@@ -87,42 +85,60 @@ func TestValidate(t *testing.T) {
8785 tcCheckUserDefinedFieldsDisabled (),
8886 tcCheckUserDefinedFieldsDisabledFixT (),
8987 tcMultipleRepeatingGroupFields (),
88+ tcCheckSumValidation (),
9089 }
9190
9291 msg := NewMessage ()
9392 for _ , test := range tests {
94- assert .Nil (t , ParseMessage (msg , bytes .NewBuffer (test .MessageBytes )))
95- reject := test .Validator .Validate (msg )
93+ t .Run (test .TestName , func (t * testing.T ) {
94+ // Check for Parse Error explicitly
95+ err := ParseMessage (msg , bytes .NewBuffer (test .MessageBytes ))
96+
97+ // --- NEW LOGIC START ---
98+ if test .ExpectParseError {
99+ if err == nil {
100+ t .Errorf ("%v: Expected ParseMessage to fail, but it succeeded" , test .TestName )
101+ }
102+ return
103+ }
104+ // --- NEW LOGIC END ---
96105
97- switch {
98- case reject == nil && test .DoNotExpectReject :
99- continue
106+ if err != nil {
107+ t .Fatalf ("ParseMessage failed: %v" , err )
108+ }
109+ //assert.Nil(t, ParseMessage(msg, bytes.NewBuffer(test.MessageBytes)))
110+ reject := test .Validator .Validate (msg )
100111
101- case reject != nil && test . DoNotExpectReject :
102- t . Errorf ( "%v: Unexpected reject: %v" , test .TestName , reject )
103- continue
112+ switch {
113+ case reject == nil && test .DoNotExpectReject :
114+ return
104115
105- case reject == nil :
106- t .Errorf ("%v: Expected reject" , test .TestName )
107- continue
108- }
116+ case reject != nil && test .DoNotExpectReject :
117+ t .Errorf ("%v: Unexpected reject: %v" , test .TestName , reject )
118+ return
109119
110- if reject .RejectReason () != test .ExpectedRejectReason {
111- t .Errorf ("%v: Expected reason %v got %v" , test .TestName , test .ExpectedRejectReason , reject .RejectReason ())
112- }
120+ case reject == nil :
121+ t .Errorf ("%v: Expected reject" , test .TestName )
122+ return
123+ }
113124
114- switch {
115- case reject .RefTagID () == nil && test .ExpectedRefTagID == nil :
116- // OK, expected and actual ref tag not set.
117- case reject .RefTagID () != nil && test .ExpectedRefTagID == nil :
118- t .Errorf ("%v: Unexpected RefTag '%v'" , test .TestName , * reject .RefTagID ())
119- case reject .RefTagID () == nil && test .ExpectedRefTagID != nil :
120- t .Errorf ("%v: Expected RefTag '%v'" , test .TestName , * test .ExpectedRefTagID )
121- case * reject .RefTagID () == * test .ExpectedRefTagID :
122- // OK, tags equal.
123- default :
124- t .Errorf ("%v: Expected RefTag '%v' got '%v'" , test .TestName , * test .ExpectedRefTagID , * reject .RefTagID ())
125- }
125+ if reject .RejectReason () != test .ExpectedRejectReason {
126+ t .Errorf ("%v: Expected reason %v got %v" , test .TestName , test .ExpectedRejectReason , reject .RejectReason ())
127+ }
128+
129+ switch {
130+ case reject .RefTagID () == nil && test .ExpectedRefTagID == nil :
131+ // OK, expected and actual ref tag not set.
132+ case reject .RefTagID () != nil && test .ExpectedRefTagID == nil :
133+ t .Errorf ("%v: Unexpected RefTag '%v'" , test .TestName , * reject .RefTagID ())
134+ case reject .RefTagID () == nil && test .ExpectedRefTagID != nil :
135+ t .Errorf ("%v: Expected RefTag '%v'" , test .TestName , * test .ExpectedRefTagID )
136+ case * reject .RefTagID () == * test .ExpectedRefTagID :
137+ // OK, tags equal.
138+ default :
139+ t .Errorf ("%v: Expected RefTag '%v' got '%v'" , test .TestName , * test .ExpectedRefTagID , * reject .RefTagID ())
140+ }
141+ })
126142 }
127143}
128144
@@ -1170,6 +1186,17 @@ func tcMultipleRepeatingGroupFields() validateTest {
11701186 }
11711187}
11721188
1189+ func tcCheckSumValidation () validateTest {
1190+ dict , _ := datadictionary .Parse ("spec/FIX43.xml" )
1191+ validator := NewValidator (defaultValidatorSettings , dict , nil )
1192+ return validateTest {
1193+ TestName : "Checksum is incorrect" ,
1194+ Validator : validator ,
1195+ 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=006" ),
1196+ ExpectParseError : true ,
1197+ }
1198+ }
1199+
11731200func TestValidateVisitField (t * testing.T ) {
11741201 fieldType0 := datadictionary .NewFieldType ("myfield" , 11 , "STRING" )
11751202 fieldDef0 := & datadictionary.FieldDef {FieldType : fieldType0 }
0 commit comments