< Summary

Information
Class: Pozitron.QuerySpecification.SpecificationValidator
Assembly: Pozitron.QuerySpecification
File(s): /home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Validators/SpecificationValidator.cs
Tag: 67_15587897385
Line coverage
100%
Covered lines: 20
Uncovered lines: 0
Coverable lines: 20
Total lines: 60
Line coverage: 100%
Branch coverage
100%
Covered branches: 8
Total branches: 8
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.cctor()100%11100%
.ctor()50%22100%
.ctor(...)100%11100%
IsValid(...)100%66100%

File(s)

/home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Validators/SpecificationValidator.cs

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3/// <summary>
 4/// Validates specifications.
 5/// </summary>
 6public class SpecificationValidator
 7{
 8    /// <summary>
 9    /// Gets the default instance of the <see cref="SpecificationValidator"/> class.
 10    /// </summary>
 211    public static SpecificationValidator Default = new();
 12
 13    /// <summary>
 14    /// Gets the list of validators.
 15    /// </summary>
 816    protected List<IValidator> Validators { get; }
 17
 18    /// <summary>
 19    /// Initializes a new instance of the <see cref="SpecificationValidator"/> class.
 20    /// </summary>
 521    public SpecificationValidator()
 22    {
 523        Validators = TypeDiscovery.IsAutoDiscoveryEnabled
 524            ? TypeDiscovery.GetValidators()
 525            :
 526            [
 527                WhereValidator.Instance,
 528                LikeValidator.Instance,
 529            ];
 530    }
 31
 32    /// <summary>
 33    /// Initializes a new instance of the <see cref="SpecificationValidator"/> class with the specified validators.
 34    /// </summary>
 35    /// <param name="validators">The validators to use.</param>
 136    public SpecificationValidator(IEnumerable<IValidator> validators)
 37    {
 138        Validators = validators.ToList();
 139    }
 40
 41    /// <summary>
 42    /// Determines whether the specified entity is valid according to the given specification.
 43    /// </summary>
 44    /// <typeparam name="T">The type of the entity.</typeparam>
 45    /// <param name="entity">The entity to validate.</param>
 46    /// <param name="specification">The specification to evaluate.</param>
 47    /// <returns>true if the entity is valid; otherwise, false.</returns>
 48    public virtual bool IsValid<T>(T entity, Specification<T> specification)
 49    {
 1050        if (specification.IsEmpty) return true;
 51
 3052        foreach (var validator in Validators)
 53        {
 1054            if (validator.IsValid(entity, specification) == false)
 255                return false;
 56        }
 57
 458        return true;
 259    }
 60}