public void ShouldRemoveQuantifierPlus() { // Arrange var quantifierNode = new QuantifierPlusNode(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 \"+\" was removed at offset 4."); }
public void GetDescendantsShouldReturnAllDescendants() { // Arrange // a+bc* var charNodeA = new CharacterNode('a'); var charNodeB = new CharacterNode('b'); var charNodeC = new CharacterNode('c'); var quantifierPlus = new QuantifierPlusNode(charNodeA); var quantifierStar = new QuantifierStarNode(charNodeC); var grandchildren = new List <RegexNode> { quantifierPlus, charNodeB, quantifierStar }; var concatenationNode = new ConcatenationNode(grandchildren); var target = new TestRegexNode(concatenationNode); // Act IEnumerable <RegexNode> result = target.GetDescendantNodes(); // Assert result.Count().ShouldBe(6); result.First().ShouldBe(charNodeA); result.ElementAt(1).ShouldBe(quantifierPlus); result.ElementAt(2).ShouldBe(charNodeB); result.ElementAt(3).ShouldBe(charNodeC); result.ElementAt(4).ShouldBe(quantifierStar); result.Last().ShouldBe(concatenationNode); }
public void ToStringShouldReturnQuantifierPlusOnChildNodeToString() { // Arrange var characterNode = new CharacterNode('a'); var target = new QuantifierPlusNode(characterNode); // Act var result = target.ToString(); // Assert result.ShouldBe("a+"); }
public void SpanShouldStartAfterChildNodes() { // Arrange var childNode = new CharacterNode('a'); var target = new QuantifierPlusNode(childNode); // Act var(Start, Length) = target.GetSpan(); // Assert Start.ShouldBe(childNode.ToString().Length); Length.ShouldBe(1); }
public void ChildNodeShouldStartBeforeQuantifier() { // Arrange var target = new CharacterNode('a'); _ = new QuantifierPlusNode(target); // Act var(Start, Length) = target.GetSpan(); // Assert Start.ShouldBe(0); Length.ShouldBe(1); }
public void ToStringOnQuantifierWithPrefixShouldReturnPrefixBeforeOriginalQuantifierAndAfterQuantifiersChildNode() { // Arrange var comment = new CommentGroupNode("This is a comment."); var characterNode = new CharacterNode('a'); var target = new QuantifierPlusNode(characterNode) { 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 prefix = new CommentGroupNode("X"); var target = new QuantifierPlusNode(childNode) { Prefix = prefix }; // Act var(Start, Length) = target.GetSpan(); // Assert Start.ShouldBe(6); Length.ShouldBe(1); }
public void ChildNodeShouldStartBeforeQuantifiersPrefix() { // Arrange var target = new CharacterNode('a'); var prefix = new CommentGroupNode("X"); _ = new QuantifierPlusNode(target) { Prefix = prefix }; // Act var(Start, Length) = target.GetSpan(); // Assert Start.ShouldBe(0); Length.ShouldBe(1); }