public void ToStringShouldReturnConcatenationOfChildNodesToStringSeperatedByPipes() { // Arrange var childNodes = new List <RegexNode> { new CharacterNode('a'), new CharacterNode('b'), new CharacterNode('c') }; var target = new AlternationNode(childNodes); // Act var result = target.ToString(); // Assert result.ShouldBe("a|b|c"); }
public void SpanLengthShouldBeEqualToToStringLength() { // Arrange var childNodes = new List <RegexNode> { new CharacterNode('a'), new CharacterNode('b'), new CharacterNode('c') }; var target = new AlternationNode(childNodes); // Act var(_, Length) = target.GetSpan(); // Assert Length.ShouldBe(5); }
public void AlternatesShouldReturnOriginalAlternates() { // Arrange var thenBranch = new CharacterNode('t'); var elseBranch = new CharacterNode('e'); var alternates = new AlternationNode(new List <RegexNode> { thenBranch, elseBranch }); var condition = new CaptureGroupNode(new CharacterNode('c')); var target = new ConditionalGroupNode(condition, alternates); // Act var result = target.Alternates; // Assert result.ShouldBe(alternates); }
public void AlternatesGetSpanShouldReturnTupleWithStartEqualToConditionLengthPlus2() { // Arrange var thenBranch = new CharacterNode('t'); var elseBranch = new CharacterNode('e'); var alternates = new AlternationNode(new List <RegexNode> { thenBranch, elseBranch }); var condition = new CaptureGroupNode(new CharacterNode('c')); var target = new ConditionalGroupNode(condition, alternates); // Act var(Start, _) = target.Alternates.GetSpan(); // Assert Start.ShouldBe(condition.ToString().Length + 2); }
public void ToStringShouldReturnConditionalGroupWithConditionAndThenAndElseAlternates() { // Arrange var thenBranch = new CharacterNode('t'); var elseBranch = new CharacterNode('e'); var alternates = new AlternationNode(new List <RegexNode> { thenBranch, elseBranch }); var condition = new CaptureGroupNode(new CharacterNode('c')); var target = new ConditionalGroupNode(condition, alternates); // Act var result = target.ToString(); // Assert result.ShouldBe("(?(c)t|e)", result); }
public void FirstAlternateSpanShouldStartBe0() { // Arrange var firstChild = new CharacterNode('a'); var secondChild = new CharacterNode('b'); var thirdChild = new CharacterNode('c'); var childNodes = new List <RegexNode> { firstChild, secondChild, thirdChild }; _ = new AlternationNode(childNodes); // Act var(Start, Length) = firstChild.GetSpan(); // Assert Start.ShouldBe(0); Length.ShouldBe(1); }
public void ChildNodesGetSpanShouldReturnTupleWithStartEqualToPreviousChildsStartPlusLengthStartingAt2() { // Arrange var thenBranch = new CharacterNode('t'); var elseBranch = new CharacterNode('e'); var alternates = new AlternationNode(new List <RegexNode> { thenBranch, elseBranch }); var condition = new CaptureGroupNode(new CharacterNode('c')); var target = new ConditionalGroupNode(condition, alternates); // Act var(Start, Length) = target.ChildNodes.First().GetSpan(); var(Start2, _) = target.ChildNodes.ElementAt(1).GetSpan(); // Assert Start.ShouldBe(2); Start2.ShouldBe(Start + Length); }
public void ToStringOnConditionalGroupNodeWithprefixShouldReturnPrefixBeforeConditionalGroupNode() { // Arrange var comment = new CommentGroupNode("This is a comment."); var thenBranch = new CharacterNode('t'); var elseBranch = new CharacterNode('e'); var alternates = new AlternationNode(new List <RegexNode> { thenBranch, elseBranch }); var condition = new CaptureGroupNode(new CharacterNode('c')); var target = new ConditionalGroupNode(condition, alternates) { Prefix = comment }; // Act var result = target.ToString(); // Assert result.ShouldBe("(?#This is a comment.)(?(c)t|e)"); }
public void NonFirstAlternateSpanShouldStartAfterPreviousAlternateAndPipe() { // Arrange var firstChild = new CharacterNode('a'); var secondChild = new CharacterNode('b'); var thirdChild = new CharacterNode('c'); var childNodes = new List <RegexNode> { firstChild, secondChild, thirdChild }; _ = new AlternationNode(childNodes); // Act var(secondChildStart, secondChildLength) = secondChild.GetSpan(); var(thirdChildStart, thirdChildLength) = thirdChild.GetSpan(); // Assert secondChildStart.ShouldBe(2); secondChildLength.ShouldBe(1); thirdChildStart.ShouldBe(4); thirdChildLength.ShouldBe(1); }