示例#1
0
        public void AlternatesShouldReturnNullIfNoAlternates()
        {
            // Arrange
            var condition = new CaptureGroupNode(new CharacterNode('c'));
            var target    = new ConditionalGroupNode(condition);

            // Act
            var result = target.Alternates;

            // Assert
            result.ShouldBeNull();;
        }
示例#2
0
        public void ToStringOnConditionalWithoutAlternatesShouldReturnConditionalGroupWithOnlyCondition()
        {
            // Arrange
            var condition = new CaptureGroupNode(new CharacterNode('c'));
            var target    = new ConditionalGroupNode(condition);

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

            // Assert
            result.ShouldBe("(?(c))", result);
        }
示例#3
0
        public void ToStringOnConditionalWithConcatenationAsAlternatesShouldReturnConditionalGroupWithConditionAndOnlyThenAlternate()
        {
            // Arrange
            var thenBranchChildNodes = new List <RegexNode> {
                new CharacterNode('t'), new CharacterNode('h'), new CharacterNode('e'), new CharacterNode('n')
            };
            var alternates = new ConcatenationNode(thenBranchChildNodes);
            var condition  = new CaptureGroupNode(new CharacterNode('c'));
            var target     = new ConditionalGroupNode(condition, alternates);

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

            // Assert
            result.ShouldBe("(?(c)then)", result);
        }
示例#4
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);
        }
示例#5
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);
        }
示例#6
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);
        }
示例#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);
        }
示例#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)");
        }