FIX dictionary:
1000, 6000 - defined in fields section
2000, 7000 - not defined anywhere
+---------------------------+------------------------+-------+------------+----------------------------------------------------------------------+
| AllowUnknownMessageFields | CheckUserDefinedFields | Field | Validation | Exception |
+---------------------------+------------------------+-------+------------+----------------------------------------------------------------------+
1) GOOD. Field 1000 is NOT a user field so it should SUCCEED when AllowUnknownMessageFields == true
+---------------------------+------------------------+-------+------------+----------------------------------------------------------------------+
| false | false | 1000 | FAILURE | quickfix.DataDictionary.checkIsInMessage(DataDictionary.java:779) |
| false | true | 1000 | FAILURE | quickfix.DataDictionary.checkIsInMessage(DataDictionary.java:779) |
| true | false | 1000 | SUCCESS | |
| true | true | 1000 | SUCCESS | |
+---------------------------+------------------------+-------+------------+----------------------------------------------------------------------+
2) BAD. Field 6000 is a user field so it should FAIL when CheckUserDefinedFields === true
+---------------------------+------------------------+-------+------------+----------------------------------------------------------------------+
| false | false | 6000 | SUCCESS | |
| false | true | 6000 | FAILURE | quickfix.DataDictionary.checkIsInMessage(DataDictionary.java:779) |
| true | false | 6000 | SUCCESS | |
| true | true | 6000 | SUCCESS | | (FIXME)
+---------------------------+------------------------+-------+------------+----------------------------------------------------------------------+
3) BAD. Field 2000 is NOT a user field so it should SUCCEED when AllowUnknownMessageFields == true (even though it's not inside tag)
+---------------------------+------------------------+-------+------------+----------------------------------------------------------------------+
| false | false | 2000 | FAILURE | quickfix.DataDictionary.checkValidTagNumber(DataDictionary.java:691) |
| false | true | 2000 | FAILURE | quickfix.DataDictionary.checkValidTagNumber(DataDictionary.java:691) |
| true | false | 2000 | FAILURE | quickfix.DataDictionary.checkValidTagNumber(DataDictionary.java:691) | (FIXME)
| true | true | 2000 | FAILURE | quickfix.DataDictionary.checkValidTagNumber(DataDictionary.java:691) | (FIXME)
+---------------------------+------------------------+-------+------------+----------------------------------------------------------------------+
4) GOOD. Field 7000 is a user field so it should SUCCEED when CheckUserDefinedFields == false
+---------------------------+------------------------+-------+------------+----------------------------------------------------------------------+
| false | false | 7000 | SUCCESS | |
| false | true | 7000 | FAILURE | quickfix.DataDictionary.checkValidTagNumber(DataDictionary.java:691) |
| true | false | 7000 | SUCCESS | |
| true | true | 7000 | FAILURE | quickfix.DataDictionary.checkValidTagNumber(DataDictionary.java:691) |
+---------------------------+------------------------+-------+------------+----------------------------------------------------------------------+