< Summary

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

Feature is only available for sponsors

Upgrade to PRO version

Metrics

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

File(s)

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

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3public class OrderEvaluator : IEvaluator, IInMemoryEvaluator
 4{
 45    private OrderEvaluator() { }
 26    public static OrderEvaluator Instance = new();
 7
 8    public IQueryable<T> Evaluate<T>(IQueryable<T> source, Specification<T> specification) where T : class
 9    {
 5610        IOrderedQueryable<T>? orderedQuery = null;
 11
 18012        foreach (var orderExpression in specification.OrderExpressions)
 13        {
 3414            if (orderExpression.OrderType == OrderTypeEnum.OrderBy)
 15            {
 1916                orderedQuery = source.OrderBy(orderExpression.KeySelector);
 17            }
 1518            else if (orderExpression.OrderType == OrderTypeEnum.OrderByDescending)
 19            {
 320                orderedQuery = source.OrderByDescending(orderExpression.KeySelector);
 21            }
 1222            else if (orderExpression.OrderType == OrderTypeEnum.ThenBy)
 23            {
 224                orderedQuery = orderedQuery!.ThenBy(orderExpression.KeySelector);
 25            }
 1026            else if (orderExpression.OrderType == OrderTypeEnum.ThenByDescending)
 27            {
 1028                orderedQuery = orderedQuery!.ThenByDescending(orderExpression.KeySelector);
 29            }
 30        }
 31
 5632        if (orderedQuery is not null)
 33        {
 2234            source = orderedQuery;
 35        }
 36
 5637        return source;
 38    }
 39
 40    public IEnumerable<T> Evaluate<T>(IEnumerable<T> source, Specification<T> specification)
 41    {
 1942        IOrderedEnumerable<T>? orderedQuery = null;
 43
 8244        foreach (var orderExpression in specification.OrderExpressions)
 45        {
 2246            if (orderExpression.OrderType == OrderTypeEnum.OrderBy)
 47            {
 1548                orderedQuery = source.OrderBy(orderExpression.KeySelectorFunc);
 49            }
 750            else if (orderExpression.OrderType == OrderTypeEnum.OrderByDescending)
 51            {
 352                orderedQuery = source.OrderByDescending(orderExpression.KeySelectorFunc);
 53            }
 454            else if (orderExpression.OrderType == OrderTypeEnum.ThenBy)
 55            {
 256                orderedQuery = orderedQuery!.ThenBy(orderExpression.KeySelectorFunc);
 57            }
 258            else if (orderExpression.OrderType == OrderTypeEnum.ThenByDescending)
 59            {
 260                orderedQuery = orderedQuery!.ThenByDescending(orderExpression.KeySelectorFunc);
 61            }
 62        }
 63
 1964        if (orderedQuery is not null)
 65        {
 1866            source = orderedQuery;
 67        }
 68
 1969        return source;
 70    }
 71}