コード例 #1
0
ファイル: EnumeratorsFixture.cs プロジェクト: Cadla/OBFSCTR
        public void StringIteration()
        {
            const string valueOne = "one";
            const string valueTwo = "two";
            const string valueThree = "three";

            string[] values = { valueOne, valueTwo, valueThree };
            IArgumentEnumerator e = new StringArrayEnumerator(values);
            e.MoveNext();

            Assert.AreEqual(valueOne, e.Current);
            Assert.AreEqual(valueTwo, e.Next);
            Assert.IsFalse(e.IsLast);

            e.MoveNext();

            Assert.AreEqual(valueTwo, e.Current);
            Assert.AreEqual(valueThree, e.Next);
            Assert.IsFalse(e.IsLast);

            e.MoveNext();

            Assert.AreEqual(valueThree, e.Current);
            Assert.IsNull(e.Next);
            Assert.IsTrue(e.IsLast);
        }
コード例 #2
0
        public void String_iteration()
        {
            const string valueOne = "one";
            const string valueTwo = "two";
            const string valueThree = "three";

            string[] values = { valueOne, valueTwo, valueThree };
            IArgumentEnumerator e = new StringArrayEnumerator(values);
            e.MoveNext();

            e.Current.Should().Be(valueOne);
            e.Next.Should().Be(valueTwo);
            e.IsLast.Should().BeFalse();

            e.MoveNext();

            e.Current.Should().Be(valueTwo);
            e.Next.Should().Be(valueThree);
            e.IsLast.Should().BeFalse();

            e.MoveNext();

            e.Current.Should().Be(valueThree);
            e.Next.Should().BeNull();
            e.IsLast.Should().BeTrue();
        }
コード例 #3
0
        public void StringIteration()
        {
            const string valueOne   = "one";
            const string valueTwo   = "two";
            const string valueThree = "three";

            string[]            values = { valueOne, valueTwo, valueThree };
            IArgumentEnumerator e      = new StringArrayEnumerator(values);

            e.MoveNext();

            Assert.AreEqual(valueOne, e.Current);
            Assert.AreEqual(valueTwo, e.Next);
            Assert.IsFalse(e.IsLast);

            e.MoveNext();

            Assert.AreEqual(valueTwo, e.Current);
            Assert.AreEqual(valueThree, e.Next);
            Assert.IsFalse(e.IsLast);

            e.MoveNext();

            Assert.AreEqual(valueThree, e.Current);
            Assert.IsNull(e.Next);
            Assert.IsTrue(e.IsLast);
        }
コード例 #4
0
ファイル: EnumeratorsFixture.cs プロジェクト: sjb8100/src
        public void String_iteration()
        {
            const string valueOne   = "one";
            const string valueTwo   = "two";
            const string valueThree = "three";

            string[]            values = { valueOne, valueTwo, valueThree };
            IArgumentEnumerator e      = new StringArrayEnumerator(values);

            e.MoveNext();

            e.Current.Should().Be(valueOne);
            e.Next.Should().Be(valueTwo);
            e.IsLast.Should().BeFalse();

            e.MoveNext();

            e.Current.Should().Be(valueTwo);
            e.Next.Should().Be(valueThree);
            e.IsLast.Should().BeFalse();

            e.MoveNext();

            e.Current.Should().Be(valueThree);
            e.Next.Should().BeNull();
            e.IsLast.Should().BeTrue();
        }
コード例 #5
0
        public void Get_next_input_values()
        {
            var ae = new StringArrayEnumerator(new string[] { "--optarr", "one", "two", "--plain", "3" });

            ae.MoveNext(); // skip first, working like in a real case

            var items = ArgumentParser.InternalWrapperOfGetNextInputValues(ae);

            base.ElementsShouldBeEqual(new string[] { "one", "two" }, items);
            ae.Current.Should().Be("two");
        }
コード例 #6
0
        public void GetNextInputValues()
        {
            var ae = new StringArrayEnumerator(new string[] { "--optarr", "one", "two", "--plain", "3" });

            ae.MoveNext(); // skip first, working like in a real case

            var items = ArgumentParser.PublicWrapperOfGetNextInputValues(ae);

            base.AssertArrayItemEqual(new string[] { "one", "two" }, items);
            Assert.AreEqual("two", ae.Current);
        }
