public void TryGetCommand_Empty() { var matcher = new CoconaCommandMatcher(); var result = matcher.TryGetCommand("A", CreateCommandCollection(), out var command); result.Should().BeFalse(); command.Should().BeNull(); }
public void TryGetCommand_Unknown() { var matcher = new CoconaCommandMatcher(); var result = matcher.TryGetCommand("null", CreateCommandCollection(CreateCommand("A", Array.Empty <ICommandParameterDescriptor>())), out var command); result.Should().BeFalse(); command.Should().BeNull(); }
public void TryGetCommand_Multiple() { var matcher = new CoconaCommandMatcher(); var result = matcher.TryGetCommand("A", CreateCommandCollection(CreateCommand("A", Array.Empty <ICommandParameterDescriptor>()), CreateCommand("B", Array.Empty <ICommandParameterDescriptor>())), out var command); result.Should().BeTrue(); command.Should().NotBeNull(); }
public void ResolveOverload_No_Overloads() { var matcher = new CoconaCommandMatcher(); var command = CreateCommand("A", Array.Empty <ICommandParameterDescriptor>()); var parsedCommandLine = new ParsedCommandLine(new CommandOption[] { }, new CommandArgument[] { }, new string[] { }); var resolved = matcher.ResolveOverload(command, parsedCommandLine); resolved.Should().NotBeNull(); }
public void ResolveOverload_Ambiguous() { var matcher = new CoconaCommandMatcher(); var commandOption0 = new CommandOptionDescriptor(typeof(bool), "foo", new[] { 'm' }, string.Empty, CoconaDefaultValue.None, null, CommandOptionFlags.None, Array.Empty <Attribute>()); var commandOption1 = new CommandOptionDescriptor(typeof(bool), "bar", new[] { 'm' }, string.Empty, CoconaDefaultValue.None, null, CommandOptionFlags.None, Array.Empty <Attribute>()); var command = CreateCommand( "A", new ICommandParameterDescriptor[] { commandOption0, commandOption1 }, new CommandOverloadDescriptor[] { new CommandOverloadDescriptor(commandOption0, null, CreateCommand("A2", Array.Empty <ICommandParameterDescriptor>()), StringComparer.OrdinalIgnoreCase), new CommandOverloadDescriptor(commandOption0, null, CreateCommand("A3", Array.Empty <ICommandParameterDescriptor>()), StringComparer.OrdinalIgnoreCase), }); var parsedCommandLine = new ParsedCommandLine(new CommandOption[] { new CommandOption(commandOption0, "true") }, new CommandArgument[] { }, new string[] { }); Assert.Throws <CoconaException>(() => matcher.ResolveOverload(command, parsedCommandLine)); }
public void ResolveOverload_Overload_1() { var matcher = new CoconaCommandMatcher(); var commandOption = new CommandOptionDescriptor(typeof(string), "mode", new[] { 'm' }, string.Empty, CoconaDefaultValue.None, null, CommandOptionFlags.None, Array.Empty <Attribute>()); var command = CreateCommand( "A", new ICommandParameterDescriptor[] { commandOption }, new CommandOverloadDescriptor[] { new CommandOverloadDescriptor(commandOption, "foo", CreateCommand("A2", Array.Empty <ICommandParameterDescriptor>()), StringComparer.OrdinalIgnoreCase), new CommandOverloadDescriptor(commandOption, "bar", CreateCommand("A3", Array.Empty <ICommandParameterDescriptor>()), StringComparer.OrdinalIgnoreCase), }); var parsedCommandLine = new ParsedCommandLine(new CommandOption[] { }, new CommandArgument[] { }, new string[] { }); var resolved = matcher.ResolveOverload(command, parsedCommandLine); resolved.Should().NotBeNull(); resolved.Name.Should().Be("A"); }