using System; using System.Collections.Generic; using Xunit; namespace Jellyfin.Extensions.Tests { public static class CopyToExtensionsTests { public static TheoryData, IList, int, IList> CopyTo_Valid_Correct_TestData() { var data = new TheoryData, IList, int, IList> { { new[] { 0, 1, 2, 3, 4, 5 }, new[] { 0, 0, 0, 0, 0, 0 }, 0, new[] { 0, 1, 2, 3, 4, 5 } }, { new[] { 0, 1, 2 }, new[] { 5, 4, 3, 2, 1, 0 }, 2, new[] { 5, 4, 0, 1, 2, 0 } } }; return data; } [Theory] [MemberData(nameof(CopyTo_Valid_Correct_TestData))] public static void CopyTo_Valid_Correct(IReadOnlyList source, IList destination, int index, IList expected) { source.CopyTo(destination, index); Assert.Equal(expected, destination); } public static TheoryData, IList, int> CopyTo_Invalid_ThrowsArgumentOutOfRangeException_TestData() { var data = new TheoryData, IList, int> { { new[] { 0, 1, 2, 3, 4, 5 }, new[] { 0, 0, 0, 0, 0, 0 }, -1 }, { new[] { 0, 1, 2 }, new[] { 5, 4, 3, 2, 1, 0 }, 6 }, { new[] { 0, 1, 2 }, Array.Empty(), 0 }, { new[] { 0, 1, 2, 3, 4, 5 }, new[] { 0 }, 0 }, { new[] { 0, 1, 2, 3, 4, 5 }, new[] { 0, 0, 0, 0, 0, 0 }, 1 } }; return data; } [Theory] [MemberData(nameof(CopyTo_Invalid_ThrowsArgumentOutOfRangeException_TestData))] public static void CopyTo_Invalid_ThrowsArgumentOutOfRangeException(IReadOnlyList source, IList destination, int index) { Assert.Throws(() => source.CopyTo(destination, index)); } } }