< Summary

Information
Class: AsiBackbone.Core.Results.GovernanceOperationResult
Assembly: AsiBackbone.Core
File(s): /home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Core/Results/GovernanceOperationResult.cs
Line coverage
100%
Covered lines: 20
Uncovered lines: 0
Coverable lines: 20
Total lines: 97
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
.cctor()100%11100%
.ctor(...)100%11100%
get_Failed()100%11100%
Success()100%11100%
Success(...)100%11100%
Success(...)100%11100%
Failure(...)100%11100%
Failure(...)100%11100%
NormalizeMessages(...)100%88100%

File(s)

/home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Core/Results/GovernanceOperationResult.cs

#LineLine coverage
 1namespace AsiBackbone.Core.Results;
 2
 3/// <summary>
 4/// Represents the outcome of an ASI Backbone operation.
 5/// </summary>
 6public sealed class GovernanceOperationResult
 7{
 8    private const string DefaultFailureMessage = "Operation failed.";
 9
 110    private static readonly string[] EmptyMessages = [];
 11
 1312    private GovernanceOperationResult(bool succeeded, IReadOnlyList<string> messages)
 13    {
 1314        Succeeded = succeeded;
 1315        Messages = messages;
 1316    }
 17
 18    /// <summary>
 19    /// Gets a value indicating whether the operation succeeded.
 20    /// </summary>
 21    public bool Succeeded { get; }
 22
 23    /// <summary>
 24    /// Gets a value indicating whether the operation failed.
 25    /// </summary>
 1026    public bool Failed => !Succeeded;
 27
 28    /// <summary>
 29    /// Gets the messages associated with the operation result.
 30    /// </summary>
 31    public IReadOnlyList<string> Messages { get; }
 32
 33    /// <summary>
 34    /// Creates a successful result with no messages.
 35    /// </summary>
 36    /// <returns>A successful operation result.</returns>
 37    public static GovernanceOperationResult Success()
 38    {
 139        return new GovernanceOperationResult(true, EmptyMessages);
 40    }
 41
 42    /// <summary>
 43    /// Creates a successful result with one message.
 44    /// </summary>
 45    /// <param name="message">The message associated with the successful result.</param>
 46    /// <returns>A successful operation result.</returns>
 47    public static GovernanceOperationResult Success(string message)
 48    {
 249        return new GovernanceOperationResult(true, NormalizeMessages([message]));
 50    }
 51
 52    /// <summary>
 53    /// Creates a successful result with one or more messages.
 54    /// </summary>
 55    /// <param name="messages">The messages associated with the successful result.</param>
 56    /// <returns>A successful operation result.</returns>
 57    public static GovernanceOperationResult Success(IEnumerable<string> messages)
 58    {
 459        return new GovernanceOperationResult(true, NormalizeMessages(messages));
 60    }
 61
 62    /// <summary>
 63    /// Creates a failed result with one message.
 64    /// </summary>
 65    /// <param name="message">The message associated with the failed result.</param>
 66    /// <returns>A failed operation result.</returns>
 67    public static GovernanceOperationResult Failure(string message)
 68    {
 269        return new GovernanceOperationResult(false, NormalizeMessages([message], DefaultFailureMessage));
 70    }
 71
 72    /// <summary>
 73    /// Creates a failed result with one or more messages.
 74    /// </summary>
 75    /// <param name="messages">The messages associated with the failed result.</param>
 76    /// <returns>A failed operation result.</returns>
 77    public static GovernanceOperationResult Failure(IEnumerable<string> messages)
 78    {
 479        return new GovernanceOperationResult(false, NormalizeMessages(messages, DefaultFailureMessage));
 80    }
 81
 82    private static IReadOnlyList<string> NormalizeMessages(
 83        IEnumerable<string>? messages,
 84        string? fallbackMessage = null)
 85    {
 1286        string[] normalizedMessages = messages?
 1287            .Where(message => !string.IsNullOrWhiteSpace(message))
 1288            .Select(message => message.Trim())
 1289            .ToArray() ?? [];
 90
 1291        return normalizedMessages.Length == 0
 1292            ? fallbackMessage is null
 1293                ? EmptyMessages
 1294                : Array.AsReadOnly([fallbackMessage])
 1295            : Array.AsReadOnly(normalizedMessages);
 96    }
 97}