fiveam-data-generator is a random data generation library for Common Lisp.
The library provides generators for primitive types, collections, and composable generator combinators. It is designed to integrate naturally with FiveAM and to support future extensions such as factories and object generation.
This repository is intended to be integrated with the fiveam.
- Primitive generators
- Collection generators
- Generator combinators
- Extensible protocol based on generic functions
- Compatible with FiveAM
(ql:quickload :fiveam-data-generator)Import the package:
(use-package :fiveam-data-generator)Generate an integer:
(generate
(gen :integer
:min 1
:max 10))Generate a string:
(generate
(gen :string
:min-length 5
:max-length 10))Generate a list:
(generate
(gen :list
:of (gen :integer)
:min-length 3
:max-length 5))Generate a multidimensional array:
(generate
(gen :array
:of (gen :double-float)
:dimensions '(3 3)))(generate
(gen :constant
:value 42))(generate
(gen :member
:members '(red green blue)))(generate
(gen :one-of
:generators
(list (gen :integer)
(gen :string)
(gen :boolean))))(generate
(gen :map
:generator
(gen :integer)
:function #'1+))(generate
(gen :filter
:generator
(gen :integer)
:predicate #'evenp))(generate
(gen :optional
:generator
(gen :string)))(generate
(gen :tuple
:generators
(list (gen :string)
(gen :integer)
(gen :boolean))))(generate
(gen :bind
:generator
(gen :integer
:min 1
:max 5)
:function
(lambda (n)
(gen :list
:of (gen :integer)
:min-length n
:max-length n))))(asdf:test-system :fiveam-data-generator)https://github.com/diasbruno/fiveam-data-generator
This project is released under the Unlicense.