Custom Generators
Question 1
- collect(Term, BoolExpression) (in Elixir, BoolExpression |> collect(Term))
- aggregate([Term], BoolExpression) (in Elixir, BoolExpression |> aggregate(Term))
Question 2
?LET(Var, Generator, ErlangExpr); otherwise, the generators are abstract representations that won’t be modifiable the way the generated data would be. The same syntax in Elixir is let var <- Generator do ElixirExpr end instead.
Question 3
Whenever a generator that may probabilistically choose multiple branches is called, using eager evaluation means that all alternative paths for it will be evaluated at once. If the generator is made recursive, this can quickly blow the size of the computation to very large levels. The ?LAZY(Generator) ...
Get Property-Based Testing with PropEr, Erlang, and Elixir now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.