Ejemplo n.º 1
0
        public void Work_With_Letters()
        {
            // arrange
            var    builder = DefaultBuilder.CreateDefaultBuilder();
            var    root    = builder.Context.ParserRepository.Get("util");
            string value   = null;
            var    sut     = new SeparatedSwitch(root, 'v', "value", (o, s) => { value = s; })
            {
                Separator = ":"
            };
            var info = new IterationInfo("-v:a".Split(' '));

            // act
            // assert
            var canConsumeResult = sut.CanConsume("", info);

            canConsumeResult.ConsumingParameter.Should().BeSameAs(sut);
            canConsumeResult.NumConsumed.Should().Be(1);
            canConsumeResult.ParseExceptions.Should().BeEmpty();
            canConsumeResult.Info.Index.Should().Be(1);

            var consumeResult = sut.Consume("", new ConsumptionRequest(info));

            consumeResult.ConsumingParameter.Should().BeSameAs(sut);
            consumeResult.NumConsumed.Should().Be(1);
            consumeResult.ParseExceptions.Should().BeEmpty();
            consumeResult.Info.Index.Should().Be(1);
        }
Ejemplo n.º 2
0
        public void Consume_Everything_After_The_Separator_As_A_Single_Value0()
        {
            // arrange
            var    builder = DefaultBuilder.CreateDefaultBuilder();
            var    root    = builder.Context.ParserRepository.Get("util");
            string value   = null;
            var    sut     = new SeparatedSwitch(root, 'v', "value", (o, s) => { value = s; });

            // act
            var info = new IterationInfo("-v=a".Split(' '));
            var res  = sut.Consume("", new ConsumptionRequest(info));

            // assert
            res.ConsumingParameter.Should().BeSameAs(sut);
            value.Should().Be("a");
        }
Ejemplo n.º 3
0
        public void Return_No_Consumption_Result_If_Doesnt_Match()
        {
            // arrange
            var    builder = DefaultBuilder.CreateDefaultBuilder();
            var    root    = builder.Context.ParserRepository.Get("util");
            string value   = null;
            var    sut     = new SeparatedSwitch(root, 'v', "value", (o, s) => { value = s; })
            {
                Separator = ":"
            };
            var info = new IterationInfo("-x:a".Split(' '));

            // act
            // assert
            var res = sut.CanConsume("", info);

            res.ConsumingParameter.Should().Be(sut);
            res.NumConsumed.Should().Be(0);
            res.ParseExceptions.Should().BeEmpty();
        }
Ejemplo n.º 4
0
        public virtual void GenerateSeparatedSwitchSequence(SeparatedSwitch separated, IInlineSequence seq)
        {
            WritePrimary(seq, "[");
            if (separated.Letter.HasValue && separated.Word.IsNotNullOrWhiteSpace())
            {
                WriteSecondary(seq, $"{separated.LetterToken}{separated.Letter}");
                WritePrimary(seq, ", ");
                WriteSecondary(seq, $"{separated.WordToken}{separated.Word}");
            }
            else if (separated.Letter.HasValue)
            {
                WriteSecondary(seq, $"{separated.LetterToken}{separated.Letter}");
            }
            else if (separated.Word.IsNotNullOrWhiteSpace())
            {
                WriteSecondary(seq, $"{separated.WordToken}{separated.Word}");
            }

            WriteSecondary(seq, $":{GenerateValueAlias(separated)}");
            WritePrimary(seq, "]");
        }
Ejemplo n.º 5
0
        public void Generate_The_Correct_Output_For_A_Separated_Switch()
        {
            // arrange
            var mock = new Mock <IInlineSequence>();

            mock.SetupAllProperties();
            var builder   = DefaultBuilder.CreateDefaultBuilder();
            var parameter = new SeparatedSwitch(builder.Context.ParserRepository.Get("util"), 'v', "value",
                                                (o, s) => { });
            var vm    = new ParameterViewModel(parameter, Theme.Default);
            var usage = new ParameterUsage
            {
                ViewModel = vm
            };

            // act
            usage.GenerateSequence(mock.Object);

            // assert
            usage.StringBuilder.ToString().Should().Be("[-v, --value:v]");
        }