public void Parse_string_array_option_using_long_name_with_equal_sign()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new CommandLine.Parser();
            var result = parser.ParseArguments(new string[] { "--strarr=apple", "kiwi" }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new string[] { "apple", "kiwi" }, options.StringArrayValue);
        }
        public void Parse_string_array_option_using_short_name()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new CommandLine.Parser();
            var result = parser.ParseArguments(new string[] { "-z", "alfa", "beta", "gamma" }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new string[] { "alfa", "beta", "gamma" }, options.StringArrayValue);
        }
        public void Parse_culture_specific_number()
        {
            //var actualCulture = Thread.CurrentThread.CurrentCulture;
            ////Thread.CurrentThread.CurrentCulture = new CultureInfo("it-IT");
            var options = new SimpleOptionsWithArray();
            var parser = new Parser(new ParserSettings { ParsingCulture = new CultureInfo("it-IT") });
            var result = parser.ParseArguments(new string[] { "-q", "1,2", "1,23", "1,234" }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new double[] { 1.2, 1.23, 1.234 }, options.DoubleArrayValue);

            //Thread.CurrentThread.CurrentCulture = actualCulture;
        }
        public void Parse_different_arrays_together__combination_one()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new Parser();
            var result = parser.ParseArguments(new string[] {
                "-z", "one", "two", "three", "four",
                "-y", "1", "2", "3", "4",
                "-q", "0.1", "0.2", "0.3", "0.4"
            }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new string[] { "one", "two", "three", "four" }, options.StringArrayValue);
            base.ElementsShouldBeEqual(new int[] { 1, 2, 3, 4 }, options.IntegerArrayValue);
            base.ElementsShouldBeEqual(new double[] { .1, .2, .3, .4 }, options.DoubleArrayValue);

            options = new SimpleOptionsWithArray();
            parser = new Parser();
            result = parser.ParseArguments(new string[] {
                "-y", "1", "2", "3", "4",
                "-z", "one", "two", "three", "four",
                "-q", "0.1", "0.2", "0.3", "0.4"
            }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new int[] { 1, 2, 3, 4 }, options.IntegerArrayValue);
            base.ElementsShouldBeEqual(new string[] { "one", "two", "three", "four" }, options.StringArrayValue);
            base.ElementsShouldBeEqual(new double[] { .1, .2, .3, .4 }, options.DoubleArrayValue);

            options = new SimpleOptionsWithArray();
            parser = new Parser();
            result = parser.ParseArguments(new string[] {
                "-q", "0.1", "0.2", "0.3", "0.4",
                "-y", "1", "2", "3", "4",
                "-z", "one", "two", "three", "four"
            }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new double[] { .1, .2, .3, .4 }, options.DoubleArrayValue);
            base.ElementsShouldBeEqual(new int[] { 1, 2, 3, 4 }, options.IntegerArrayValue);
            base.ElementsShouldBeEqual(new string[] { "one", "two", "three", "four" }, options.StringArrayValue);
        }
        public void Passing_no_value_to_a_string_array_option_fails()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new Parser();
            var result = parser.ParseArguments(new string[] { "-z" }, options);

            result.Should().BeFalse();

            options = new SimpleOptionsWithArray();
            result = parser.ParseArguments(new string[] { "--strarr" }, options);

            result.Should().BeFalse();
        }
        public void Passing_bad_value_to_an_integer_array_option_fails()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new Parser();
            var result = parser.ParseArguments(new string[] { "-y", "one", "2", "3" }, options);

            result.Should().BeFalse();

            options = new SimpleOptionsWithArray();
            parser = new Parser();
            result = parser.ParseArguments(new string[] { "-yone", "2", "3" }, options);

            result.Should().BeFalse();

            options = new SimpleOptionsWithArray();
            parser = new Parser();
            result = parser.ParseArguments(new string[] { "--intarr", "1", "two", "3" }, options);

            result.Should().BeFalse();

            options = new SimpleOptionsWithArray();
            parser = new Parser();
            result = parser.ParseArguments(new string[] { "--intarr=1", "2", "three" }, options);

            result.Should().BeFalse();
        }
        public void Parse_string_array_option_using_short_name_with_value_adjacent()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new Parser();
            var result = parser.ParseArguments(new string[] { "-zapple", "kiwi" }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new string[] { "apple", "kiwi" }, options.StringArrayValue);
        }
        public void Parse_string_array_option_using_short_name_with_options_before_and_after()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new Parser();
            var result = parser.ParseArguments(new string[] {
                "-i", "191919", "-z", "one", "two", "three", "--switch", "--string=near" }, options);

            result.Should().BeTrue();
            options.IntegerValue.Should().Be(191919);
            base.ElementsShouldBeEqual(new string[] { "one", "two", "three" }, options.StringArrayValue);
            options.BooleanValue.Should().BeTrue();
            options.StringValue.Should().Be("near");
        }
        public void Parse_string_array_option_using_short_name_and_string_option_before()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new Parser();
            var result = parser.ParseArguments(new string[] { "-s", "before", "-z", "one", "two", "three" }, options);

            result.Should().BeTrue();
            options.StringValue.Should().Be("before");
            base.ElementsShouldBeEqual(new string[] { "one", "two", "three" }, options.StringArrayValue);
        }
        public void Parse_integer_array_option_using_short_name()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new Parser();
            var result = parser.ParseArguments(new string[] { "-y", "1", "2", "3" }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new int[] { 1, 2, 3 }, options.IntegerArrayValue);
        }
        public void Parse_double_array_option_using_short_name()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new Parser();
            var result = parser.ParseArguments(new string[] { "-q", "0.1", "2.3", "0.9" }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new double[] { .1, 2.3, .9 }, options.DoubleArrayValue);
        }
        public void Parse_different_arrays_together__combination_two()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new Parser();
            var result = parser.ParseArguments(new string[] {
                "-z", "one", "two", "three", "four",
                "-y", "1", "2", "3", "4",
                "-q", "0.1", "0.2", "0.3", "0.4",
                "--string=after"
            }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new string[] { "one", "two", "three", "four" }, options.StringArrayValue);
            base.ElementsShouldBeEqual(new int[] { 1, 2, 3, 4 }, options.IntegerArrayValue);
            base.ElementsShouldBeEqual(new double[] { .1, .2, .3, .4 }, options.DoubleArrayValue);
            options.StringValue.Should().Be("after");

            options = new SimpleOptionsWithArray();
            parser = new Parser();
            result = parser.ParseArguments(new string[] {
                "--string", "before",
                "-y", "1", "2", "3", "4",
                "-z", "one", "two", "three", "four",
                "-q", "0.1", "0.2", "0.3", "0.4"
            }, options);

            result.Should().BeTrue();
            options.StringValue.Should().Be("before");
            base.ElementsShouldBeEqual(new int[] { 1, 2, 3, 4 }, options.IntegerArrayValue);
            base.ElementsShouldBeEqual(new string[] { "one", "two", "three", "four" }, options.StringArrayValue);
            base.ElementsShouldBeEqual(new double[] { .1, .2, .3, .4 }, options.DoubleArrayValue);

            options = new SimpleOptionsWithArray();
            parser = new Parser();
            result = parser.ParseArguments(new string[] {
                "-q", "0.1", "0.2", "0.3", "0.4",
                "-y", "1", "2", "3", "4",
                "-s", "near-the-center",
                "-z", "one", "two", "three", "four"
            }, options);

            result.Should().BeTrue();
            base.ElementsShouldBeEqual(new double[] { .1, .2, .3, .4 }, options.DoubleArrayValue);
            base.ElementsShouldBeEqual(new int[] { 1, 2, 3, 4 }, options.IntegerArrayValue);
            options.StringValue.Should().Be("near-the-center");
            base.ElementsShouldBeEqual(new string[] { "one", "two", "three", "four" }, options.StringArrayValue);

            options = new SimpleOptionsWithArray();
            parser = new Parser();
            result = parser.ParseArguments(new string[] {
                "--switch",
                "-z", "one", "two", "three", "four",
                "-y", "1", "2", "3", "4",
                "-i", "1234",
                "-q", "0.1", "0.2", "0.3", "0.4",
                "--string", "I'm really playing with the parser!"
            }, options);

            result.Should().BeTrue();
            options.BooleanValue.Should().BeTrue();
            base.ElementsShouldBeEqual(new string[] { "one", "two", "three", "four" }, options.StringArrayValue);
            base.ElementsShouldBeEqual(new int[] { 1, 2, 3, 4 }, options.IntegerArrayValue);
            options.IntegerValue.Should().Be(1234);
            base.ElementsShouldBeEqual(new double[] { .1, .2, .3, .4 }, options.DoubleArrayValue);
            options.StringValue.Should().Be("I'm really playing with the parser!");
        }
        public void Passing_no_value_to_an_integer_array_option_fails()
        {
            var options = new SimpleOptionsWithArray();
            var parser = new CommandLine.Parser();
            var result = parser.ParseArguments(new string[] { "-y" }, options);

            result.Should().BeFalse();

            options = new SimpleOptionsWithArray();
            result = parser.ParseArguments(new string[] { "--intarr" }, options);

            result.Should().BeFalse();
        }