private bool ValidateNumber(JSchema schema, object value) { if (JSchemaTypeHelpers.HasFlag(schema.Type, JSchemaType.Integer) && !JSchemaTypeHelpers.HasFlag(schema.Type, JSchemaType.Number) && MathHelpers.IsDoubleMultiple(value, 1) && SchemaVersionHelpers.EnsureVersion(Context.Validator.SchemaVersion, SchemaVersion.Draft6)) { // accept values like 1.0 in draft6+ } else if (!TestType(schema, JSchemaType.Number, value)) { return(false); } if (schema.Maximum != null) { double d = Convert.ToDouble(value, CultureInfo.InvariantCulture); if (d > schema.Maximum) { RaiseError($"Float {JsonConvert.ToString(value)} exceeds maximum value of {schema.Maximum}.", ErrorType.Maximum, schema, value, null); } if (schema.ExclusiveMaximum && d == schema.Maximum) { RaiseError($"Float {JsonConvert.ToString(value)} equals maximum value of {schema.Maximum} and exclusive maximum is true.", ErrorType.Maximum, schema, value, null); } } if (schema.Minimum != null) { double d = Convert.ToDouble(value, CultureInfo.InvariantCulture); if (d < schema.Minimum) { RaiseError($"Float {JsonConvert.ToString(value)} is less than minimum value of {schema.Minimum}.", ErrorType.Minimum, schema, value, null); } if (schema.ExclusiveMinimum && d == schema.Minimum) { RaiseError($"Float {JsonConvert.ToString(value)} equals minimum value of {schema.Minimum} and exclusive minimum is true.", ErrorType.Minimum, schema, value, null); } } if (schema.MultipleOf != null) { bool isMultiple = MathHelpers.IsDoubleMultiple(value, schema.MultipleOf.Value); if (!isMultiple) { RaiseError($"Float {JsonConvert.ToString(value)} is not a multiple of {schema.MultipleOf}.", ErrorType.MultipleOf, schema, value, null); } } return(true); }
private Uri GetSchemaUri(string version) { SchemaVersion schemaVersion = (SchemaVersion)Enum.Parse(typeof(SchemaVersion), version.Replace('-', '_')); return(SchemaVersionHelpers.MapSchemaVersion(schemaVersion)); }