mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-07-04 11:48:16 +08:00
Improve exception if a (multi)selection prompt is used incorrectly
Before this commit, the selection prompt would throw an `InvalidOperationException` (Sequence contains no elements) and the multi selection prompt would throw an `ArgumentOutOfRangeException` (Index was out of range. Must be non-negative and less than the size of the collection.) Both would occur because the prompts were never meant to be empty.
This commit is contained in:

committed by
Patrik Svensson

parent
b470af11f7
commit
c70a8b8fc5
@ -127,6 +127,23 @@ public sealed class MultiSelectionPromptTests
|
||||
// Then
|
||||
action.ShouldThrow<ArgumentOutOfRangeException>();
|
||||
}
|
||||
|
||||
[Fact] public void Should_Throw_Meaningful_Exception_For_Empty_Prompt()
|
||||
{
|
||||
// Given
|
||||
var console = new TestConsole();
|
||||
console.Profile.Capabilities.Interactive = true;
|
||||
console.Input.PushKey(ConsoleKey.Spacebar);
|
||||
|
||||
var prompt = new MultiSelectionPrompt<string>();
|
||||
|
||||
// When
|
||||
Action action = () => prompt.Show(console);
|
||||
|
||||
// Then
|
||||
var exception = action.ShouldThrow<InvalidOperationException>();
|
||||
exception.Message.ShouldBe("Cannot show an empty selection prompt. Please call the AddChoice() method to configure the prompt.");
|
||||
}
|
||||
}
|
||||
|
||||
file sealed class CustomItem
|
||||
|
@ -114,6 +114,22 @@ public sealed class SelectionPromptTests
|
||||
// Then
|
||||
selection.ShouldBe(choices[1]);
|
||||
}
|
||||
|
||||
[Fact] public void Should_Throw_Meaningful_Exception_For_Empty_Prompt()
|
||||
{
|
||||
// Given
|
||||
var console = new TestConsole();
|
||||
console.Profile.Capabilities.Interactive = true;
|
||||
|
||||
var prompt = new SelectionPrompt<string>();
|
||||
|
||||
// When
|
||||
Action action = () => prompt.Show(console);
|
||||
|
||||
// Then
|
||||
var exception = action.ShouldThrow<InvalidOperationException>();
|
||||
exception.Message.ShouldBe("Cannot show an empty selection prompt. Please call the AddChoice() method to configure the prompt.");
|
||||
}
|
||||
}
|
||||
|
||||
file sealed class CustomSelectionItem
|
||||
|
Reference in New Issue
Block a user