public void ShouldRemoveLazyQuantifier()
        {
            // Arrange
            var quantifierNode = new QuantifierStarNode(new CharacterNode('X'));
            var lazyNode       = new LazyNode(quantifierNode);
            var childNodes     = new List <RegexNode>
            {
                new CharacterNode('a'),
                new CharacterNode('b'),
                new CharacterNode('c'),
                lazyNode
            };
            var rootNode = new ConcatenationNode(childNodes);
            var target   = new QuantifierRemovalMutator();

            // Act
            var result = target.ApplyMutations(quantifierNode, rootNode);

            // Assert
            var mutation = result.ShouldHaveSingleItem();

            mutation.OriginalNode.ShouldBe(lazyNode);
            mutation.ReplacementNode.ToString().ShouldBe("X");
            mutation.ReplacementPattern.ShouldBe("abcX");
            mutation.DisplayName.ShouldBe("Regex quantifier removal mutation");
            mutation.Description.ShouldBe("Quantifier \"*?\" was removed at offset 4.");
        }
Exemplo n.º 2
0
        public void ToStringShouldAppendQuestionMarkToChildToString()
        {
            // Arrange
            var characterNode  = new CharacterNode('a');
            var quantifierNode = new QuantifierStarNode(characterNode);
            var target         = new LazyNode(quantifierNode);

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

            // Assert
            result.ShouldBe("a*?");
        }
Exemplo n.º 3
0
        public void SpanShouldStartAfterQuantifier()
        {
            // Arrange
            var childNode  = new CharacterNode('a');
            var quantifier = new QuantifierStarNode(childNode);
            var target     = new LazyNode(quantifier);

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

            // Assert
            Start.ShouldBe(2);
            Length.ShouldBe(1);
        }
Exemplo n.º 4
0
        public void QuantifierShouldStartBeforeLazyToken()
        {
            // Arrange
            var childNode = new CharacterNode('a');
            var target    = new QuantifierStarNode(childNode);

            _ = new LazyNode(target);

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

            // Assert
            Start.ShouldBe(1);
            Length.ShouldBe(1);
        }
Exemplo n.º 5
0
        public void ToStringOnLazyNodeWithPrefixShouldReturnPrefixBeforeLazyNodeAndAfterQuantifier()
        {
            // Arrange
            var comment        = new CommentGroupNode("This is a comment.");
            var characterNode  = new CharacterNode('a');
            var quantifierNode = new QuantifierStarNode(characterNode);
            var target         = new LazyNode(quantifierNode)
            {
                Prefix = comment
            };

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

            // Assert
            result.ShouldBe("a*(?#This is a comment.)?");
        }
Exemplo n.º 6
0
        public void SpanShouldStartAfterPrefix()
        {
            // Arrange
            var childNode  = new CharacterNode('a');
            var quantifier = new QuantifierStarNode(childNode);
            var prefix     = new CommentGroupNode("X");
            var target     = new LazyNode(quantifier)
            {
                Prefix = prefix
            };

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

            // Assert
            Start.ShouldBe(7);
            Length.ShouldBe(1);
        }
Exemplo n.º 7
0
        public void QuantifierShouldStartBeforeLazyTokensPrefix()
        {
            // Arrange
            var childNode = new CharacterNode('a');
            var target    = new QuantifierStarNode(childNode);
            var prefix    = new CommentGroupNode("X");

            _ = new LazyNode(target)
            {
                Prefix = prefix
            };

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

            // Assert
            Start.ShouldBe(1);
            Length.ShouldBe(1);
        }