Fixes #4243 - ConsoleDriverFacade.CreateClipboard now honors FakeDriver.FakeBehaviors.UseFakeClipboard (#4244)

* updatd ConsoleDriverFacade.CreateClipboard to honor FakeDriver.FakeBehaviors.UseFakeClipboard

* Code cleanup of fake driver v2
This commit is contained in:
Tig
2025-09-12 12:32:31 -07:00
committed by GitHub
parent e869f842e3
commit 18b602e980
15 changed files with 292 additions and 331 deletions

View File

@@ -0,0 +1,45 @@
#nullable enable
using System.Drawing;
using TerminalGuiFluentTesting;
namespace Terminal.Gui.Drivers;
#pragma warning disable CS1591
public class FakeApplicationFactory
{
/// <summary>
/// Creates an initialized fake application which will be cleaned up when result object
/// is disposed.
/// </summary>
/// <returns></returns>
public IDisposable SetupFakeApplication ()
{
var cts = new CancellationTokenSource ();
var fakeInput = new FakeNetInput (cts.Token);
FakeOutput output = new ();
output.Size = new (25, 25);
IApplication origApp = ApplicationImpl.Instance;
var sizeMonitor = new FakeSizeMonitor ();
var v2 = new ApplicationV2 (new FakeNetComponentFactory (fakeInput, output, sizeMonitor));
ApplicationImpl.ChangeInstance (v2);
v2.Init (null, "v2net");
ConsoleDriverFacade<ConsoleKeyInfo> d = (ConsoleDriverFacade<ConsoleKeyInfo>)Application.Driver!;
sizeMonitor.SizeChanging += (_, e) =>
{
if (e.Size != null)
{
Size s = e.Size.Value;
output.Size = s;
d.OutputBuffer.SetWindowSize (s.Width, s.Height);
}
};
return new FakeApplicationLifecycle (origApp, cts);
}
}