Build Charac server and client with OIDC, SSH sessions, and packages
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
using System.Text;
|
||||
using Charac.Client;
|
||||
|
||||
namespace Charac.Server.Tests;
|
||||
|
||||
public sealed class TerminalMouseTrackingTests
|
||||
{
|
||||
[Fact]
|
||||
public void MouseReportsReachTuiButNotShellAfterAlternateScreenEnds()
|
||||
{
|
||||
var tracking = new TerminalMouseTracking();
|
||||
var report = Encoding.ASCII.GetBytes("\u001b[<35;88;8M");
|
||||
|
||||
Assert.Empty(tracking.FilterInput(report));
|
||||
tracking.ObserveOutput(Encoding.ASCII.GetBytes("\u001b[?104"));
|
||||
tracking.ObserveOutput(Encoding.ASCII.GetBytes("9h\u001b[?1003h\u001b[?1006h"));
|
||||
Assert.True(tracking.InAlternateScreen);
|
||||
Assert.Equal(report, tracking.FilterInput(report));
|
||||
|
||||
tracking.ObserveOutput(Encoding.ASCII.GetBytes("\u001b[?1049l"));
|
||||
Assert.False(tracking.InAlternateScreen);
|
||||
Assert.Empty(tracking.FilterInput(report));
|
||||
Assert.Equal(Encoding.ASCII.GetBytes("\u001b[A"), tracking.FilterInput(Encoding.ASCII.GetBytes("\u001b[A")));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SplitInputPreservesKeyboardAndDropsStaleMouseReport()
|
||||
{
|
||||
var tracking = new TerminalMouseTracking();
|
||||
Assert.Empty(tracking.FilterInput(Encoding.ASCII.GetBytes("\u001b[<35;88")));
|
||||
Assert.True(tracking.HasPendingInput);
|
||||
Assert.Empty(tracking.FilterInput(Encoding.ASCII.GetBytes(";8M")));
|
||||
Assert.False(tracking.HasPendingInput);
|
||||
|
||||
Assert.Empty(tracking.FilterInput(Encoding.ASCII.GetBytes("\u001b")));
|
||||
Assert.Equal(Encoding.ASCII.GetBytes("\u001b"), tracking.FlushPendingInput());
|
||||
Assert.Equal(Encoding.ASCII.GetBytes("ab\u001b[A"), tracking.FilterInput(Encoding.ASCII.GetBytes("ab\u001b[A")));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user