< Summary - Code Coverage

Information
Class: Plainquire.Page.QueryableExtensions
Assembly: Plainquire.Page
File(s): /home/runner/work/plainquire/plainquire/Plainquire.Page/Plainquire.Page/Extensions/QueryableExtensions.cs
Tag: 64_13932151703
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 60
Line coverage: 100%
Branch coverage
100%
Covered branches: 14
Total branches: 14
Branch coverage: 100%
Method coverage
100%
Covered methods: 4
Total methods: 4
Method coverage: 100%

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
Page(...)100%11100%
Page(...)100%11100%
Page(...)100%11100%
Page(...)100%1414100%

File(s)

/home/runner/work/plainquire/plainquire/Plainquire.Page/Plainquire.Page/Extensions/QueryableExtensions.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Diagnostics.CodeAnalysis;
 3using System.Linq;
 4
 5namespace Plainquire.Page;
 6
 7/// <summary>
 8/// Extension methods for <see cref="IQueryable{TEntity}"/>
 9/// </summary>
 10[SuppressMessage("ReSharper", "MemberCanBePrivate.Global", Justification = "Provided as library, can be used from outsid
 11public static class QueryableExtensions
 12{
 13    /// <inheritdoc cref="Page{TEntity}(IQueryable{TEntity}, int?, int?, IPageInterceptor?)"/>
 14    public static IEnumerable<TEntity> Page<TEntity>(this IEnumerable<TEntity> source, int? pageNumber, int? pageSize, I
 115        => source.AsQueryable().Page(new EntityPage(pageNumber, pageSize), interceptor);
 16
 17    /// <inheritdoc cref="Page{TEntity}(IQueryable{TEntity}, EntityPage, IPageInterceptor?)"/>"
 18    public static IEnumerable<TEntity> Page<TEntity>(this IEnumerable<TEntity> source, EntityPage page, IPageInterceptor
 12719        => source.AsQueryable().Page(page, interceptor);
 20
 21    /// <summary>
 22    /// Pages the elements of a sequence according to the given page number and size.
 23    /// </summary>
 24    /// <typeparam name="TEntity"></typeparam>
 25    /// <param name="source">The elements to page.</param>
 26    /// <param name="pageNumber">The page number to retrieve.</param>
 27    /// <param name="pageSize">The page size to use.</param>
 28    /// <param name="interceptor">An interceptor to manipulate the generated page.</param>
 29    /// <returns></returns>
 30    public static IQueryable<TEntity> Page<TEntity>(this IQueryable<TEntity> source, int? pageNumber, int? pageSize, IPa
 131        => source.Page(new EntityPage(pageNumber, pageSize), interceptor);
 32
 33    /// <summary>
 34    /// Pages the elements of a sequence according to the given <paramref name="page"/>.
 35    /// </summary>
 36    /// <typeparam name="TEntity"></typeparam>
 37    /// <param name="source">The elements to page.</param>
 38    /// <param name="page">The <see cref="EntityPage"/> used to page the elements.</param>
 39    /// <param name="interceptor">An interceptor to manipulate the generated page.</param>
 40    public static IQueryable<TEntity> Page<TEntity>(this IQueryable<TEntity> source, EntityPage page, IPageInterceptor? 
 41    {
 25642        interceptor ??= IPageInterceptor.Default;
 43
 25644        var result = interceptor?.Page(source, page);
 25645        if (result != null)
 646            return result;
 47
 25048        result = source;
 49
 25050        var (skip, take) = page.GetSkipAndTake();
 51
 19552        if (skip is > 0)
 6353            result = result.Skip(skip.Value);
 54
 19555        if (take is > 0)
 19556            result = result.Take(take.Value);
 57
 19558        return result;
 59    }
 60}