< Summary - Code Coverage

Information
Class: Plainquire.Filter.ExpressionExtensions
Assembly: Plainquire.Filter
File(s): /home/runner/work/plainquire/plainquire/Plainquire.Filter/Plainquire.Filter/Extensions/ExpressionExtensions.cs
Tag: 64_13932151703
Line coverage
85%
Covered lines: 6
Uncovered lines: 1
Coverable lines: 7
Total lines: 34
Line coverage: 85.7%
Branch coverage
75%
Covered branches: 6
Total branches: 8
Branch coverage: 75%
Method coverage
100%
Covered methods: 2
Total methods: 2
Method coverage: 100%

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
GetPropertyName(...)100%44100%
UnboxBody(...)50%4466.66%

File(s)

/home/runner/work/plainquire/plainquire/Plainquire.Filter/Plainquire.Filter/Extensions/ExpressionExtensions.cs

#LineLine coverage
 1using System;
 2using System.Linq.Expressions;
 3
 4namespace Plainquire.Filter;
 5
 6/// <summary>
 7/// Extension methods for <see cref="Expression"/>.
 8/// </summary>
 9internal static class ExpressionExtensions
 10{
 11    /// <summary>
 12    /// Gets the name of a first level property.
 13    /// </summary>
 14    /// <typeparam name="TEntity">The type of the class that declares <typeparamref name="TProperty"/>.</typeparam>
 15    /// <typeparam name="TProperty">The type of the property.</typeparam>
 16    /// <param name="property">The property to get the name for.</param>
 17    /// <exception cref="ArgumentException">Given property must be a first level property access expression like person 
 18    public static string GetPropertyName<TEntity, TProperty>(this Expression<Func<TEntity, TProperty>> property)
 19    {
 1021220        var body = UnboxBody(property);
 21
 1021222        if (body is not MemberExpression { Expression: ParameterExpression } memberExpression)
 123            throw new ArgumentException("Given property must be a first level property access expression like person => 
 24
 1021125        return memberExpression.Member.Name;
 26    }
 27
 28    private static Expression UnboxBody<TEntity, TProperty>(this Expression<Func<TEntity, TProperty>> property)
 29    {
 1021230        if (property.Body is UnaryExpression { NodeType: ExpressionType.Convert } convert)
 031            return convert.Operand;
 1021232        return property.Body;
 33    }
 34}