public void Consume_Using_Only_The_First_Parameter_That_Can_Consume()
        {
            // arrange
            var parser = new Parser("base");
            var info   = new IterationInfo("a b c".Split(' '));

            var mock0 = new Mock <Parameter>();

            mock0.SetupAllProperties();
            mock0.Setup(p => p.CanConsume(It.IsAny <object>(), It.IsAny <IterationInfo>())).Returns(new
                                                                                                    ConsumptionResult(info.Consume(1), 1, mock0.Object));
            mock0.Setup(p => p.Consume(It.IsAny <object>(), It.IsAny <ConsumptionRequest>()))
            .Returns(new ConsumptionResult(info.Consume(1), 1, mock0.Object));
            parser.AddParameter(mock0.Object);

            var mock1 = new Mock <Parameter>();

            mock1.SetupAllProperties();
            mock1.Setup(p => p.CanConsume(It.IsAny <object>(), It.IsAny <IterationInfo>()))
            .Returns(new ConsumptionResult(info.Consume(1), 1, mock1.Object));
            mock1.Setup(p => p.Consume(It.IsAny <object>(), It.IsAny <ConsumptionRequest>()))
            .Returns(new ConsumptionResult(info.Consume(1), 1, mock1.Object));
            parser.AddParameter(mock1.Object);

            // act
            // assert
            parser.Consume("", new ConsumptionRequest(info));
            mock0.Verify(p => p.Consume(It.IsAny <object>(), It.IsAny <ConsumptionRequest>()), Times.Once);
            mock1.Verify(p => p.Consume(It.IsAny <object>(), It.IsAny <ConsumptionRequest>()), Times.Never);
        }
        public void NonPresentNoValueParameterShouldBeFalse()
        {
            var args   = new string[] { "--stuff", "and", "--things" };
            var parser = new Parser();

            parser.AddParameter("stuff", null, true);
            parser.AddParameter("things");
            parser.AddParameter("this-should-be-false");

            var dict = parser.Parse(args);

            Assert.IsFalse((bool)dict["this-should-be-false"]);
        }
        public void ShouldFailIfArgumentHasNoValue()
        {
            var args   = new string[] { "--arg-with-no-value" };
            var parser = new Parser();

            parser.AddParameter("arg-with-no-value", "n", true);
            parser.Parse(args);
        }
        public void ShouldFailIfRequiredArgumentHasNoValue()
        {
            var args = new string[] { "--not-required" };

            var parser = new Parser();

            parser.AddParameter("required", "r", true, true);

            parser.Parse(args);
        }
        public void ShouldFailWhenParameterIsValue()
        {
            var args = new string[] { "--arg1", "-b", "bleh", "--arg3" };

            var parser = new Parser();

            parser.AddParameter("arg1", "a", true);

            parser.Parse(args);
        }
        public void ShouldParseValidQuery()
        {
            var args = new string[] { "--arg1", "blah", "this is a random value", "-b", "bleh", "bleh", "--arg3" };

            var parser = new Parser();

            parser.AddOrderedValue("randovalue");
            parser.AddOrderedValue("anotherrandovalue");
            parser.AddParameter("arg1", "a", true);
            parser.AddParameter("arg2", "b", true);
            parser.AddParameter("arg3", "c", false);

            var dict = parser.Parse(args);

            foreach (var kvp in dict)
            {
                Console.WriteLine(kvp.Key + ": " + kvp.Value);
            }
        }
Exemple #7
0
 /// <summary>
 ///     Adds the parameter
 /// </summary>
 /// <param name="parameter">The parameter.</param>
 /// <param name="helpSetupCallback">The help setup callback.</param>
 protected void AddParameterInternal(Parameter parameter, Action <ParameterHelpBuilder> helpSetupCallback = null)
 {
     Parser.AddParameter(parameter);
     if (helpSetupCallback != null)
     {
         var builder = new ParameterHelpBuilder(parameter);
         helpSetupCallback(builder);
         parameter.Help = builder.Build();
     }
     OnParameterCreated(parameter);
 }
        public void Indicate_It_Can_Consume_When_One_Of_Its_Parameters_Can_Consume()
        {
            // arrange
            var parser = new Parser("base");
            var info   = new IterationInfo("a b c".Split(' '));
            var mock   = new Mock <Parameter>();

            mock.Setup(p => p.CanConsume(It.IsAny <object>(), info))
            .Returns(new ConsumptionResult(info.Consume(1), 1, mock.Object));
            parser.AddParameter(mock.Object);

            // act
            // assert
            parser.CanConsume(new object(), info).NumConsumed.Should().Be(1);
        }
        public void Reset_All_Parameters_When_Reset()
        {
            // arrange
            var mock = new Mock <Parameter>();

            mock.SetupAllProperties();
            mock.Object.HasBeenConsumed = true;
            mock.CallBase = true;
            var parser = new Parser("a");

            parser.AddParameter(mock.Object);

            // act
            parser.Reset();

            // assert
            mock.Object.HasBeenConsumed.Should().BeFalse();
        }