Ejemplo n.º 1
0
        public void ToStringShouldReturnConcatenationOfChildNodesToStringSeperatedByPipes()
        {
            // Arrange
            var childNodes = new List <RegexNode> {
                new CharacterNode('a'), new CharacterNode('b'), new CharacterNode('c')
            };
            var target = new AlternationNode(childNodes);

            // Act
            var result = target.ToString();

            // Assert
            result.ShouldBe("a|b|c");
        }
Ejemplo n.º 2
0
        public void SpanLengthShouldBeEqualToToStringLength()
        {
            // Arrange
            var childNodes = new List <RegexNode> {
                new CharacterNode('a'), new CharacterNode('b'), new CharacterNode('c')
            };
            var target = new AlternationNode(childNodes);

            // Act
            var(_, Length) = target.GetSpan();

            // Assert
            Length.ShouldBe(5);
        }
Ejemplo n.º 3
0
        public void AlternatesShouldReturnOriginalAlternates()
        {
            // 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 result = target.Alternates;

            // Assert
            result.ShouldBe(alternates);
        }
Ejemplo n.º 4
0
        public void AlternatesGetSpanShouldReturnTupleWithStartEqualToConditionLengthPlus2()
        {
            // 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, _) = target.Alternates.GetSpan();

            // Assert
            Start.ShouldBe(condition.ToString().Length + 2);
        }
Ejemplo n.º 5
0
        public void ToStringShouldReturnConditionalGroupWithConditionAndThenAndElseAlternates()
        {
            // 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 result = target.ToString();

            // Assert
            result.ShouldBe("(?(c)t|e)", result);
        }
Ejemplo n.º 6
0
        public void FirstAlternateSpanShouldStartBe0()
        {
            // Arrange
            var firstChild  = new CharacterNode('a');
            var secondChild = new CharacterNode('b');
            var thirdChild  = new CharacterNode('c');
            var childNodes  = new List <RegexNode> {
                firstChild, secondChild, thirdChild
            };

            _ = new AlternationNode(childNodes);

            // Act
            var(Start, Length) = firstChild.GetSpan();

            // Assert
            Start.ShouldBe(0);
            Length.ShouldBe(1);
        }
Ejemplo n.º 7
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);
        }
Ejemplo n.º 8
0
        public void ToStringOnConditionalGroupNodeWithprefixShouldReturnPrefixBeforeConditionalGroupNode()
        {
            // Arrange
            var comment    = new CommentGroupNode("This is a comment.");
            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)
            {
                Prefix = comment
            };

            // Act
            var result = target.ToString();

            // Assert
            result.ShouldBe("(?#This is a comment.)(?(c)t|e)");
        }
Ejemplo n.º 9
0
        public void NonFirstAlternateSpanShouldStartAfterPreviousAlternateAndPipe()
        {
            // Arrange
            var firstChild  = new CharacterNode('a');
            var secondChild = new CharacterNode('b');
            var thirdChild  = new CharacterNode('c');
            var childNodes  = new List <RegexNode> {
                firstChild, secondChild, thirdChild
            };

            _ = new AlternationNode(childNodes);

            // Act
            var(secondChildStart, secondChildLength) = secondChild.GetSpan();
            var(thirdChildStart, thirdChildLength)   = thirdChild.GetSpan();

            // Assert
            secondChildStart.ShouldBe(2);
            secondChildLength.ShouldBe(1);
            thirdChildStart.ShouldBe(4);
            thirdChildLength.ShouldBe(1);
        }