mirror of
https://github.com/oliverbooth/X10D
synced 2024-11-23 00:58:48 +00:00
Add Array.Fill
This commit is contained in:
parent
e183c31579
commit
85becd2415
@ -15,8 +15,7 @@ public class ArrayTests
|
||||
args.Clear();
|
||||
|
||||
int[] comparison = Enumerable.Repeat(0, args.Length).ToArray();
|
||||
CollectionAssert.AreEqual(args, comparison, $"{string.Join(", ", args)} is not equal to" +
|
||||
$"{string.Join(", ", comparison)}. ");
|
||||
CollectionAssert.AreEqual(args, comparison);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@ -25,4 +24,24 @@ public class ArrayTests
|
||||
int[]? array = null;
|
||||
Assert.ThrowsException<ArgumentNullException>(array!.Clear);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow]
|
||||
[DataRow(1)]
|
||||
[DataRow(1, 2, 3)]
|
||||
[DataRow(1, 2, 3, 4, 5)]
|
||||
public void Fill(params int[] args)
|
||||
{
|
||||
args.Fill(1);
|
||||
|
||||
int[] comparison = Enumerable.Repeat(1, args.Length).ToArray();
|
||||
CollectionAssert.AreEqual(args, comparison);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void FillNull()
|
||||
{
|
||||
int[]? array = null;
|
||||
Assert.ThrowsException<ArgumentNullException>(() => array!.Fill(0));
|
||||
}
|
||||
}
|
||||
|
@ -86,4 +86,51 @@ public static class ArrayExtensions
|
||||
|
||||
Array.Clear(array, index, length);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Assigns the given value to each element of the array.
|
||||
/// </summary>
|
||||
/// <param name="array">The array to be filled.</param>
|
||||
/// <param name="value">The value to assign to each array element.</param>
|
||||
/// <typeparam name="T">The type of the elements in the array.</typeparam>
|
||||
/// <exception cref="ArgumentNullException"><paramref name="array" /> is <see langword="null" />.</exception>
|
||||
public static void Fill<T>(this T?[] array, T value)
|
||||
{
|
||||
if (array is null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(array));
|
||||
}
|
||||
|
||||
if (array.Length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Array.Fill(array, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Assigns the given value to the elements of the array which are within the range of <paramref name="startIndex" />
|
||||
/// (inclusive) and the next <paramref name="count" /> number of indices.
|
||||
/// </summary>
|
||||
/// <param name="array">The array to be filled.</param>
|
||||
/// <param name="value">The value to assign to each array element.</param>
|
||||
/// <param name="startIndex">A 32-bit integer that represents the index in the array at which filling begins.</param>
|
||||
/// <param name="count">The number of elements to fill.</param>
|
||||
/// <typeparam name="T">The type of the elements in the array.</typeparam>
|
||||
/// <exception cref="ArgumentNullException"><paramref name="array" /> is <see langword="null" />.</exception>
|
||||
public static void Fill<T>(this T?[] array, T value, int startIndex, int count)
|
||||
{
|
||||
if (array is null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(array));
|
||||
}
|
||||
|
||||
if (count == 0 || array.Length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Array.Fill(array, value, startIndex, count);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user