浏览代码

Merge pull request #5112 from jellyfin/shuffle

Add test for ShuffleExtensions
dkanada 4 年之前
父节点
当前提交
793ae6f7a6

+ 1 - 2
MediaBrowser.Common/Extensions/ShuffleExtensions.cs

@@ -33,8 +33,7 @@ namespace MediaBrowser.Common.Extensions
             int n = list.Count;
             while (n > 1)
             {
-                n--;
-                int k = rng.Next(n + 1);
+                int k = rng.Next(n--);
                 T value = list[k];
                 list[k] = list[n];
                 list[n] = value;

+ 22 - 0
tests/Jellyfin.Common.Tests/Extensions/ShuffleExtensionsTests.cs

@@ -0,0 +1,22 @@
+using System;
+using MediaBrowser.Common.Extensions;
+using Xunit;
+
+namespace Jellyfin.Common.Tests.Extensions
+{
+    public static class ShuffleExtensionsTests
+    {
+        private static readonly Random _rng = new Random();
+
+        [Fact]
+        public static void Shuffle_Valid_Correct()
+        {
+            byte[] original = new byte[1 << 6];
+            _rng.NextBytes(original);
+            byte[] shuffled = (byte[])original.Clone();
+            shuffled.Shuffle();
+
+            Assert.NotEqual(original, shuffled);
+        }
+    }
+}