Skip to content

Commit f2ab37d

Browse files
committed
Fix duplicate reject reason value for ConditionallyRequiredFieldMissing
Per FIX spec (tag 373/380), the value is 8, not 5. Adds a regression test guarding the two reject reasons against future collision. Fixes #721.
1 parent 236c791 commit f2ab37d

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

errors.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const (
3131
rejectReasonUnsupportedMessageType = 3
3232
rejectReasonTagSpecifiedWithoutAValue = 4
3333
rejectReasonValueIsIncorrect = 5
34-
rejectReasonConditionallyRequiredFieldMissing = 5
34+
rejectReasonConditionallyRequiredFieldMissing = 8
3535
rejectReasonIncorrectDataFormatForValue = 6
3636
rejectReasonCompIDProblem = 9
3737
rejectReasonSendingTimeAccuracyProblem = 10

errors_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,9 @@ func TestValueIsIncorrect(t *testing.T) {
141141

142142
func TestConditionallyRequiredFieldMissing(t *testing.T) {
143143
var (
144-
expectedRejectReason = 5
144+
// Per FIX spec (tag 373/380 enum), ConditionallyRequiredFieldMissing
145+
// is value 8, distinct from ValueIsIncorrect (value 5). See issue #721.
146+
expectedRejectReason = 8
145147
expectedRefTagID Tag = 44
146148
expectedErrorString = fmt.Sprintf("Conditionally Required Field Missing (%d)", expectedRefTagID)
147149
expectedIsBusinessReject = true
@@ -159,6 +161,10 @@ func TestConditionallyRequiredFieldMissing(t *testing.T) {
159161
if msgRej.IsBusinessReject() != expectedIsBusinessReject {
160162
t.Error("Expected IsBusinessReject to be true\n")
161163
}
164+
// Regression guard: the two reject reasons must not collide.
165+
if msgRej.RejectReason() == ValueIsIncorrect(expectedRefTagID).RejectReason() {
166+
t.Errorf("ConditionallyRequiredFieldMissing and ValueIsIncorrect must not share a reject reason value")
167+
}
162168
}
163169

164170
func TestInvalidMessageType(t *testing.T) {

0 commit comments

Comments
 (0)