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(); 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(); 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); } }