File: Buffering\TextChunkListBuilderTest.cs
Web Access
Project: src\src\Components\Endpoints\test\Microsoft.AspNetCore.Components.Endpoints.Tests.csproj (Microsoft.AspNetCore.Components.Endpoints.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Text;
 
namespace Microsoft.AspNetCore.Components.Endpoints.Rendering;
 
public class TextChunkListBuilderTest
{
    [Fact]
    public async Task CanAddContentThatSpansMultiplePages()
    {
        var builder = new TextChunkListBuilder(pageLength: 2);
        var charArrayScope = new StringBuilder();
 
        // Populate first page
        builder.Add(new TextChunk("Item1"));
        builder.Add(new TextChunk(new[] { 'I', 't', 'e', 'm', '2' }, charArrayScope));
 
        // Part-populate second page
        builder.Add(new TextChunk("Item3"));
 
        // Assert: has expected content
        var writer1 = new StringWriter();
        await builder.WriteToAsync(writer1, charArrayScope.ToString());
        Assert.Equal("Item1Item2Item3", writer1.ToString());
 
        // Clearing works
        builder.Clear();
        var writer2 = new StringWriter();
        await builder.WriteToAsync(writer2, charArrayScope.ToString());
        Assert.Equal("", writer2.ToString());
 
        // Can then reuse
        builder.Add(new TextChunk("Item4"));
 
        var writer3 = new StringWriter();
        await builder.WriteToAsync(writer3, charArrayScope.ToString());
        Assert.Equal("Item4", writer3.ToString());
    }
}