namespace Spectre.Console.Tests.Unit.Cli.Annotations; [ExpectationPath("Arguments")] public sealed partial class CommandArgumentAttributeTests { public sealed class ArgumentCannotContainOptions { public sealed class Settings : CommandSettings { [CommandArgument(0, "--foo ")] public string Foo { get; set; } } [Fact] [Expectation("ArgumentCannotContainOptions")] public Task Should_Return_Correct_Text() { // Given, When var result = Fixture.Run(); // Then return Verifier.Verify(result); } } public sealed class MultipleValuesAreNotSupported { public sealed class Settings : CommandSettings { [CommandArgument(0, " ")] public string Foo { get; set; } } [Fact] [Expectation("MultipleValuesAreNotSupported")] public Task Should_Return_Correct_Text() { // Given, When var result = Fixture.Run(); // Then return Verifier.Verify(result); } } public sealed class ValuesMustHaveName { public sealed class Settings : CommandSettings { [CommandArgument(0, "<>")] public string Foo { get; set; } } [Fact] [Expectation("ValuesMustHaveName")] public Task Should_Return_Correct_Text() { // Given, When var result = Fixture.Run(); // Then return Verifier.Verify(result); } } private static class Fixture { public static string Run(params string[] args) where TSettings : CommandSettings { using (var writer = new TestConsole()) { var app = new CommandApp(); app.Configure(c => c.ConfigureConsole(writer)); app.Configure(c => c.AddCommand>("foo")); app.Run(args); return writer.Output .NormalizeLineEndings() .TrimLines() .Trim(); } } } }