Files
Terminal.Gui/Tests/TerminalGuiFluentTesting/FakeInput.cs
Tig 0baa881dc5 Fixes #4046 - Moves examples into ./Examples and fixes ./Tests (#4047)
* touching publish.yml

* Moved Examples into ./Examples

* Moved Benchmarks into ./Tests

* Moved Benchmarks into ./Tests

* Moved UICatalog into ./Examples

* Moved UICatalog into ./Examples 2

* Moved tests into ./Tests

* Updated nuget
2025-04-25 09:49:33 -06:00

35 lines
996 B
C#

using System.Collections.Concurrent;
using Terminal.Gui;
namespace TerminalGuiFluentTesting;
internal class FakeInput<T> : IConsoleInput<T>
{
private readonly CancellationToken _hardStopToken;
private readonly CancellationTokenSource _timeoutCts;
public FakeInput (CancellationToken hardStopToken)
{
_hardStopToken = hardStopToken;
// Create a timeout-based cancellation token too to prevent tests ever fully hanging
_timeoutCts = new (With.Timeout);
}
/// <inheritdoc/>
public void Dispose () { }
/// <inheritdoc/>
public void Initialize (ConcurrentQueue<T> inputBuffer) { InputBuffer = inputBuffer; }
public ConcurrentQueue<T>? InputBuffer { get; set; }
/// <inheritdoc/>
public void Run (CancellationToken token)
{
// Blocks until either the token or the hardStopToken is cancelled.
WaitHandle.WaitAny ([token.WaitHandle, _hardStopToken.WaitHandle, _timeoutCts.Token.WaitHandle]);
}
}