< Summary

Information
Class: AsiBackbone.Testing.Contracts.AsiBackboneAuditSinkContract
Assembly: AsiBackbone.Testing
File(s): /home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Testing/Contracts/AsiBackboneAuditSinkContract.cs
Line coverage
100%
Covered lines: 16
Uncovered lines: 0
Coverable lines: 16
Total lines: 55
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
VerifyAuditSinkAcceptsValidResidueAsync()100%44100%

File(s)

/home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Testing/Contracts/AsiBackboneAuditSinkContract.cs

#LineLine coverage
 1using AsiBackbone.Core.Audit;
 2
 3namespace AsiBackbone.Testing.Contracts;
 4
 5/// <summary>
 6/// Reusable contract fixture for <see cref="IAsiBackboneAuditSink" /> implementations.
 7/// </summary>
 8public abstract class AsiBackboneAuditSinkContract
 9{
 10    /// <summary>
 11    /// Creates the audit sink implementation under test.
 12    /// </summary>
 13    /// <returns>The audit sink implementation to validate.</returns>
 14    protected abstract IAsiBackboneAuditSink CreateAuditSink();
 15
 16    /// <summary>
 17    /// Creates the audit residue supplied to the audit sink implementation under test.
 18    /// </summary>
 19    /// <returns>The audit residue to write.</returns>
 20    protected abstract IAsiBackboneAuditResidue CreateAuditResidue();
 21
 22    /// <summary>
 23    /// Verifies that an audit sink accepts a valid audit residue value without weakening the residue shape.
 24    /// </summary>
 25    /// <param name="cancellationToken">A token that can cancel the contract validation.</param>
 26    /// <returns>A task that completes when the contract validation succeeds.</returns>
 27    public async ValueTask VerifyAuditSinkAcceptsValidResidueAsync(CancellationToken cancellationToken = default)
 28    {
 1229        IAsiBackboneAuditSink auditSink = CreateAuditSink()
 1230            ?? throw new AsiBackboneContractViolationException("Audit sink contract must provide an audit sink instance.
 1031        IAsiBackboneAuditResidue residue = CreateAuditResidue()
 1032            ?? throw new AsiBackboneContractViolationException("Audit sink contract must provide audit residue.");
 33
 834        _ = AsiBackboneDecisionContract.VerifyAuditResidue(residue, "Audit sink residue");
 35
 36        try
 37        {
 838            await auditSink.WriteAsync(residue, cancellationToken).ConfigureAwait(false);
 239        }
 240        catch (OperationCanceledException)
 41        {
 242            throw;
 43        }
 244        catch (AsiBackboneContractViolationException)
 45        {
 246            throw;
 47        }
 248        catch (Exception exception)
 49        {
 250            throw new AsiBackboneContractViolationException(
 251                "Audit sink implementations must accept valid audit residue during normal contract validation or documen
 252                exception);
 53        }
 254    }
 55}