Collect
The collect(Value, PropertyResult)
function allows us to gather the values of one specific metric per test and build stats out of all the runs that happened for a property. It’s special in that we need to use it to wrap the actual property result and add context to it. Let’s go through using the function and understanding how it works. The function takes two arguments, which are Value
and PropertyResult
.
Value
represents the metric from which the statistics will be built. PropertyResult
is the result of the property. The collect
function takes both of these values and wraps them in a way that lets PropEr gather the metrics as well as validate the properties.
Code
A very basic property to use the collect
function would look like this:
prop_collect1() ->
?FORALL(Bin, binary(), collect(byte_size(Bin), is_binary(Bin))).
The first argument is the metric from which we want to build statistics. In this case, the first argument is the binary’s length. The second argument is the result of the property. The collect/2
function takes both values and wraps them up in a way that lets PropEr both gather the metrics and validate the properties.
Let’s see the following property run in the terminal below.
Get hands-on with 1400+ tech skills courses.