AB.Generators (AB v0.2.1)

View Source

Functions for generating valid test data from type specifications.

Summary

Functions

Creates input generators from type specifications. Returns a generator that produces lists of arguments.

Resolves a user type from a module's type definitions. Returns the resolved type or nil if not found.

Converts a type specification to a StreamData generator.

Types

typespec_ast()

@type typespec_ast() ::
  {:type, non_neg_integer(), atom(), [typespec_ast()]}
  | {:atom, non_neg_integer(), atom()}
  | {:integer, non_neg_integer(), integer()}
  | {:user_type, non_neg_integer(), atom(), [typespec_ast()]}
  | {:remote_type, non_neg_integer(), [typespec_ast()]}

Functions

create_input_generator(input_types, module \\ nil)

@spec create_input_generator([typespec_ast()], module() | nil) :: any()

Creates input generators from type specifications. Returns a generator that produces lists of arguments.

Optionally accepts a module to resolve user-defined type aliases.

resolve_user_type(module, type_name)

@spec resolve_user_type(module(), atom()) :: any() | nil

Resolves a user type from a module's type definitions. Returns the resolved type or nil if not found.

type_to_generator(type, module \\ nil)

@spec type_to_generator(typespec_ast(), module() | nil) :: any()

Converts a type specification to a StreamData generator.

Optionally accepts a module to resolve user-defined type aliases.