in FixAntenna/NetCore/Validation/Validators/FieldsDefinitionsTypeValidator.cs [132:207]
private bool IsInvalidTypeValue(FixTypesEnum type, TagValue tagValue, double fixVersion)
{
switch (type)
{
case FixTypesEnum.Int:
case FixTypesEnum.Length:
case FixTypesEnum.NumInGroup:
case FixTypesEnum.SeqNum:
case FixTypesEnum.TagNum:
case FixTypesEnum.DayOfMonth:
return FixTypes.IsInvalidInt(tagValue);
case FixTypesEnum.Float:
case FixTypesEnum.Qty:
case FixTypesEnum.Price:
case FixTypesEnum.PriceOffset:
case FixTypesEnum.Amt:
case FixTypesEnum.Percentage:
return FixTypes.IsInvalidFloat(tagValue);
case FixTypesEnum.UtcTimestamp:
return fixVersion == 4.0
? FixTypes.IsInvalidTimestamp40(tagValue)
: FixTypes.IsInvalidTimestamp(tagValue);
case FixTypesEnum.TzTimestamp
: // fixed bug 15088 Correct value of TZTimestamp considered as incorrect data type
return FixTypes.IsInvalidTzTimestamp(tagValue);
case FixTypesEnum.Time:
return FixTypes.IsInvalidTime(tagValue);
case FixTypesEnum.UtcTimeOnly:
return FixTypes.isInvalidTimeOnly(tagValue);
case FixTypesEnum.TzTimeOnly: // fixed bug [Bug 14775] New: TZTimeOnly validation should be implemented
return FixTypes.isInvalidTZTimeOnly(tagValue);
case FixTypesEnum.Date:
case FixTypesEnum.UtcDate:
case FixTypesEnum.UtcDateOnly:
case FixTypesEnum.LocalMktDate:
return FixTypes.IsInvalidDate(tagValue);
case FixTypesEnum.MonthYear:
// Fixed 15090: Correct value of Month-Year considered as incorrect data type.
if (fixVersion == 4.0 || fixVersion == 4.1 || fixVersion == 4.2 || fixVersion == 4.3)
{
return FixTypes.IsInvalidMonthYear(tagValue);
}
else
{
return FixTypes.IsInvalidMonthYear44(tagValue);
}
case FixTypesEnum.Boolean:
return FixTypes.IsInvalidBoolean(tagValue);
case FixTypesEnum.Char:
if (fixVersion == 4.0 || fixVersion == 4.1)
{
// no String type for this version.
return false;
}
else
{
return tagValue.Length != 1;
}
case FixTypesEnum.String:
case FixTypesEnum.MultipleValueString:
case FixTypesEnum.MultipleStringValue:
case FixTypesEnum.MultipleCharValue:
case FixTypesEnum.Currency:
case FixTypesEnum.Exchange:
case FixTypesEnum.Data:
case FixTypesEnum.Country:
case FixTypesEnum.Language:
case FixTypesEnum.XmlData:
// check only some data and range
return false;
default:
throw new ArgumentException("Invalid type of field");
}
}