public void SpanOnCommentGroupShouldStartAfter() { // Arrange var comment = new CommentGroupNode("This is a comment."); var a = new CharacterNode('a'); var b = new CharacterNode('b') { Prefix = comment }; var concat = new ConcatenationNode(new List <RegexNode> { a, b }); // Act var(commentStart, commentLength) = comment.GetSpan(); var(aStart, aLength) = a.GetSpan(); var(bStart, bLength) = b.GetSpan(); var(concatStart, concatLength) = concat.GetSpan(); // Assert concatStart.ShouldBe(0); concatLength.ShouldBe(a.ToString().Length + b.ToString().Length); aStart.ShouldBe(0); aLength.ShouldBe(1); commentStart.ShouldBe(1); commentLength.ShouldBe(comment.ToString().Length); bStart.ShouldBe(commentStart + commentLength); bLength.ShouldBe(1); }
public void ToStringOnEmptyCommentGroupShouldReturnQuestionMarkHashtagBetweenParentheses() { // Arrange var target = new CommentGroupNode(); // Act var result = target.ToString(); // Assert result.ShouldBe("(?#)"); }
public void GetSpanShouldReturnTupleWithStartEqualToPrefixLengthAndLengthEqualToToStringLength() { // Arrange var target = new CommentGroupNode("This is a comment."); // Act var(Start, Length) = target.GetSpan(); // Assert Start.ShouldBe(0); Length.ShouldBe(target.ToString().Length); }
public void ToStringShouldReturnQuestionMarkHashtagCommentBetweenParentheses() { // Arrange var comment = "This is a comment."; var target = new CommentGroupNode(comment); // Act var result = target.ToString(); // Assert result.ShouldBe($"(?#{comment})"); }
public void SpanLengthOfConcatenationNodeShouldNotIncludeItsOwnPrefix() { // Arrange var prefix = new CommentGroupNode("Comment"); var target = new ConcatenationNode() { Prefix = prefix }; // Act var(_, Length) = target.GetSpan(); // Assert Length.ShouldBe(target.ToString().Length - prefix.ToString().Length); }
public void ToStringOnCommentGroupWithprefixShouldReturnPrefixBeforeCommentGroup() { // Arrange var comment = new CommentGroupNode("This is a comment."); var target = new CommentGroupNode("This is the target.") { Prefix = comment }; // Act var result = target.ToString(); // Assert result.ShouldBe("(?#This is a comment.)(?#This is the target.)"); }
public void GetSpanShouldReturnTupleWithStartEqualToPrefixLengthAndEqualToToStringLengthMinusPrefixLength() { // Arrange var commentGroup = new CommentGroupNode("X"); var target = new TestRegexNode() { Prefix = commentGroup }; var prefixLength = commentGroup.ToString().Length; var targetLength = target.ToString().Length; // Act var(Start, Length) = target.GetSpan(); // Assert Start.ShouldBe(prefixLength); Length.ShouldBe(targetLength - prefixLength); }
public void GetSpanOnNestedCommentGroupShouldReturnTupleWithStartEqualToPrefixLengthAndLengthEqualToToStringLentgthMinusPrefixLength() { // Arrange var firstComment = new CommentGroupNode("This is the first comment."); var target = new CommentGroupNode("This is the second comment.") { Prefix = firstComment }; _ = new CharacterNode('a') { Prefix = target }; // Act var(firstCommentStart, firstCommentLength) = firstComment.GetSpan(); var(secondCommentStart, secondCommentLength) = target.GetSpan(); // Assert firstCommentStart.ShouldBe(0); firstCommentLength.ShouldBe(firstComment.ToString().Length); secondCommentStart.ShouldBe(firstCommentStart + firstCommentLength); secondCommentLength.ShouldBe(target.ToString().Length - target.Prefix.ToString().Length); }