public void UnconfiguredOptionValueShouldHaveCorrectDefaultConfiguration()
        {
            var builder = new CmdLineInputDefinitionBuilder();

            builder.Option("foo")
                   .Value("bar");

            CmdLineOptionDefinition optionDefinition;
            builder.TryGetOption("foo", out optionDefinition);
            var valueDefinition = optionDefinition.Values.First();
            valueDefinition.Name.ShouldBe("bar");
            valueDefinition.IsOptional.ShouldBe(false);
            valueDefinition.IsParams.ShouldBe(false);
            valueDefinition.DescriptionWriter.ShouldBe(null);
            valueDefinition.DisplayName.ShouldBe(null);
        }
        public void UnconfiguredOptionShouldHaveCorrectDefaultConfiguration()
        {
            var builder = new CmdLineInputDefinitionBuilder();

            builder.Option("foo");

            CmdLineOptionDefinition definition;
            builder.TryGetOption("foo", out definition);
            definition.Name.ShouldBe("foo");
            definition.AllowMultiple.ShouldBe(false);
            definition.IsRequired.ShouldBe(false);
            definition.DescriptionWriter.ShouldBe(null);
            definition.Shortcut.ShouldBe(null);
            definition.Values.ShouldBeEmpty();
        }
        public void ConfiguredOptionValueShouldHaveCorrectConfiguration()
        {
            var builder = new CmdLineInputDefinitionBuilder();

            builder.Option("option")
                   .Value("value", x => x.IsOptional().IsParams().Description("description").DisplayName("displayName"));

            CmdLineOptionDefinition optionDefinition;
            builder.TryGetOption("option", out optionDefinition);
            var definition = optionDefinition.Values.First();
            definition.Name.ShouldBe("value");
            definition.IsOptional.ShouldBe(true);
            definition.IsParams.ShouldBe(true);
            definition.DisplayName.ShouldBe("displayName");

            var writer = new TestWriter();
            definition.DescriptionWriter(definition, writer, 0);
            writer.ToString().ShouldBe("description" + Environment.NewLine);
        }
        public void OptionRetievalShouldBeCaseInsensitive()
        {
            var builder = new CmdLineInputDefinitionBuilder();

            builder.Option("foo");

            CmdLineOptionDefinition optionDefinition;

            builder.TryGetOption("foo", out optionDefinition).ShouldBe(true);
            optionDefinition.Name.ShouldBe("foo");

            builder.TryGetOption("Foo", out optionDefinition).ShouldBe(true);
            optionDefinition.Name.ShouldBe("foo");
        }
        public void ConfiguredOptionShouldHaveCorrectConfiguration()
        {
            var builder = new CmdLineInputDefinitionBuilder();

            builder.Option("noValueOption")
                   .AllowMultiple()
                   .IsRequired()
                   .Description("description")
                   .ShortCut("nvo");

            CmdLineOptionDefinition definition;
            builder.TryGetOption("noValueOption", out definition);
            definition.Name.ShouldBe("noValueOption");
            definition.AllowMultiple.ShouldBe(true);
            definition.IsRequired.ShouldBe(true);
            definition.Shortcut.ShouldBe("nvo");

            var writer = new TestWriter();
            definition.DescriptionWriter(definition, writer, 0);
            writer.ToString().ShouldBe("description" + Environment.NewLine);
        }