< Summary

Information
Class: AsiBackbone.Core.CapabilityTokens.CapabilityGrantUseResult
Assembly: AsiBackbone.Core
File(s): /home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Core/CapabilityTokens/CapabilityGrantUseResult.cs
Line coverage
95%
Covered lines: 22
Uncovered lines: 1
Coverable lines: 23
Total lines: 94
Line coverage: 95.6%
Branch coverage
83%
Covered branches: 5
Total branches: 6
Branch coverage: 83.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)75%4490%
get_State()100%11100%
get_UseCount()100%11100%
get_FailureCode()100%11100%
get_FailureMessage()100%11100%
get_IsAccepted()100%11100%
Accepted(...)100%11100%
UseLimitExceeded(...)100%11100%
Stopped(...)100%11100%
Cancelled(...)100%11100%
Unavailable(...)100%11100%
NormalizeOptional(...)100%22100%

File(s)

/home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Core/CapabilityTokens/CapabilityGrantUseResult.cs

#LineLine coverage
 1namespace AsiBackbone.Core.CapabilityTokens;
 2
 3/// <summary>
 4/// Represents the outcome returned by a capability grant use-control store.
 5/// </summary>
 6public sealed class CapabilityGrantUseResult
 7{
 138    private CapabilityGrantUseResult(GrantUseState state, int useCount, string? failureCode, string? failureMessage)
 9    {
 1310        if (!Enum.IsDefined(state))
 11        {
 012            throw new ArgumentOutOfRangeException(nameof(state), state, "Use state must be defined.");
 13        }
 14
 1315        State = state;
 1316        UseCount = useCount < 0
 1317            ? throw new ArgumentOutOfRangeException(nameof(useCount), useCount, "Use count must be greater than or equal
 1318            : useCount;
 1119        FailureCode = NormalizeOptional(failureCode);
 1120        FailureMessage = NormalizeOptional(failureMessage);
 1121    }
 22
 23    /// <summary>
 24    /// Gets the use-control state.
 25    /// </summary>
 1826    public GrantUseState State { get; }
 27
 28    /// <summary>
 29    /// Gets the observed use count after the store checked or consumed the grant.
 30    /// </summary>
 531    public int UseCount { get; }
 32
 33    /// <summary>
 34    /// Gets the provider-neutral failure code when the use-control check did not accept the grant.
 35    /// </summary>
 1036    public string? FailureCode { get; }
 37
 38    /// <summary>
 39    /// Gets the provider-neutral failure message when the use-control check did not accept the grant.
 40    /// </summary>
 1041    public string? FailureMessage { get; }
 42
 43    /// <summary>
 44    /// Gets a value indicating whether the grant was accepted for use.
 45    /// </summary>
 546    public bool IsAccepted => State is GrantUseState.Accepted;
 47
 48    /// <summary>
 49    /// Creates an accepted use result.
 50    /// </summary>
 51    public static CapabilityGrantUseResult Accepted(int useCount)
 52    {
 453        return new CapabilityGrantUseResult(GrantUseState.Accepted, useCount, null, null);
 54    }
 55
 56    /// <summary>
 57    /// Creates a result indicating the configured use limit was exceeded.
 58    /// </summary>
 59    public static CapabilityGrantUseResult UseLimitExceeded(int useCount, string? failureMessage = null)
 60    {
 361        return new CapabilityGrantUseResult(GrantUseState.UseLimitExceeded, useCount, "capability.use-limit-exceeded", f
 62    }
 63
 64    /// <summary>
 65    /// Creates a result indicating the grant was administratively stopped.
 66    /// </summary>
 67    public static CapabilityGrantUseResult Stopped(string? failureMessage = null)
 68    {
 269        return new CapabilityGrantUseResult(GrantUseState.Stopped, 0, "capability.grant-stopped", failureMessage);
 70    }
 71
 72    /// <summary>
 73    /// Creates a result indicating the grant was cancelled.
 74    /// </summary>
 75    public static CapabilityGrantUseResult Cancelled(string? failureMessage = null)
 76    {
 277        return new CapabilityGrantUseResult(GrantUseState.Cancelled, 0, "capability.grant-cancelled", failureMessage);
 78    }
 79
 80    /// <summary>
 81    /// Creates a result indicating the use-control store was unavailable.
 82    /// </summary>
 83    public static CapabilityGrantUseResult Unavailable(string? failureMessage = null)
 84    {
 285        return new CapabilityGrantUseResult(GrantUseState.Unavailable, 0, "capability.use-store-unavailable", failureMes
 86    }
 87
 88    private static string? NormalizeOptional(string? value)
 89    {
 2290        return string.IsNullOrWhiteSpace(value)
 2291            ? null
 2292            : value.Trim();
 93    }
 94}