mirror of
https://github.com/oliverbooth/X10D
synced 2024-11-23 00:38:47 +00:00
Add T.RepeatValue(int)
This commit is contained in:
parent
d80367c00c
commit
dc3de3816e
@ -1,4 +1,4 @@
|
|||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using X10D.Core;
|
using X10D.Core;
|
||||||
|
|
||||||
namespace X10D.Tests.Core;
|
namespace X10D.Tests.Core;
|
||||||
@ -49,5 +49,28 @@ public class CoreTests
|
|||||||
Assert.IsNotNull(enumerable);
|
Assert.IsNotNull(enumerable);
|
||||||
Assert.AreEqual(o, enumerable.ElementAt(0));
|
Assert.AreEqual(o, enumerable.ElementAt(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
[DataRow(1)]
|
||||||
|
[DataRow("f")]
|
||||||
|
[DataRow(true)]
|
||||||
|
public void RepeatValue_ShouldContainRepeatedValue_GivenValue(object o)
|
||||||
|
{
|
||||||
|
IEnumerable<object> enumerable = o.RepeatValue(10);
|
||||||
|
Assert.IsNotNull(enumerable);
|
||||||
|
|
||||||
|
object[] array = enumerable.ToArray();
|
||||||
|
Assert.AreEqual(10, array.Length);
|
||||||
|
CollectionAssert.AreEqual(new[] {o, o, o, o, o, o, o, o, o, o}, array);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
[DataRow(1)]
|
||||||
|
[DataRow("f")]
|
||||||
|
[DataRow(true)]
|
||||||
|
public void RepeatValue_ShouldThrow_GivenNegativeCount(object o)
|
||||||
|
{
|
||||||
|
// we must force enumeration via ToArray() to ensure the exception is thrown
|
||||||
|
Assert.ThrowsException<ArgumentOutOfRangeException>(() => o.RepeatValue(-1).ToArray());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
namespace X10D.Core;
|
namespace X10D.Core;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Extension methods which apply to all types.
|
/// Extension methods which apply to all types.
|
||||||
@ -30,4 +30,25 @@ public static class Extensions
|
|||||||
{
|
{
|
||||||
yield return value;
|
yield return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns an enumerable collection containing the current value repeated a specified number of times.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="value">The value to repeat.</param>
|
||||||
|
/// <param name="count">The number of times to repeat <paramref name="value" />.</param>
|
||||||
|
/// <typeparam name="T">The type of <paramref name="value"/>.</typeparam>
|
||||||
|
/// <returns>An enumerable collection containing <paramref name="value" /> repeated <paramref name="count" /> times.</returns>
|
||||||
|
/// <exception cref="ArgumentOutOfRangeException"><paramref name="count" /> is less than 0.</exception>
|
||||||
|
public static IEnumerable<T> RepeatValue<T>(this T value, int count)
|
||||||
|
{
|
||||||
|
if (count < 0)
|
||||||
|
{
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(count), ExceptionMessages.CountMustBeGreaterThanOrEqualTo0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
yield return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user