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