public void AlternatesShouldReturnNullIfNoAlternates() { // Arrange var condition = new CaptureGroupNode(new CharacterNode('c')); var target = new ConditionalGroupNode(condition); // Act var result = target.Alternates; // Assert result.ShouldBeNull();; }
public void ToStringOnConditionalWithoutAlternatesShouldReturnConditionalGroupWithOnlyCondition() { // Arrange var condition = new CaptureGroupNode(new CharacterNode('c')); var target = new ConditionalGroupNode(condition); // Act var result = target.ToString(); // Assert result.ShouldBe("(?(c))", result); }
public void ToStringOnConditionalWithConcatenationAsAlternatesShouldReturnConditionalGroupWithConditionAndOnlyThenAlternate() { // Arrange var thenBranchChildNodes = new List <RegexNode> { new CharacterNode('t'), new CharacterNode('h'), new CharacterNode('e'), new CharacterNode('n') }; var alternates = new ConcatenationNode(thenBranchChildNodes); var condition = new CaptureGroupNode(new CharacterNode('c')); var target = new ConditionalGroupNode(condition, alternates); // Act var result = target.ToString(); // Assert result.ShouldBe("(?(c)then)", result); }
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 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)"); }