public bool IsValid(IList <string> locatedProperties) { switch (ConditionType) { case SchemaConditionType.AllOf: return(SubResults.All(r => r.IsValid(locatedProperties))); case SchemaConditionType.AnyOf: return(SubResults.Any(r => r.IsValid(locatedProperties))); case SchemaConditionType.OneOf: return(SubResults.Count(r => r.IsValid(locatedProperties)) == 1); case SchemaConditionType.NotOf: return(!((Messages == null || Messages.Count == 0) && SubResults.All(r => r.IsValid(locatedProperties)))); case SchemaConditionType.Dependency: return(!locatedProperties.Contains(ConditionalPropertyName, StringComparer.Ordinal) || ((Messages == null || Messages.Count == 0) && SubResults.All(r => r.IsValid(locatedProperties)))); default: return((Messages == null || Messages.Count == 0) && SubResults.All(r => r.IsValid(locatedProperties))); } }
/// <summary> /// Initializes a new instance of the <see cref="VerificationResult" /> struct for a branch node. /// </summary> /// <param name="description">The description of the verification node.</param> /// <param name="subResults">A list of verification nodes who together build up to this node.</param> public VerificationResult(string description, IEnumerable <VerificationResult> subResults) { Description = description; VerificationResult[] array = subResults?.ToArray() ?? EmptyVerificationResultArray; if (array.Length == 0) { SubResults = EmptyVerificationResultArray; } else { SubResults = new ReadOnlyCollection <VerificationResult>(array); } Success = SubResults.All(sr => sr.Success); }