public void ChildNodesGetSpanShouldReturnTupleWithStartEqualToPreviousChildsStartPlusLengthStartingAt3()
        {
            // Arrange
            var childNodes = new List <RegexNode> {
                new CharacterNode('a'), new CharacterNode('b'), new CharacterNode('c')
            };
            var target = new NonCaptureGroupNode(childNodes);

            // Act
            var(Start, Length)   = target.ChildNodes.First().GetSpan();
            var(Start2, Length2) = target.ChildNodes.ElementAt(1).GetSpan();
            var(Start3, _)       = target.ChildNodes.ElementAt(2).GetSpan();

            // Assert
            Start.ShouldBe(3);
            Start2.ShouldBe(Start + Length);
            Start3.ShouldBe(Start2 + Length2);
        }
예제 #2
0
        public void ChildNodesGetSpanShouldReturnTupleWithStartEqualToPreviousChildsStartPlusLengthStartingAt2()
        {
            // Arrange
            var thenBranch = new CharacterNode('t');
            var elseBranch = new CharacterNode('e');
            var alternates = new AlternationNode(new List <RegexNode> {
                thenBranch, elseBranch
            });
            var condition = new CaptureGroupNode(new CharacterNode('c'));
            var target    = new ConditionalGroupNode(condition, alternates);

            // Act
            var(Start, Length) = target.ChildNodes.First().GetSpan();
            var(Start2, _)     = target.ChildNodes.ElementAt(1).GetSpan();

            // Assert
            Start.ShouldBe(2);
            Start2.ShouldBe(Start + Length);
        }
예제 #3
0
        public void ChildNodesGetSpanShouldReturnTupleWithStartEqualToPreviousChildsStartPlusLengthStartingAtNameLengthPlus4()
        {
            // Arrange
            var name       = "name";
            var childNodes = new List <RegexNode> {
                new CharacterNode('a'), new CharacterNode('b'), new CharacterNode('c')
            };
            var target = new NamedGroupNode(name, false, childNodes);
            var start  = name.Length + 4;

            // Act
            var(Start, Length)   = target.ChildNodes.First().GetSpan();
            var(Start2, Length2) = target.ChildNodes.ElementAt(1).GetSpan();
            var(Start3, _)       = target.ChildNodes.ElementAt(2).GetSpan();

            // Assert
            Start.ShouldBe(start);
            Start2.ShouldBe(Start + Length);
            Start3.ShouldBe(Start2 + Length2);
        }
예제 #4
0
        public void ChildNodesGetSpanShouldReturnTupleWithStartEqualToPreviousChildsStartPlusLengthStartingAtModesLengthPlus3()
        {
            // Arrange
            var modes      = "imsnx-imsnx";
            var childNodes = new List <RegexNode> {
                new CharacterNode('a'), new CharacterNode('b'), new CharacterNode('c')
            };
            var target = new ModeModifierGroupNode(modes, childNodes);
            var start  = modes.Length + 3;

            // Act
            var(Start, Length)   = target.ChildNodes.First().GetSpan();
            var(Start2, Length2) = target.ChildNodes.ElementAt(1).GetSpan();
            var(Start3, _)       = target.ChildNodes.ElementAt(2).GetSpan();

            // Assert
            Start.ShouldBe(start);
            Start2.ShouldBe(Start + Length);
            Start3.ShouldBe(Start2 + Length2);
        }