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)));
                }
            }
Esempio n. 2
0
        /// <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);
        }