Ejemplo n.º 1
0
        public void TryGetCommand_Empty()
        {
            var matcher = new CoconaCommandMatcher();
            var result  = matcher.TryGetCommand("A", CreateCommandCollection(), out var command);

            result.Should().BeFalse();
            command.Should().BeNull();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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");
        }