diff --git a/src/Spectre.Console.Testing/TestConsoleInput.cs b/src/Spectre.Console.Testing/TestConsoleInput.cs
index 09273cd..e471d30 100644
--- a/src/Spectre.Console.Testing/TestConsoleInput.cs
+++ b/src/Spectre.Console.Testing/TestConsoleInput.cs
@@ -61,6 +61,15 @@ public sealed class TestConsoleInput : IAnsiConsoleInput
_input.Enqueue(new ConsoleKeyInfo((char)input, input, false, false, false));
}
+ ///
+ /// Pushes the specified key to the input queue.
+ ///
+ /// The input.
+ public void PushKey(ConsoleKeyInfo consoleKeyInfo)
+ {
+ _input.Enqueue(consoleKeyInfo);
+ }
+
///
public bool IsKeyAvailable()
{
diff --git a/test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_PreviousChoice.Output.verified.txt b/test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_PreviousChoice.Output.verified.txt
new file mode 100644
index 0000000..86cb481
--- /dev/null
+++ b/test/Spectre.Console.Tests/Expectations/Prompts/Text/AutoComplete_PreviousChoice.Output.verified.txt
@@ -0,0 +1 @@
+Favorite fruit? [Banana/Bandana/Orange]: Ban Banana Bandana Banana
diff --git a/test/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs b/test/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs
index 1410b64..69d0770 100644
--- a/test/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs
+++ b/test/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs
@@ -154,6 +154,30 @@ public sealed class TextPromptTests
return Verifier.Verify(console.Output);
}
+ [Fact]
+ [Expectation("AutoComplete_PreviousChoice")]
+ public Task Should_Auto_Complete_To_Previous_Choice_When_Pressing_ShiftTab_On_A_Match()
+ {
+ // Given
+ var console = new TestConsole();
+ console.Input.PushText("Ban");
+ console.Input.PushKey(ConsoleKey.Tab);
+ console.Input.PushKey(ConsoleKey.Tab);
+ var shiftTab = new ConsoleKeyInfo((char)ConsoleKey.Tab, ConsoleKey.Tab, true, false, false);
+ console.Input.PushKey(shiftTab);
+ console.Input.PushKey(ConsoleKey.Enter);
+
+ // When
+ console.Prompt(
+ new TextPrompt("Favorite fruit?")
+ .AddChoice("Banana")
+ .AddChoice("Bandana")
+ .AddChoice("Orange"));
+
+ // Then
+ return Verifier.Verify(console.Output);
+ }
+
[Fact]
[Expectation("CustomValidation")]
public Task Should_Return_Error_If_Custom_Validation_Fails()