#nullable enable using System.Collections.Concurrent; namespace Terminal.Gui.Drivers; /// /// Fake console input for testing that can return predefined input or wait indefinitely. /// public class FakeConsoleInput : ConsoleInput { private readonly ConcurrentQueue? _predefinedInput; /// /// Creates a new FakeConsoleInput with optional predefined input. /// /// Optional queue of predefined input to return. public FakeConsoleInput (ConcurrentQueue? predefinedInput = null) { _predefinedInput = predefinedInput; } /// protected override bool Peek () { if (_predefinedInput != null && !_predefinedInput.IsEmpty) { return true; } // No input available return false; } /// protected override IEnumerable Read () { if (_predefinedInput != null && _predefinedInput.TryDequeue (out ConsoleKeyInfo key)) { yield return key; } } }