TypeClass v1.0.0-alpha4 TypeClass.Property.Generator protocol

Data generator protocol for property checks. The more variation the better.

Summary

Functions

Generate a random example of datatype

Types

t()
t() :: term

Functions

generate(sample)

Generate a random example of datatype.

Examples

defimpl TypeClass.Property.Generator, for: Integer do
  def generate(_), do: :rand.uniform(1000) * Enum.random([1, 1, 1, -1])
end

defimpl TypeClass.Property.Generator, for: BitString do
  def generate(_) do
    Stream.unfold("", &({&1, :rand.uniform(90)}))
    |> Stream.drop(1)
    |> Stream.take(:rand.uniform(4))
    |> Enum.to_list
    |> List.to_string
  end
end