mirror of
https://github.com/oliverbooth/X10D
synced 2024-11-10 03:05:42 +00:00
Add Array.Fill
This commit is contained in:
parent
e183c31579
commit
85becd2415
@ -15,8 +15,7 @@ public class ArrayTests
|
|||||||
args.Clear();
|
args.Clear();
|
||||||
|
|
||||||
int[] comparison = Enumerable.Repeat(0, args.Length).ToArray();
|
int[] comparison = Enumerable.Repeat(0, args.Length).ToArray();
|
||||||
CollectionAssert.AreEqual(args, comparison, $"{string.Join(", ", args)} is not equal to" +
|
CollectionAssert.AreEqual(args, comparison);
|
||||||
$"{string.Join(", ", comparison)}. ");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -25,4 +24,24 @@ public class ArrayTests
|
|||||||
int[]? array = null;
|
int[]? array = null;
|
||||||
Assert.ThrowsException<ArgumentNullException>(array!.Clear);
|
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);
|
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