From 08f37fdf3016258c60de91558afbb718d4262924 Mon Sep 17 00:00:00 2001 From: antek Date: Tue, 7 Apr 2026 16:48:29 +0200 Subject: [PATCH] use StringComparer.OrdinalIgnoreCase as default comparer for TextPrompt --- .../Unit/Prompts/TextPromptTests.cs | 20 +++++++++++++++++++ src/Spectre.Console/Prompts/TextPrompt.cs | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs b/src/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs index 80a18b563..0f09591e7 100644 --- a/src/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs +++ b/src/Spectre.Console.Tests/Unit/Prompts/TextPromptTests.cs @@ -453,4 +453,24 @@ public Task Should_Clear_Prompt_Line_When_ClearOnFinish_Is_Enabled() // Then return Verifier.Verify(console.Output); } + + [Theory] + [InlineData("yes")] + [InlineData("Yes")] + [InlineData("YES")] + public async Task Uses_case_insensitive_comparison_when_no_comparer_is_passed(string input) + { + // Given + var console = new TestConsole { EmitAnsiSequences = true, }; + console.Input.PushTextWithEnter(input); + + var prompt = new TextPrompt("Was the tool helpful?") + .AddChoices(["Yes", "Partially", "No"]); + + // When + var result = await console.PromptAsync(prompt); + + // Then + result.ShouldBe("Yes"); + } } \ No newline at end of file diff --git a/src/Spectre.Console/Prompts/TextPrompt.cs b/src/Spectre.Console/Prompts/TextPrompt.cs index 5418ef8b9..4dbcf71b0 100644 --- a/src/Spectre.Console/Prompts/TextPrompt.cs +++ b/src/Spectre.Console/Prompts/TextPrompt.cs @@ -109,7 +109,7 @@ public sealed class TextPrompt : IPrompt, IHasCulture public TextPrompt(string prompt, StringComparer? comparer = null) { _prompt = prompt ?? throw new System.ArgumentNullException(nameof(prompt)); - _comparer = comparer; + _comparer = comparer ?? StringComparer.OrdinalIgnoreCase; } ///