public void FlipsNegativeLookAheadToPositiveLookAhead() { // Arrange var foo = new List <RegexNode> { new CharacterNode('f'), new CharacterNode('o'), new CharacterNode('o') }; var lookaroundGroupNode = new LookaroundGroupNode(true, false, foo); var rootNode = new ConcatenationNode(lookaroundGroupNode); var target = new LookAroundMutator(); // Act var result = target.ApplyMutations(lookaroundGroupNode, rootNode).ToList(); // Assert var mutation = result.ShouldHaveSingleItem(); mutation.OriginalNode.ShouldBe(lookaroundGroupNode); mutation.ReplacementNode.ToString().ShouldBe("(?=foo)"); mutation.ReplacementPattern.ShouldBe("(?=foo)"); mutation.DisplayName.ShouldBe("Regex greedy quantifier quantity mutation"); mutation.Description.ShouldBe("Quantifier \"(?!foo)\" was replaced with \"(?=foo)\" at offset 0."); }
public void ToStringOnLookaroundGroupWithLookaheadFalseAndPossitiveFalseShouldReturnPossitiveLookahead() { // Arrange var target = new LookaroundGroupNode(false, false); // Act var result = target.ToString(); // Assert result.ShouldBe("(?<!)"); }
public void ToStringOnLookaroundGroupWithLookaheadTrueAndPossitiveTrueShouldReturnPossitiveLookahead() { // Arrange var target = new LookaroundGroupNode(true, true); // Act var result = target.ToString(); // Assert result.ShouldBe("(?=)"); }
public void ToStringOnLookaroundGroupChildNodeShouldReturnLookaroundWithChildNode() { // Arrange var childNode = new CharacterNode('a'); var target = new LookaroundGroupNode(true, true, childNode); // Act var result = target.ToString(); // Assert result.ShouldBe("(?=a)"); }
public void ToStringOnLookaroundGroupWithLookaheadTrueAndPossitiveTruedShouldReturnPossitiveLookahead() { // Arrange var childNodes = new List <RegexNode> { new CharacterNode('a'), new CharacterNode('b'), new CharacterNode('c') }; var target = new LookaroundGroupNode(true, true, childNodes); // Act var result = target.ToString(); // Assert result.ShouldBe("(?=abc)"); }
public void CopyingLookaroundGroupNodeShouldCopyLookaheadAndPossitive() { // Arrange var target = new LookaroundGroupNode(true, true); // Act // AddNode returns a copy of the current node. var result = target.AddNode(new CharacterNode('a')); // Assert LookaroundGroupNode lookaroundGroupNode = result.ShouldBeOfType <LookaroundGroupNode>(); lookaroundGroupNode.Lookahead.ShouldBe(target.Lookahead); lookaroundGroupNode.Possitive.ShouldBe(target.Possitive); }
public void ToStringOnLookaroundGroupNodeWithprefixShouldReturnPrefixBeforeLookaroundGroupNode() { // Arrange var comment = new CommentGroupNode("This is a comment."); var target = new LookaroundGroupNode(true, true) { Prefix = comment }; // Act var result = target.ToString(); // Assert result.ShouldBe("(?#This is a comment.)(?=)"); }
public void ChildNodesGetSpanShouldReturnTupleWithStartEqualToPreviousChildsStartPlusLengthStartingAt4IfLookaheadIsTrue() { // Arrange var childNodes = new List <RegexNode> { new CharacterNode('a'), new CharacterNode('b'), new CharacterNode('c') }; var target = new LookaroundGroupNode(true, false, childNodes); // Act var(Start, Length) = target.ChildNodes.First().GetSpan(); var(Start2, Length2) = target.ChildNodes.ElementAt(1).GetSpan(); var(Start3, _) = target.ChildNodes.ElementAt(2).GetSpan(); // Assert Start.ShouldBe(4); Start2.ShouldBe(Start + Length); Start3.ShouldBe(Start2 + Length2); }