コード例 #7
0
ファイル: ArgumentParserFixture.cs プロジェクト: sjb8100/src
        public void Get_next_input_values()
        {
            var ae = new StringArrayEnumerator(new string[] { "--optarr", "one", "two", "--plain", "3" });

            ae.MoveNext(); // skip first, working like in a real case

            var items = ArgumentParser.InternalWrapperOfGetNextInputValues(ae);

            base.ElementsShouldBeEqual(new string[] { "one", "two" }, items);
            ae.Current.Should().Be("two");
        }
コード例 #8
0
        private bool DoParseArgumentsCore(string[] args, object options)
        {
            var hadError  = false;
            var optionMap = OptionMap.Create(options, _settings);

            optionMap.SetDefaults();
            var valueMapper = new ValueMapper(options, _settings.ParsingCulture);

            var arguments = new StringArrayEnumerator(args);

            while (arguments.MoveNext())
            {
                var argument = arguments.Current;
                if (string.IsNullOrEmpty(argument))
                {
                    continue;
                }

                var parser = ArgumentParser.Create(argument, _settings.IgnoreUnknownArguments);
                if (parser != null)
                {
                    var result = parser.Parse(arguments, optionMap, options);
                    if ((result & PresentParserState.Failure) == PresentParserState.Failure)
                    {
                        SetParserStateIfNeeded(options, parser.PostParsingState);
                        hadError = true;
                        continue;
                    }

                    if ((result & PresentParserState.MoveOnNextElement) == PresentParserState.MoveOnNextElement)
                    {
                        arguments.MoveNext();
                    }
                }
                else if (valueMapper.CanReceiveValues)
                {
                    if (!valueMapper.MapValueItem(argument))
                    {
                        hadError = true;
                    }
                }
            }

            hadError |= !optionMap.EnforceRules();

            return(!hadError);
        }
コード例 #9
0
ファイル: Parser.cs プロジェクト: lizhi5753186/commandline
        private bool DoParseArgumentsCore(string[] args, object options)
        {
            var hadError = false;
            var optionMap = OptionMap.Create(options, _settings);
            optionMap.SetDefaults();
            var valueMapper = new ValueMapper(options, _settings.ParsingCulture);

            var arguments = new StringArrayEnumerator(args);
            while (arguments.MoveNext())
            {
                var argument = arguments.Current;
                if (string.IsNullOrEmpty(argument))
                {
                    continue;
                }

                var parser = ArgumentParser.Create(argument, _settings.IgnoreUnknownArguments);
                if (parser != null)
                {
                    var result = parser.Parse(arguments, optionMap, options);
                    if ((result & PresentParserState.Failure) == PresentParserState.Failure)
                    {
                        SetParserStateIfNeeded(options, parser.PostParsingState);
                        hadError = true;
                        continue;
                    }

                    if ((result & PresentParserState.MoveOnNextElement) == PresentParserState.MoveOnNextElement)
                    {
                        arguments.MoveNext();
                    }
                }
                else if (valueMapper.CanReceiveValues)
                {
                    if (!valueMapper.MapValueItem(argument))
                    {
                        hadError = true;
                    }
                }
            }

            hadError |= !optionMap.EnforceRules();

            return !hadError;
        }
コード例 #10
0
        private bool DoParseArgumentsCore(string[] args, object options)
        {
            bool hadError = false;
            var optionMap = OptionInfo.CreateMap(options, _settings);
            optionMap.SetDefaults();
            var target = new TargetWrapper(options);

            IArgumentEnumerator arguments = new StringArrayEnumerator(args);
            while (arguments.MoveNext())
            {
                string argument = arguments.Current;
                if (!string.IsNullOrEmpty(argument))
                {
                    ArgumentParser parser = ArgumentParser.Create(argument, _settings.IgnoreUnknownArguments);
                    if (parser != null)
                    {
                        Internal.ParserState result = parser.Parse(arguments, optionMap, options);
                        if ((result & Internal.ParserState.Failure) == Internal.ParserState.Failure)
                        {
                            SetParserStateIfNeeded(options, parser.PostParsingState);
                            hadError = true;
                            continue;
                        }

                        if ((result & Internal.ParserState.MoveOnNextElement) == Internal.ParserState.MoveOnNextElement)
                            arguments.MoveNext();
                    }
                    else if (target.IsValueListDefined)
                    {
                        if (!target.AddValueItemIfAllowed(argument))
                        {
                            hadError = true;
                        }
                    }
                }
            }

            hadError |= !optionMap.EnforceRules();

            return !hadError;
        }