소스 검색

Add test for ReadOnlySpan.Count extension

Bond_009 4 년 전
부모
커밋
5fb72951a0

+ 1 - 1
Emby.Server.Implementations/Data/SqliteItemRepository.cs

@@ -1048,7 +1048,7 @@ namespace Emby.Server.Implementations.Data
 
             // TODO The following is an ugly performance optimization, but it's extremely unlikely that the data in the database would be malformed
             var valueSpan = value.AsSpan();
-            var count = valueSpan.CountOccurrences('|') + 1;
+            var count = valueSpan.Count('|') + 1;
 
             var position = 0;
             var result = new ItemImageInfo[count];

+ 1 - 2
MediaBrowser.Controller/Extensions/StringExtensions.cs

@@ -1,7 +1,6 @@
 #pragma warning disable CS1591
 
 using System;
-using System.Collections.Generic;
 using System.Globalization;
 using System.Linq;
 using System.Text;
@@ -28,7 +27,7 @@ namespace MediaBrowser.Controller.Extensions
         /// <param name="value">The haystack to search in.</param>
         /// <param name="needle">The character to search for.</param>
         /// <returns>The number of occurrences of the [needle] character.</returns>
-        public static int CountOccurrences(this ReadOnlySpan<char> value, char needle)
+        public static int Count(this ReadOnlySpan<char> value, char needle)
         {
             var count = 0;
             var length = value.Length;

+ 19 - 0
tests/Jellyfin.Controller.Tests/Extensions/StringExtensionsTests.cs

@@ -0,0 +1,19 @@
+using System;
+using MediaBrowser.Controller.Extensions;
+using Xunit;
+
+namespace Jellyfin.Controller.Extensions.Tests
+{
+    public class StringExtensionsTests
+    {
+        [Theory]
+        [InlineData("", '_', 0)]
+        [InlineData("___", '_', 3)]
+        [InlineData("test\x00", '\x00', 1)]
+        [InlineData("Imdb=tt0119567|Tmdb=330|TmdbCollection=328", '|', 2)]
+        public void ReadOnlySpan_Count_Success(string str, char needle, int count)
+        {
+            Assert.Equal(count, str.AsSpan().Count(needle));
+        }
+    }
+}