public void ExtractTagsRanges_InputWithoutTags_ReturnsEmptyArray(string input)
        {
            var result = TagsHelper.ExtractTagsRanges(input);

            Assert.NotNull(result);
            Assert.Empty(result);
        }
        [InlineData("#tag& ending with some symbol", 0, 4)] // TODO: do we need to check all possible ending symbols
        public void ExtractTagsRanges_InputWithOneTag_ReturnsTagRange(string input, int tagPosition, int tagLength)
        {
            var textRange = new TextRange(tagPosition, tagLength);

            var result = TagsHelper.ExtractTagsRanges(input);

            Assert.Single(result);
            Assert.Equal(textRange.Position, result[0].Position);
            Assert.Equal(textRange.Length, result[0].Length);
        }
        public void ExtractTagsRanges_InputWithMultipleTags_ReturnsCorrectTagRange(string input, string textRangesResult)
        {
            var result = TagsHelper.ExtractTagsRanges(input);

            Assert.Equal(textRangesResult, result.GetResult());
        }
        public void ExtractTagsRanges_NullInput_ThrowsArgumentNullException()
        {
            string input = null;

            Assert.Throws <ArgumentNullException>(() => TagsHelper.ExtractTagsRanges(input));
        }