47 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|