Fuzz Built-ins¶
Fuzz Built-ins provide functions for generating random values, including number ranges, date ranges, strings and making boundary checks. Potential use cases include:
-
Selecting a random dataset from a given list of datasets
-
Randomizing customer data, including name, date of birth, address, phone numbers or passwords
Fuzzy Number Ranges Built-ins ¶
Fuzzy Number Ranges Built-ins provide random integer or floating values within the given lower and upper boundaries (inclusive). In other words, if the range is from 0
to 10
, the lowest randomly-generated value would be 0
and the highest would be 10
.
Create Fuzzy Number Range ¶
This function creates the instance of the fuzzy number range generator.
Syntax
1 | <fuzzyNumberRange FuzzyNumberRange> := Fuzz.forNumberRange(<lowerBound Number>, <upperBound Number>) |
Returns
The instance of the fuzzy number range generator.
Parameters
-
lowerBound - The smallest possible value that can be generated
-
upperBound - The largest possible value that can be generated
Example
1 | fuzz := Fuzz.forNumberRange(1, 10) |
Fuzzy Number Lower Boundary ¶
Returns the lower boundary of the fuzzy number range generator.
Syntax
1 | <lowerBound Number> := <fuzzyNumberRange FuzzyNumberRange>.getLowerBound() |
Returns
The lower boundary of the fuzzy number range generator.
Parameter
- fuzzyNumberRange - The instance of the fuzzy number range generator
Example
1 2 3 | lower := 0 upper := 10 lowerBound := Fuzz.forNumberRange(lower, upper).getLowerBound() |
Fuzzy Number Upper Boundary ¶
Returns the upper boundary of the fuzzy number range generator.
Syntax
1 | <upperBound Number> := <fuzzyNumberRange FuzzyNumberRange>.getUpperBound() |
Returns
The upper boundary of the fuzzy number range generator.
Parameter
- fuzzyNumberRange - The instance of the fuzzy number range generator
Example
1 2 3 | lower := 0 upper := 10 upperBound := Fuzz.forNumberRange(lower, upper).getUpperBound() |
Random Integer Number ¶
Generates a random integer value from the specified range.
Syntax
1 | <result Number> := <fuzzyNumberRange FuzzyNumberRange>.nextInt() |
Returns
The randomly-generated integer.
Parameter
- fuzzyNumberRange - The instance of fuzzy number range generator
Example
1 2 | fuzz := Fuzz.forNumberRange(1, 10) randomInt := fuzz.nextInt() |
Random Integer Boundary Checks ¶
The random integer boundary check enables testing potentially problematic values by further limiting the possible range of values. This is done by specifying a delta
, in other words, the size and width of a subrange, where subranges are located near the edge values.
Syntax
1 | <result Number> := <fuzzyNumberRange FuzzyNumberRange>.nextInt(<delta Number>) |
Returns
The randomly-generated integer number within one of the calculated boundary ranges.
Parameters
-
fuzzyNumberRange - The instance of fuzzy number range generator
-
delta - The size of the desired boundary subranges
Example
1 2 | fuzz := Fuzz.createNumberRange(1, 10) randomInt := fuzz.nextInt(1) |
The example above shows that:
-
The first line creates a range with lower and upper boundaries of
1
and10
, respectively. -
The second line calculates a number within the boundary ranges, where the possible return values are
1
,2
,9
and10
. -
Delta indicates a width of
1
, meaning the lower boundary range spans from the lower boundary (1
) to2
(lower boundary + delta) and the upper boundary range spans from the upper boundary (10
) to9
(upper boundary - delta). -
Similar to the upper and lower boundary values, the boundary subrange values are inclusive.
Random Floating Number ¶
Generates a random floating number value from the specified range.
Syntax
1 | <result Number> := <fuzzyNumberRange FuzzyNumberRange>.nextFloat() |
Returns
The randomly-generated floating number.
Parameters
- fuzzyNumberRange - The instance of fuzzy number range generator
Example
1 2 | fuzz := Fuzz.forNumberRange(1, 10) randomFloat := fuzz.nextFloat() |
Random Floating Number Boundary Check ¶
The random floating number boundary
function enables testing potentially problematic values by further limiting the possible range of values. This is done by specifying a delta
, in other words, the size and width of a subrange, where subranges are located near the edge values.
Syntax
1 | <result Number> := <fuzzyNumberRange FuzzyNumberRange>.nextFloat(<delta Number>) |
Returns
The randomly-generated number within one of the calculated boundary ranges.
Parameters
-
fuzzyNumberRange - The instance of fuzzy number range generator
-
delta - The size of the desired boundary subranges
Example
1 2 | fuzz := Fuzz.createNumberRange(1, 10) randomFloat := fuzz.nextFloat(2.0) |
The example above shows that:
-
The first line creates a range with lower and upper boundaries of
1
and10
, respectively. -
The second line calculates a number within the boundary ranges, where the possible return values are
1
,2
,9
and10
. -
Delta indicates a width of
1
, meaning the lower boundary range spans from the lower boundary (1
) to2
(lower boundary + delta) and the upper boundary range spans from the upper boundary (10
) to9
(upper boundary - delta). -
Similar to the upper and lower boundary values, the boundary subrange values are inclusive.
Fuzzy Date Ranges Built-ins ¶
Fuzzy Date Ranges Built-ins provide random dates within the given lower and upper boundaries (inclusive). In other words, if the range is from now("Europe/Vienna")
to now("Europe/Vienna").plusMinutes(30)
, the lowest randomly-generated value would be now("Europe/Vienna")
and the highest would be now("Europe/Vienna").plusMinutes(30)
.
Create Fuzzy Date Range ¶
This function creates the instance of the fuzzy date range generator.
Syntax
1 | <fuzzyDateRange FuzzyDateRange> := Fuzz.forDateRange(<lowerBound ZonedDateTime>, <upperBound ZonedDateTime>) |
Returns
The instance of fuzzy date range for random date generation.
Parameters
-
lowerBound - The lower bound of the date range
-
upperBound - The upper bound of the date range (must be greater than or equal to lower bound)
Example
1 | fuzz := Fuzz.forDateRange(now("Europe/Vienna"), now("Europe/Vienna").plusMinutes(30)) |
Fuzzy Date Range Lower Boundary ¶
Returns the lower boundary of the fuzzy date range generator.
Syntax
1 | <lowerBound ZonedDateTime> := <fuzzyDateRange FuzzyDateRange>.getLowerBound() |
Returns
The lower boundary of the fuzzy date range generator.
Parameter
- fuzzyDateRange - The instance of the fuzzy date range generator
Example
1 2 3 | lower := now("Europe/Vienna") upper := now("Europe/Vienna").plusMinutes(30) lowerBound := Fuzz.forDateRange(lower, upper).getLowerBound() |
Fuzzy Date Range Upper Boundary ¶
Returns the upper boundary of the fuzzy date range generator.
Syntax
1 | <upperBound ZonedDateTime> := <fuzzyDateRange FuzzyDateRange>.getUpperBound() |
Returns
The upper boundary of the fuzzy date range generator.
Parameter
- fuzzyDateRange - The instance of the fuzzy date range generator
Example
1 2 3 | lower := now("Europe/Vienna") upper := now("Europe/Vienna").plusMinutes(30) upperBound := Fuzz.forDateRange(lower, upper).getUpperBound() |
Random Date ¶
Generates a random date from the specified range.
Syntax
1 | <result ZonedDateTime> := <fuzzyDateRange FuzzyDateRange>.next() |
Returns
The random date within the rage specified for FuzzyDateRange.
Parameter
- fuzzyDateRange - The instance of the fuzzy date range generator
Example
1 2 | fuzz := Fuzz.forDateRange(now("Europe/Vienna"), now("Europe/Vienna").plusMinutes(30)) date := fuzz.next() |
Fuzzy Regex Built-ins ¶
Fuzzy Regex Built-ins provide methods for randomly-generated strings that match the specified Regex or length.
Create Fuzzy Regex String ¶
This function creates the instance of the fuzzy Regex string generator.
Syntax
1 | <fuzzyRegex FuzzyRegex> := Fuzz.forRegex(<regex String>) |
Returns
The instance of fuzzy regex string generator.
Parameter
- regex - The regex that randomly-generated strings should match to
Example
1 | fuzz := Fuzz.forRegex("M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})") |
Fuzzy Regex String Length ¶
Specifies the length of the randomly-generated strings and returns an instance of the fuzzy Regex string generator.
Syntax
1 | <fuzzyRegex FuzzyRegex> := Fuzz.forStringOfLength(<length Number>) |
Returns
The instance of fuzzy regex string generator.
Parameter
- length - The length of the randomly-generated stings (between 0 and 100000)
Example
1 2 | fuzzForRegex := Fuzz.forRegex("M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})") fuzForStringsOfLengthTen := Fuzz.forStringOfLength(10) |
Random Regex String ¶
Generates a randomly-generated string based on the Regex or length pattern.
Syntax
1 | <result String> := <fuzzyRegex FuzzyRegex>.next() |
Returns
The randomly-generated string.
Parameter
- fuzzyRegex - The instance of fuzzy Regex string generator
Example
1 2 | fuzz := Fuzz.forRegex("M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})") randomRomanNumber := fuzz.next() // e.g. IX, C, MXCV |
Fuzzy Random Elements from List Built-ins ¶
Fuzzy Random Elements from List Built-ins provide methods for getting random elements from a list.
Create Fuzzy List ¶
This function creates the instance of the fuzzy list.
Syntax
1 | <fuzzyList FuzzyList> := Fuzz.forList(<values List<Any>>) |
Returns
The instance of fuzzy list, which is used for getting random elements from the list.
Parameter
- values - The list of possible values
Example
1 | fuzz := Fuzz.forList([1, 5, 12]) |
Get Random Element from List ¶
Gets the random element from the list.
Syntax
1 | <result Any> := <fuzzyList FuzzyList>.next() |
Returns
The random element from the list specified for FuzzyList
.
Parameter
- fuzzyList - The instance of generated fuzzy list
Example
1 2 | fuzz := Fuzz.forList([1, 5, 12]) randomElementFromList := fuzz.next() |
Fuzzy List Boundary Check ¶
The random fuzzy list boundary
function enables testing potentially problematic values by further limiting the possible range of values. This is done by specifying a delta
, in other words, the size and width of a subrange, where subranges are located near the edge values.
Syntax
1 | <result Any> := <fuzzyList FuzzyList>.next(<delta Number>) |
Returns
The random element from the list specified for FuzzyList
from one of the boundary subranges.
Parameters
-
fuzzyList - The instance of generated fuzzy list
-
delta - The size of the desired boundary subranges
Example
1 2 | fuzz := Fuzz.forList([1, 5, 12, 15, 17]) randomElementFromList := fuzz.next(1) |
In the above example, only 1
, 5
, 15
and 17
are possible return values.