#nullable enable
using System.Collections.Concurrent;
namespace Terminal.Gui.Drivers;
///
/// implementation for fake/mock console I/O used in unit tests.
/// This factory creates instances that simulate console behavior without requiring a real terminal.
///
public class FakeComponentFactory : ComponentFactoryImpl
{
private readonly FakeInput? _input;
private readonly IOutput? _output;
private readonly ISizeMonitor? _sizeMonitor;
///
/// Creates a new FakeComponentFactory with optional output capture.
///
///
/// Optional fake output to capture what would be written to console.
///
public FakeComponentFactory (FakeInput? input = null, IOutput? output = null, ISizeMonitor? sizeMonitor = null)
{
_input = input;
_output = output;
_sizeMonitor = sizeMonitor;
}
///
public override ISizeMonitor CreateSizeMonitor (IOutput consoleOutput, IOutputBuffer outputBuffer)
{
return _sizeMonitor ?? new SizeMonitorImpl (consoleOutput);
}
///
public override IInput CreateInput ()
{
return _input ?? new FakeInput ();
}
///
public override IInputProcessor CreateInputProcessor (ConcurrentQueue inputBuffer) { return new FakeInputProcessor (inputBuffer); }
///
public override IOutput CreateOutput ()
{
return _output ?? new FakeOutput ();
}
}