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

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

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

            mutation.OriginalNode.ShouldBe(quantifierNode);
            mutation.ReplacementNode.ToString().ShouldBe("X");
            mutation.ReplacementPattern.ShouldBe("abcX");
            mutation.DisplayName.ShouldBe("Regex quantifier removal mutation");
            mutation.Description.ShouldBe("Quantifier \"{5}\" was removed at offset 4.");
        }
Ejemplo n.º 2
0
        public void ToStringShouldReturnQuantifierNOfIntegerNIfNoOriginalNIsGiven()
        {
            // Arrange
            var characterNode = new CharacterNode('a');
            var target        = new QuantifierNNode(5, characterNode);

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

            // Assert
            result.ShouldBe("a{5}");
        }
Ejemplo n.º 3
0
        public void ToStringShouldReturnOriginalQuantifierNOnChildNodeToString()
        {
            // Arrange
            var characterNode = new CharacterNode('a');
            var target        = new QuantifierNNode("05", characterNode);

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

            // Assert
            result.ShouldBe("a{05}");
        }
Ejemplo n.º 4
0
        public void SpanShouldStartAfterChildNodes()
        {
            // Arrange
            var childNode = new CharacterNode('a');
            var target    = new QuantifierNNode(5, childNode);

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

            // Assert
            Start.ShouldBe(childNode.ToString().Length);
            Length.ShouldBe(3);
        }
Ejemplo n.º 5
0
        public void ChildNodeShouldStartBeforeQuantifier()
        {
            // Arrange
            var target = new CharacterNode('a');

            _ = new QuantifierNNode(5, target);

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

            // Assert
            Start.ShouldBe(0);
            Length.ShouldBe(1);
        }
Ejemplo n.º 6
0
        public void ToStringOnQuantifierWithPrefixShouldReturnPrefixBeforeOriginalQuantifierAndAfterQuantifiersChildNode()
        {
            // Arrange
            var comment       = new CommentGroupNode("This is a comment.");
            var characterNode = new CharacterNode('a');
            var target        = new QuantifierNNode("05", characterNode)
            {
                Prefix = comment
            };

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

            // Assert
            result.ShouldBe("a(?#This is a comment.){05}");
        }
Ejemplo n.º 7
0
        public void CopyingQuantifierNNodeShouldCopyOriginalNAndN()
        {
            // Arrange
            var childNode = new CharacterNode('a');
            var target    = new QuantifierNNode("5", childNode);

            // Act
            // ReplaceNode returns a copy of the current node.
            var result = target.ReplaceNode(childNode, new CharacterNode('b'));

            // Assert
            QuantifierNNode quantifierNNode = result.ShouldBeOfType <QuantifierNNode>();

            quantifierNNode.OriginalN.ShouldBe(target.OriginalN);
            quantifierNNode.N.ShouldBe(target.N);
        }
Ejemplo n.º 8
0
        public void SpanShouldStartAfterPrefix()
        {
            // Arrange
            var childNode = new CharacterNode('a');
            var prefix    = new CommentGroupNode("X");
            var target    = new QuantifierNNode(5, childNode)
            {
                Prefix = prefix
            };

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

            // Assert
            Start.ShouldBe(6);
            Length.ShouldBe(3);
        }
Ejemplo n.º 9
0
        public void ChildNodeShouldStartBeforeQuantifiersPrefix()
        {
            // Arrange
            var target = new CharacterNode('a');
            var prefix = new CommentGroupNode("X");

            _ = new QuantifierNNode(5, target)
            {
                Prefix = prefix
            };

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

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