< Summary

Information
Class: Pozitron.QuerySpecification.SpecificationInMemoryEvaluator
Assembly: Pozitron.QuerySpecification
File(s): /home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Evaluators/SpecificationInMemoryEvaluator.cs
Tag: 44_11195777782
Line coverage
100%
Covered lines: 29
Uncovered lines: 0
Coverable lines: 29
Total lines: 59
Line coverage: 100%
Branch coverage
100%
Covered branches: 16
Total branches: 16
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
get_Evaluators()100%11100%
.ctor()100%11100%
.ctor(...)100%11100%
Evaluate(...)100%1212100%
Evaluate(...)100%44100%

File(s)

/home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Evaluators/SpecificationInMemoryEvaluator.cs

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3public class SpecificationInMemoryEvaluator
 4{
 15    public static SpecificationInMemoryEvaluator Default = new();
 6
 147    protected List<IInMemoryEvaluator> Evaluators { get; }
 8
 29    public SpecificationInMemoryEvaluator()
 10    {
 211        Evaluators =
 212        [
 213            WhereEvaluator.Instance,
 214            LikeMemoryEvaluator.Instance,
 215            OrderEvaluator.Instance,
 216        ];
 217    }
 118    public SpecificationInMemoryEvaluator(IEnumerable<IInMemoryEvaluator> evaluators)
 19    {
 120        Evaluators = evaluators.ToList();
 121    }
 22
 23    public virtual IEnumerable<TResult> Evaluate<T, TResult>(
 24        IEnumerable<T> source,
 25        Specification<T, TResult> specification,
 26        bool ignorePaging = false)
 27    {
 1128        ArgumentNullException.ThrowIfNull(specification);
 1129        if (specification.Selector is null && specification.SelectorMany is null) throw new SelectorNotFoundException();
 1030        if (specification.Selector is not null && specification.SelectorMany is not null) throw new ConcurrentSelectorsE
 31
 832        source = Evaluate(source, (Specification<T>)specification, true);
 33
 834        var result = specification.Selector is not null
 835          ? source.Select(specification.Selector.Compile())
 836          : source.SelectMany(specification.SelectorMany!.Compile());
 37
 838        return ignorePaging
 839            ? result
 840            : result.ApplyPaging(specification);
 41    }
 42
 43    public virtual IEnumerable<T> Evaluate<T>(
 44        IEnumerable<T> source,
 45        Specification<T> specification,
 46        bool ignorePaging = false)
 47    {
 1348        ArgumentNullException.ThrowIfNull(specification);
 49
 9650        foreach (var evaluator in Evaluators)
 51        {
 3652            source = evaluator.Evaluate(source, specification);
 53        }
 54
 1255        return ignorePaging
 1256            ? source
 1257            : source.ApplyPaging(specification);
 58    }
 59}