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); }
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"); }
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(); }
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, "]"); }
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]"); }