< Summary

Information
Class: Pozitron.QuerySpecification.PaginationExtensions
Assembly: Pozitron.QuerySpecification
File(s): /home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Evaluators/PaginationExtensions.cs
Tag: 44_11195777782
Line coverage
100%
Covered lines: 15
Uncovered lines: 0
Coverable lines: 15
Total lines: 47
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 Crap Score Cyclomatic complexity Line coverage
ApplyPaging(...)100%11100%
ApplyPaging(...)100%11100%
ApplyPaging(...)100%11100%
ApplyPaging(...)100%11100%
ApplyPaging(...)100%11100%
ApplyPaging(...)100%44100%
ApplyPaging(...)100%44100%

File(s)

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

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3public static class PaginationExtensions
 4{
 5    public static IQueryable<TResult> ApplyPaging<T, TResult>(this IQueryable<TResult> source, Specification<T, TResult>
 156        => ApplyPaging(source, specification.Skip, specification.Take);
 7    public static IQueryable<T> ApplyPaging<T>(this IQueryable<T> source, Specification<T> specification)
 248        => ApplyPaging(source, specification.Skip, specification.Take);
 9    public static IQueryable<T> ApplyPaging<T>(this IQueryable<T> source, Pagination pagination)
 610        => ApplyPaging(source, pagination.Skip, pagination.Take);
 11
 12    public static IEnumerable<TResult> ApplyPaging<T, TResult>(this IEnumerable<TResult> source, Specification<T, TResul
 413        => ApplyPaging(source, specification.Skip, specification.Take);
 14    public static IEnumerable<T> ApplyPaging<T>(this IEnumerable<T> source, Specification<T> specification)
 715        => ApplyPaging(source, specification.Skip, specification.Take);
 16
 17    private static IQueryable<T> ApplyPaging<T>(this IQueryable<T> source, int skip, int take)
 18    {
 19        // If skip is 0, avoid adding to the IQueryable. It will generate more optimized SQL that way.
 4520        if (skip > 0)
 21        {
 1722            source = source.Skip(skip);
 23        }
 24
 4525        if (take >= 0)
 26        {
 1827            source = source.Take(take);
 28        }
 29
 4530        return source;
 31    }
 32
 33    private static IEnumerable<T> ApplyPaging<T>(this IEnumerable<T> source, int skip, int take)
 34    {
 1135        if (skip > 0)
 36        {
 837            source = source.Skip(skip);
 38        }
 39
 1140        if (take >= 0)
 41        {
 842            source = source.Take(take);
 43        }
 44
 1145        return source;
 46    }
 47}