private bool IsInvalidTypeValue()

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");
			}
		}