Added Run method to RandomCrypto and RandomFast

This commit is contained in:
Jaex 2020-11-28 12:55:42 +03:00
parent 6346472eab
commit 8d008fe2f7
5 changed files with 60 additions and 10 deletions

View file

@ -46,7 +46,7 @@ public int Minimum
{
if (value < 0)
{
throw new ArgumentOutOfRangeException("Minimum");
throw new ArgumentOutOfRangeException(nameof(Minimum));
}
if (maximum < value)
@ -81,7 +81,7 @@ public int Maximum
{
if (value < 0)
{
throw new ArgumentOutOfRangeException("Maximum");
throw new ArgumentOutOfRangeException(nameof(Maximum));
}
if (minimum > value)
@ -114,9 +114,9 @@ public int Value
{
if (this.value != value)
{
if ((value < minimum) || (value > maximum))
if (value < minimum || value > maximum)
{
throw new ArgumentOutOfRangeException("Value");
throw new ArgumentOutOfRangeException(nameof(Value));
}
this.value = value;

View file

@ -44,8 +44,8 @@ public static class Extensions
{
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
if (source == null) throw new ArgumentNullException("source");
if (action == null) throw new ArgumentNullException("action");
if (source == null) throw new ArgumentNullException(nameof(source));
if (action == null) throw new ArgumentNullException(nameof(action));
foreach (T item in source)
{

View file

@ -53,7 +53,7 @@ public static int Next(int maxValue)
{
if (maxValue < 0)
{
throw new ArgumentOutOfRangeException("maxValue");
throw new ArgumentOutOfRangeException(nameof(maxValue));
}
return Next(0, maxValue);
@ -69,7 +69,7 @@ public static int Next(int minValue, int maxValue)
if (minValue > maxValue)
{
throw new ArgumentOutOfRangeException("minValue");
throw new ArgumentOutOfRangeException(nameof(minValue));
}
if (minValue == maxValue)
@ -115,7 +115,7 @@ public static void NextBytes(byte[] buffer)
{
if (buffer == null)
{
throw new ArgumentNullException("buffer");
throw new ArgumentNullException(nameof(buffer));
}
lock (randomLock)
@ -126,7 +126,22 @@ public static void NextBytes(byte[] buffer)
public static T Pick<T>(params T[] array)
{
if (array == null)
{
throw new ArgumentNullException(nameof(array));
}
if (array.Length == 0)
{
throw new ArgumentException(nameof(array));
}
return array[Next(array.Length - 1)];
}
public static void Run(params Action[] actions)
{
Pick(actions)();
}
}
}

View file

@ -47,6 +47,11 @@ public static int Next()
/// <returns>A 32-bit signed integer that is greater than or equal to 0 and less than or equal to <paramref name="maxValue"/>.</returns>
public static int Next(int maxValue)
{
if (maxValue < 0)
{
throw new ArgumentOutOfRangeException(nameof(maxValue));
}
lock (randomLock)
{
return random.Next(maxValue + 1);
@ -59,6 +64,16 @@ public static int Next(int maxValue)
/// <returns>A 32-bit signed integer that is greater than or equal to <paramref name="minValue"/> and less than or equal to <paramref name="maxValue"/>.</returns>
public static int Next(int minValue, int maxValue)
{
if (minValue > maxValue)
{
throw new ArgumentOutOfRangeException(nameof(minValue));
}
if (minValue == maxValue)
{
return minValue;
}
lock (randomLock)
{
return random.Next(minValue, maxValue + 1);
@ -79,6 +94,11 @@ public static double NextDouble()
/// <param name="buffer">An array of bytes to contain random numbers.</param>
public static void NextBytes(byte[] buffer)
{
if (buffer == null)
{
throw new ArgumentNullException(nameof(buffer));
}
lock (randomLock)
{
random.NextBytes(buffer);
@ -87,7 +107,22 @@ public static void NextBytes(byte[] buffer)
public static T Pick<T>(params T[] array)
{
if (array == null)
{
throw new ArgumentNullException(nameof(array));
}
if (array.Length == 0)
{
throw new ArgumentException(nameof(array));
}
return array[Next(array.Length - 1)];
}
public static void Run(params Action[] actions)
{
Pick(actions)();
}
}
}

View file

@ -56,7 +56,7 @@ public JiraUpload(string issuePrefix, GetSummaryHandler getSummary) : this()
{
if (getSummary == null)
{
throw new ArgumentNullException("getSummary");
throw new ArgumentNullException(nameof(getSummary));
}
this.issuePrefix = issuePrefix;
this.getSummary = getSummary;