public async Task WriteLineReadOnlyMemoryAsync_TokenCanceled_ReturnsCanceledTask()
    {
        // Arrange
        var stream            = new TestMemoryStream();
        var writer            = new HttpResponseStreamWriter(stream, Encoding.UTF8);
        var memory            = new ReadOnlyMemory <char>(new char[] { 'a' });
        var cancellationToken = new CancellationToken(true);

        // Act
        using (writer)
        {
            await Assert.ThrowsAsync <TaskCanceledException>(async() => await writer.WriteLineAsync(memory, cancellationToken));
        }

        // Assert
        Assert.Equal(0, stream.Length);
    }
    public async Task WriteLineAsyncString_WritesToStream(int charCount, int newLineLength)
    {
        // Arrange
        var content = new string('a', charCount);
        var stream  = new TestMemoryStream();
        var writer  = new HttpResponseStreamWriter(stream, Encoding.UTF8);

        writer.NewLine = new string('\n', newLineLength);

        // Act
        using (writer)
        {
            await writer.WriteLineAsync(content);
        }

        // Assert
        Assert.Equal(charCount + newLineLength, stream.Length);
    }
    public async Task WriteLineAsyncString_OnlyWritesNewLineToStream_ForNullArgument(int newLineLength)
    {
        // Arrange
        string?content = null;
        var    stream  = new TestMemoryStream();
        var    writer  = new HttpResponseStreamWriter(stream, Encoding.UTF8);

        writer.NewLine = new string('\n', newLineLength);

        // Act
        using (writer)
        {
            await writer.WriteLineAsync(content);
        }

        // Assert
        Assert.Equal(newLineLength, stream.Length);
    }
    public async Task WriteLineAsyncCharArray_OnlyWritesNewLineToStream_ForZeroCount(int newLineLength)
    {
        // Arrange
        var content = new char[1];
        var stream  = new TestMemoryStream();
        var writer  = new HttpResponseStreamWriter(stream, Encoding.UTF8);

        writer.NewLine = new string('\n', newLineLength);

        // Act
        using (writer)
        {
            await writer.WriteLineAsync(content, 0, 0);
        }

        // Assert
        Assert.Equal(newLineLength, stream.Length);
    }
    public async Task WriteLineReadOnlyMemoryAsync_WritesToStream(int byteLength, int newLineLength)
    {
        // Arrange
        var stream = new TestMemoryStream();
        var writer = new HttpResponseStreamWriter(stream, Encoding.UTF8);

        writer.NewLine = new string('\n', newLineLength);

        // Act
        using (writer)
        {
            var array  = new string('a', byteLength).ToCharArray();
            var memory = new ReadOnlyMemory <char>(array);
            await writer.WriteLineAsync(memory);
        }

        // Assert
        Assert.Equal(byteLength + newLineLength, stream.Length);
    }