< Summary

Information
Class: IceRpc.Internal.InvalidPipeWriter
Assembly: IceRpc
File(s): /home/runner/work/icerpc-csharp/icerpc-csharp/src/IceRpc/Internal/InvalidPipeWriter.cs
Tag: 275_13775359185
Line coverage
43%
Covered lines: 7
Uncovered lines: 9
Coverable lines: 16
Total lines: 48
Line coverage: 43.7%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage
30%
Covered methods: 4
Total methods: 13
Method coverage: 30.7%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_CanGetUnflushedBytes()100%210%
get_UnflushedBytes()100%210%
get_Instance()100%11100%
Advance(...)100%210%
AsStream(...)100%210%
CancelPendingFlush()100%210%
Complete(...)100%11100%
FlushAsync(...)100%11100%
GetMemory(...)100%210%
GetSpan(...)100%210%
WriteAsync(...)100%210%
CopyFromAsync(...)100%210%
.ctor()100%11100%

File(s)

/home/runner/work/icerpc-csharp/icerpc-csharp/src/IceRpc/Internal/InvalidPipeWriter.cs

#LineLine coverage
 1// Copyright (c) ZeroC, Inc.
 2
 3using System.IO.Pipelines;
 4
 5namespace IceRpc.Internal;
 6
 7/// <summary>A PipeWriter that does nothing and always throws InvalidOperationException except for Complete.</summary>
 8internal sealed class InvalidPipeWriter : PipeWriter
 9{
 010    public override bool CanGetUnflushedBytes => false;
 11
 012    public override long UnflushedBytes => throw new InvalidOperationException(ExceptionMessage);
 13
 14    /// <summary>Gets the InvalidPipeWriter singleton instance.</summary>
 415    internal static PipeWriter Instance { get; } = new InvalidPipeWriter();
 16
 17    private const string ExceptionMessage = "Writing an invalid pipe writer is not allowed.";
 18
 019    public override void Advance(int bytes) => throw new InvalidOperationException(ExceptionMessage);
 20
 021    public override Stream AsStream(bool leaveOpen = false) => throw new InvalidOperationException(ExceptionMessage);
 22
 023    public override void CancelPendingFlush() => throw new InvalidOperationException(ExceptionMessage);
 24
 25    public override void Complete(Exception? exception)
 226    {
 27        // no-op
 228    }
 29
 30    public override ValueTask<FlushResult> FlushAsync(CancellationToken cancellationToken) =>
 231       throw new InvalidOperationException(ExceptionMessage);
 32
 033    public override Memory<byte> GetMemory(int sizeHint) => throw new InvalidOperationException(ExceptionMessage);
 34
 035    public override Span<byte> GetSpan(int sizeHint) => throw new InvalidOperationException(ExceptionMessage);
 36
 37    public override ValueTask<FlushResult> WriteAsync(
 38        ReadOnlyMemory<byte> source,
 039        CancellationToken cancellationToken) => throw new InvalidOperationException(ExceptionMessage);
 40
 41    protected override Task CopyFromAsync(Stream source, CancellationToken cancellationToken) =>
 042        throw new InvalidOperationException(ExceptionMessage);
 43
 244    private InvalidPipeWriter()
 245    {
 46        // ensures there is only one instance
 247    }
 48}