diff --git a/ICD.Common.Utils.Tests/Extensions/EnumerableExtensionsTest.cs b/ICD.Common.Utils.Tests/Extensions/EnumerableExtensionsTest.cs index 88ffe0d..70139af 100644 --- a/ICD.Common.Utils.Tests/Extensions/EnumerableExtensionsTest.cs +++ b/ICD.Common.Utils.Tests/Extensions/EnumerableExtensionsTest.cs @@ -267,6 +267,23 @@ namespace ICD.Common.Utils.Tests.Extensions Assert.AreEqual(6, values[5]); } + [Test] + public void PadRightTest() + { + int[] items = new[] {1, 2, 3}.PadRight(5).ToArray(); + + Assert.AreEqual(5, items.Length); + Assert.AreEqual(1, items[0]); + Assert.AreEqual(2, items[1]); + Assert.AreEqual(3, items[2]); + Assert.AreEqual(0, items[3]); + Assert.AreEqual(0, items[4]); + + items = items.PadRight(2).ToArray(); + + Assert.AreEqual(5, items.Length); + } + [Test] public void OrderTest() { diff --git a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs index c9fcadb..d28fe0a 100644 --- a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs +++ b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs @@ -472,6 +472,31 @@ namespace ICD.Common.Utils.Extensions yield return item; } + /// + /// Pads the given sequence to the given count size with default items. + /// + /// + /// + /// + /// + [PublicAPI] + public static IEnumerable PadRight(this IEnumerable extends, int count) + { + if (extends == null) + throw new ArgumentNullException("extends"); + + int index = 0; + + foreach (T item in extends) + { + yield return item; + index++; + } + + for (; index < count; index++) + yield return default(T); + } + /// /// Default ordering for the items in the sequence. ///