TermRemoteCtl/apps/windows_agent/tests/TermRemoteCtl.Agent.Tests/Terminal/TerminalFrameBatcherTests.cs

47 lines
1.1 KiB
C#

using TermRemoteCtl.Agent.Terminal;
namespace TermRemoteCtl.Agent.Tests.Terminal;
public class TerminalFrameBatcherTests
{
[Fact]
public async Task FlushAsync_Combines_Multiple_Writes_Into_One_Frame()
{
var frames = new List<string>();
await using var batcher = new TerminalFrameBatcher(
TimeSpan.FromMilliseconds(33),
frame =>
{
frames.Add(frame);
return Task.CompletedTask;
});
batcher.Append("abc");
batcher.Append("def");
await batcher.FlushAsync();
Assert.Equal(["abcdef"], frames);
}
[Fact]
public async Task Append_Emits_Batched_Frame_After_Interval()
{
var frames = new List<string>();
await using var batcher = new TerminalFrameBatcher(
TimeSpan.FromMilliseconds(10),
frame =>
{
frames.Add(frame);
return Task.CompletedTask;
});
batcher.Append("hello");
batcher.Append(" world");
await Task.Delay(50);
Assert.Equal(["hello world"], frames);
}
}