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.)");
        }
Пример #7
0
        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);
        }