Jds.TestingUtils.Randomization
0.2.0-build-20220206-223707-sha-c6e1f2f
See the version list below for details.
dotnet add package Jds.TestingUtils.Randomization --version 0.2.0-build-20220206-223707-sha-c6e1f2f
NuGet\Install-Package Jds.TestingUtils.Randomization -Version 0.2.0-build-20220206-223707-sha-c6e1f2f
<PackageReference Include="Jds.TestingUtils.Randomization" Version="0.2.0-build-20220206-223707-sha-c6e1f2f" />
<PackageVersion Include="Jds.TestingUtils.Randomization" Version="0.2.0-build-20220206-223707-sha-c6e1f2f" />
<PackageReference Include="Jds.TestingUtils.Randomization" />
paket add Jds.TestingUtils.Randomization --version 0.2.0-build-20220206-223707-sha-c6e1f2f
#r "nuget: Jds.TestingUtils.Randomization, 0.2.0-build-20220206-223707-sha-c6e1f2f"
#:package Jds.TestingUtils.Randomization@0.2.0-build-20220206-223707-sha-c6e1f2f
#addin nuget:?package=Jds.TestingUtils.Randomization&version=0.2.0-build-20220206-223707-sha-c6e1f2f&prerelease
#tool nuget:?package=Jds.TestingUtils.Randomization&version=0.2.0-build-20220206-223707-sha-c6e1f2f&prerelease
Testing Utils: Randomization
This collection of randomization test utilities supports creating test arrangements.
How to Use
All examples below use the thread-safe, static
Jds.TestingUtils.Randomization.Randomizer.Sharedinstance ofIRandomizationSource, which generates random values usingSystem.Random.Shared. ThisIRandomizationSourceis advised for most tests.If a different algorithm is needed, e.g., a cryptographically strong random number generator is required, consider creating a
Jds.TestingUtils.Randomization.ArrangedRandomizationSource. It uses providedFunc<IEnumerable<>>delegates to supply values when requested.If a specific set of random-seeming data is needed, consider creating a
Jds.TestingUtils.Randomization.DeterministicRandomizationSource. It uses providedIEnumerable<>sources to supply values when requested.
Add Jds.TestingUtils.Randomization NuGet Package and Add using
Add Jds.TestingUtils.Randomization NuGet package to the test project.
Add the extensions to your test files with the following using statement:
using Jds.TestingUtils.Randomization;
All examples below assume the following additional using statements:
using System;
using System.Collections.Generic;
using System.Linq;
Generate Pseudo-random Numbers
IRandomizationSource.Boolean()- Gets a pseudo-random
bool.
- Gets a pseudo-random
IRandomizationSource.Byte()- Gets a pseudo-random
byte, greater than or equal tobyte.MinValue, and less thanbyte.MaxValue.
- Gets a pseudo-random
IRandomizationSource.ByteInRange(byte minInclusive, byte maxExclusive)- Gets a pseudo-random
byte, greater than or equal tominInclusive, and less thanmaxExclusive.
- Gets a pseudo-random
IRandomizationSource.Double()- Gets a pseudo-random
double, usingIRandomizationSource.NextDouble. The value should be greater than or equal to0.0, and less than1.0.
- Gets a pseudo-random
IRandomizationSource.Float()- Gets a pseudo-random
float, usingIRandomizationSource.NextFloat. The value should be greater than or equal to0.0, and less than1.0.
- Gets a pseudo-random
IRandomizationSource.Int()- Gets a pseudo-random
int, usingIRandomizationSource.NextIntInRange. The value should be greater than or equal toint.MinValue, and less thanint.MaxValue.
- Gets a pseudo-random
IRandomizationSource.IntInRange(int minInclusive, int maxExclusive)- Gets a pseudo-random
int, usingIRandomizationSource.NextIntInRange. The value should be greater than or equal tominInclusive, and less thanmaxExclusive.
- Gets a pseudo-random
IRandomizationSource.IntNegative()- Gets a pseudo-random
int, usingIRandomizationSource.NextIntInRange. The value should be greater than or equal toint.MinValue, and less than0.
- Gets a pseudo-random
IRandomizationSource.IntPositive()- Gets a pseudo-random
int, usingIRandomizationSource.NextIntInRange. The value should be greater than or equal to0, and less thanint.MaxValue.
- Gets a pseudo-random
IRandomizationSource.Long()- Gets a pseudo-random
long, usingIRandomizationSource.NextLongInRange. The value should be greater than or equal tolong.MinValue, and less thanlong.MaxValue.
- Gets a pseudo-random
IRandomizationSource.LongInRange(long minInclusive, long maxExclusive)- Gets a pseudo-random
long, usingIRandomizationSource.NextLongInRange. The value should be greater than or equal tominInclusive, and less thanmaxExclusive.
- Gets a pseudo-random
IRandomizationSource.LongNegative()- Gets a pseudo-random
long, usingIRandomizationSource.NextLongInRange. The value should be greater than or equal tolong.MinValue, and less than0.
- Gets a pseudo-random
IRandomizationSource.LongPositive()- Gets a pseudo-random
long, usingIRandomizationSource.NextLongInRange. The value should be greater than or equal to0, and less thanlong.MaxValue.
- Gets a pseudo-random
Select a Random Item or Enumeration Value
IRandomizationSource.RandomEnumValue<TEnum>()- Selects a pseudo-random value from the
enumof type specified (TEnum). - Example:
Randomizer.Shared.RandomEnumValue<System.Net.HttpStatusCode>()
- Selects a pseudo-random value from the
IRandomizationSource.RandomListItem<T>(IReadOnlyList<T> items)IReadOnlyList<T>.GetRandomItem<T>()- Selects a pseudo-random item from provided
items. - Example:
Randomizer.Shared.RandomListItem(System.Linq.Enumerable.Range(1, 20).ToArray())
- Selects a pseudo-random item from provided
Select a Weighted Random Item or Dictionary Key
IRandomizationSource.RandomListItem<T>(IReadOnlyList<(T Item, double Weight)> weightedItems)IRandomizationSource.RandomListItem<T>(IReadOnlyList<(T Item, int Weight)> weightedItems)IReadOnlyList<(T Key, double Weight)>.GetWeightedRandomItem<T>()IReadOnlyList<(T Key, int Weight)>.GetWeightedRandomItem<T>()- Selects a pseudo-random
.Itemfrom providedweightedItems; item selection is weighted based upon relative.Weight. - Example:
- Selects a pseudo-random
Randomizer.Shared.WeightedRandomListItem(
new[] { ("Sure", 1000), ("Likely", 500), ("Possible", 200), ("Unlikely", 50), ("Rare", 5), ("Apocryphal", 1) }
);
IRandomizationSource.GetWeightedRandomKey<T>(IReadOnlyDictionary<T, double> weightedKeys)IRandomizationSource.GetWeightedRandomKey<T>(IReadOnlyDictionary<T, int> weightedKeys)IReadOnlyDictionary<T, double>.GetWeightedRandomKey<T>()IReadOnlyDictionary<T, int>.GetWeightedRandomKey<T>()- Selects a pseudo-random
.Keyfrom providedweightedItems; item selection is weighted based upon relative.Value. - Example:
- Selects a pseudo-random
Randomizer.Shared.WeightedRandomKey(new Dictionary<string, double>
{
{ "North", 0.4 }, { "East", 0.1 }, { "West", 0.1 }, { "South", 0.4 }
});
Generate a Random String
IRandomizationSource.RandomString(int length, IReadOnlyList<char> chars)- Generates a pseudo-random
stringoflengthcharacters, using providedchars. Random selections fromcharsare concatenated until reachinglengthcharacters.
- Generates a pseudo-random
IRandomizationSource.RandomString(int length, IReadOnlyList<string> strings)- Generates a pseudo-random
stringoflengthcharacters, using providedstrings. Random selections fromstringsare concatenated until reachinglengthcharacters. The result is truncated tolengthcharacters.
- Generates a pseudo-random
IRandomizationSource.RandomStringLatin(int length, bool uppercase = false, bool alphanumeric = false)- Generates a pseudo-random
stringoflengthcharacters using ASCII Latin characters. Usesa-zby default. Ifuppercase, usesA-Z. Ifalphanumeric, also includes0-9with either casing.
- Generates a pseudo-random
Generate a Mail Address
IRandomizationSource.MailAddress()IRandomizationSource.MailAddress(int length)- Generates a pseudo-random
System.Net.Mail.MailAddress. The generatedSystem.Net.Mail.MailAddress.Userwill be adot-atomform oflocal-part(see RFC-2822 section 3.4.1). The generatedSystem.Net.Mail.MailAddress.Hostwill be adomain(see RFC-1035 section 2.3.1).
- Generates a pseudo-random
IRandomizationSource.MailAddressAddrSpec(int length)IRandomizationSource.MailAddressAddrSpec((int LocalPartLength, int DomainLength) componentLengths)- Generates a pseudo-random
stringaccording toaddr-spec(see RFC-2822 section 3.4.1). The generatedlocal-partwill be ofdot-atomform (see RFC-2822 section 3.4.1). The generateddomainwill be ofdot-atomform (see RFC-2822 section 3.4.1), and its value will be generated as a RFC-1035 section 2.3.1domain.
- Generates a pseudo-random
Generate a Domain
IRandomizationSource.DomainName(int length)IRandomizationSource.DomainName(IReadOnlyList<int> domainLabelLengths)- Generates a pseudo-random
stringaccording todomain(see RFC-1035 section 2.3.1).
- Generates a pseudo-random
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net6.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 0.9.0 | 2,215 | 10/5/2024 | |
| 0.8.0 | 1,372 | 6/25/2024 | |
| 0.7.0 | 1,052 | 11/12/2023 | |
| 0.6.0 | 3,981 | 5/16/2023 | |
| 0.5.0 | 1,040 | 1/10/2023 | |
| 0.5.0-build-20220414-050254... | 326 | 4/14/2022 | |
| 0.4.0 | 1,492 | 2/19/2022 | |
| 0.4.0-build-20220214-011232... | 297 | 2/14/2022 | |
| 0.3.0 | 633 | 2/14/2022 | |
| 0.3.0-build-20220214-010752... | 325 | 2/14/2022 | |
| 0.3.0-build-20220214-004124... | 333 | 2/14/2022 | |
| 0.3.0-build-20220208-010440... | 325 | 2/8/2022 | |
| 0.2.0 | 542 | 2/8/2022 | |
| 0.2.0-build-20220208-005756... | 308 | 2/8/2022 | |
| 0.2.0-build-20220206-223707... | 310 | 2/6/2022 | |
| 0.2.0-build-20220206-212627... | 333 | 2/6/2022 | |
| 0.2.0-build-20220204-031004... | 356 | 2/4/2022 | |
| 0.1.0 | 614 | 2/4/2022 | |
| 0.1.0-build-20220204-024107... | 331 | 2/4/2022 | |
| 0.0.0-build-20220204-022926... | 331 | 2/4/2022 | |
| 0.0.0-build-20220204-021830... | 329 | 2/4/2022 | |
| 0.0.0-build-20220202-013346... | 357 | 2/2/2022 |