Пример #1
0
        public void Parse_WithFactoryAndGitVerbsCommitAndNoMessage_ParsesCommitVerb()
        {
            const string expected = "My default message";
            var opt = new OptionsWithGitVerbs();
            var factory = new SimpleVerbfactory
            {
                { () => new GitAdd() },
                { typeof(GitCommit), () => new GitCommit("My default message") }
            };
            var parser = new CliParser<OptionsWithGitVerbs>(
                opt, ParserOptions.None, new AutomaticHelpGenerator<OptionsWithGitVerbs>(), factory);

            parser.Parse("commit".Split());
            var actual = opt.Commit.CommitMessage;

            Assert.AreEqual(expected, actual);
        }
Пример #2
0
        public void Parse_WithFactoryAndGitVerbsAdd_ParsesAddVerb()
        {
            string[] expected = { "myfile.txt", "otherfile.txt" };
            var opt = new OptionsWithGitVerbs();
            var factory = new SimpleVerbfactory
            {
                { () => new GitAdd() },
                { typeof(GitCommit), () => new GitCommit("My default message") }
            };
            var parser = new CliParser<OptionsWithGitVerbs>(
                opt, ParserOptions.None, new AutomaticHelpGenerator<OptionsWithGitVerbs>(), factory);

            parser.Parse("add myfile.txt otherfile.txt".Split());
            var actual = opt.Add.Files.ToList();

            CollectionAssert.AreEqual(expected, actual);
        }
Пример #3
0
        public void ParseDate_WithSpanishLocaleAndSpanishDateFormat_ParsesDateCorrectly()
        {
            using (LocalizationExtensions.WithUiCulture(new CultureInfo("es-ES")))
            {
                // Arrange
                var expected = new DateTime(2016, 3, 12);

                var opt = new LocalizationOptions();
                var parser = new CliParser<LocalizationOptions>(opt);
                var help = new AutomaticHelpGenerator<LocalizationOptions>();

                // Act
                parser.Parse("-s 12/3/2016 file.txt".Split());

                // Assert
                Assert.AreEqual(expected, opt.StartDate);
            }
        }
Пример #4
0
        public void NamedArgument_WithLowerBoundCountEqualsZero_ParsesNoArguments()
        {
            var opts = new NamedArgumentLowerBoundCountEqualsZero();
            var arguments = new string[0];
            var parser = new CliParser<NamedArgumentLowerBoundCountEqualsZero>(opts);

            parser.Parse(arguments);

            Assert.AreEqual(0, opts.Args.Count);
        }
Пример #5
0
        public void NamedArgument_WithLowerBoundCountEqualsZero_ParsesAllArguments()
        {
            var opts = new NamedArgumentLowerBoundCountEqualsZero();
            var arguments = new[] { "-s", "first", "second" };
            var parser = new CliParser<NamedArgumentLowerBoundCountEqualsZero>(opts);

            parser.Parse(arguments);

            Assert.AreEqual(2, opts.Args.Count);
        }
Пример #6
0
        public void Parse_WithFactoryAndVerbHavingNoDefaultConstructor_ParsesVerb()
        {
            const string expected = "myfile.txt";
            var opt = new OptionsWithNoDefaultConstructor();
            var factory = new SimpleVerbfactory
            {
                { typeof(VerbWithNoDefaultConstructor), () => new VerbWithNoDefaultConstructor("default.txt") }
            };
            var parser = new CliParser<OptionsWithNoDefaultConstructor>(
                opt, ParserOptions.None, new AutomaticHelpGenerator<OptionsWithNoDefaultConstructor>(), factory);

            parser.Parse("add myfile.txt".Split());

            Assert.AreEqual(expected, opt.AddInfo.Filename);
        }
Пример #7
0
        public void Parse_WithVerbHavingDefaultConstructor_ParsesVerb()
        {
            const string expected = "myfile.txt";
            var opt = new OptionsWithVerbDefaultConstructor();
            var parser = new CliParser<OptionsWithVerbDefaultConstructor>(opt);

            parser.Parse("add myfile.txt".Split());

            Assert.AreEqual(expected, opt.AddInfo.Filename);
        }
Пример #8
0
        public void ParseNumber_WithMexicanLocaleAndMexicanNumberFormat_ParsesNumberCorrectly()
        {
            using (LocalizationExtensions.WithUiCulture(new CultureInfo("es-MX")))
            {
                // Arrange
                var expected = 2.3;

                var opt = new LocalizationOptions();
                var parser = new CliParser<LocalizationOptions>(opt);
                var help = new AutomaticHelpGenerator<LocalizationOptions>();

                // Act
                parser.Parse("-c 2.3 file.txt".Split());

                // Assert
                Assert.AreEqual(expected, opt.MyCounter);
            }
        }
Пример #9
0
 public void CaseFolding_ParseShortArgWithWrongCaseWhenCaseInsensitive_CorrectlyParsesArgs()
 {
     var parser = new CliParser<CaseFoldingOptions>(
         new CaseFoldingOptions(), ParserOptions.CaseInsensitive);
     parser.Parse("-N timothy".Split());
 }
Пример #10
0
 public void CaseFolding_ParseLongArgPrefixWithWrongCaseWhenCaseInsensitiveAndPartialMatch_CorrectlyParsesArgs()
 {
     var parser = new CliParser<CaseFoldingOptions>(
         new CaseFoldingOptions(), ParserOptions.CaseInsensitive | ParserOptions.NamedPartialMatch);
     parser.Parse("--Na timothy".Split());
 }
Пример #11
0
        public void PositionalArgument_WithMultiplePositionalArgumentsAndLowerBoundCountEqualsZero_ParsesOtherArguments()
        {
            var opts = new PositionalArgumentUnitTest.MultiplePositionalArgumentLowerBoundCountEqualsZero();
            var arguments = new[] { "fixed" };
            var parser = new CliParser<PositionalArgumentUnitTest.MultiplePositionalArgumentLowerBoundCountEqualsZero>(opts);

            parser.Parse(arguments);

            Assert.AreEqual(0, opts.Args.Count);
        }
Пример #12
0
        public void PositionalArgument_WithLowerBoundCountEqualsZero_ParsesNoArguments()
        {
            var opts = new PositionalArgumentUnitTest.PositionalArgumentLowerBoundCountEqualsZero();
            var arguments = new string[0];
            var parser = new CliParser<PositionalArgumentUnitTest.PositionalArgumentLowerBoundCountEqualsZero>(opts);

            parser.Parse(arguments);

            Assert.AreEqual(0, opts.Args.Count);
        }
Пример #13
0
        public void PositionalArgument_WithLowerBoundCountEqualsZero_ParsesAllArguments()
        {
            var opts = new PositionalArgumentUnitTest.PositionalArgumentLowerBoundCountEqualsZero();
            var arguments = new[] { "first", "second" };
            var parser = new CliParser<PositionalArgumentUnitTest.PositionalArgumentLowerBoundCountEqualsZero>(opts);

            parser.Parse(arguments);

            Assert.AreEqual(2, opts.Args.Count);
        }