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."); }
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*?"); }
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); }
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); }
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.)?"); }
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); }
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); }