> [!NOTE] > > If you intend to work on one of the following points: > - use the bulleye icon to create a new issue from a bullet point > - assign yourself to the issue > - keep us posted # Api ## Primitives ### `aiken/fuzz` - [x] #8 - [x] `fn int_at_least(min: Int) -> Fuzzer<Int>` - [x] `fn int_at_most(max: Int) -> Fuzzer<Int>` - [x] `fn bytearray() -> Fuzzer<ByteArray>` - [x] `fn bytearray_between(min: Int, max: Int) -> Fuzzer<ByteArray>` - [x] `fn list_at_least(fuzz_elem: Fuzzer<a>, min: Int) -> Fuzzer<List<a>>` - [x] `fn list_at_most(fuzz_elem: Fuzzer<a>, max: Int) -> Fuzzer<List<a>>` - [x] `fn either(fuzz_left: Fuzzer<a>, fuzz_right: Fuzzer<a>) -> Fuzzer<a>` - [x] `fn both(fuzz_left: Fuzzer<a>, fuzz_right: Fuzzer<b>) -> Fuzzer<(a, b)>` - [x] #3 - [x] #4 - [x] #5 - [x] #6 ## Common types > [!NOTE] > > Considering: > > ``` > type Sample<a> = Fuzzer<List<a>> > ``` ### `aiken/fuzz/dict` - [ ] `fn dict(fuzz_key: Fuzzer<k>, fuzz_value: Fuzzer<v>) -> Fuzzer<Dict<k, v>>` - [ ] `fn dict_between(fuzz_key: Fuzzer<k>, fuzz_value: Fuzzer<v>, min: Int, max: Int) -> Fuzzer<Dict<k, v>>` - [ ] `fn dict_at_least(fuzz_key: Fuzzer<k>, fuzz_value: Fuzzer<v>, min: Int, max: Int) -> Fuzzer<Dict<k, v>>` - [ ] `fn dict_at_most(fuzz_key: Fuzzer<k>, fuzz_value: Fuzzer<v>, min: Int, max: Int) -> Fuzzer<Dict<k, v>>` - [ ] `fn dict_from(keys: Sample<k>, fuzz_value: Fuzzer<v>) -> Fuzzer<Dict<k, v>>` ### `aiken/fuzz/math/rational` - [x] `fn rational() -> Fuzzer<Rational>` - [x] `fn rational_between(min: Rational, max: Rational) -> Fuzzer<Rational>` - [x] `fn rational_at_least(min: Rational) -> Fuzzer<Rational>` - [x] `fn rational_at_most(max: Rational) -> Fuzzer<Rational>` ### `aiken/fuzz/transaction/value` - [x] `fn lovelace() -> Fuzzer<Int>` (a bespoke int fuzzer for lovelace quantities) ### `aiken/fuzz/transaction/certificate` - [x] `fn certificate(delegators: Sample<StakeCredential>, pools: Sample<PoolId>) -> Fuzzer<Certificate>` ### `aiken/fuzz/transaction/credential` - [x] `fn address(payment_credentials: Sample<PaymentCredential>, delegation_credentials: Sample<DelegationCredential>) -> Fuzzer<Address>` # Documentation - [x] Rework README and provide a high-level overview of the project. - [x] Add more inline-doc examples to (at least) primitives - [x] Write a small tutorial to illustrate the capabilities of the library and showcase some patterns. # Experiments - [ ] Experiment with [Scott-Encoded Tuples](https://github.com/aiken-lang/aiken/issues/834#issuecomment-1965224150) and analyze performances in comparison with Data-tuples.
Note
If you intend to work on one of the following points:
Api
Primitives
aiken/fuzzfn int_between(min: Int, max: Int) -> Fuzzer<Int>#8fn int_at_least(min: Int) -> Fuzzer<Int>fn int_at_most(max: Int) -> Fuzzer<Int>fn bytearray() -> Fuzzer<ByteArray>fn bytearray_between(min: Int, max: Int) -> Fuzzer<ByteArray>fn list_at_least(fuzz_elem: Fuzzer<a>, min: Int) -> Fuzzer<List<a>>fn list_at_most(fuzz_elem: Fuzzer<a>, max: Int) -> Fuzzer<List<a>>fn either(fuzz_left: Fuzzer<a>, fuzz_right: Fuzzer<a>) -> Fuzzer<a>fn both(fuzz_left: Fuzzer<a>, fuzz_right: Fuzzer<b>) -> Fuzzer<(a, b)>fn map6(fuzz_a: Fuzzer<a>, .., fuzz_f: Fuzzer<f>, f: fn(a, ..., f) -> result) -> Fuzzer<result>#3fn map7(fuzz_a: Fuzzer<a>, .., fuzz_g: Fuzzer<f>, f: fn(a, ..., g) -> result) -> Fuzzer<result>#4fn map8(fuzz_a: Fuzzer<a>, .., fuzz_h: Fuzzer<f>, f: fn(a, ..., h) -> result) -> Fuzzer<result>#5fn map9(fuzz_a: Fuzzer<a>, .., fuzz_i: Fuzzer<f>, f: fn(a, ..., i) -> result) -> Fuzzer<result>#6Common types
Note
Considering:
aiken/fuzz/dictfn dict(fuzz_key: Fuzzer<k>, fuzz_value: Fuzzer<v>) -> Fuzzer<Dict<k, v>>fn dict_between(fuzz_key: Fuzzer<k>, fuzz_value: Fuzzer<v>, min: Int, max: Int) -> Fuzzer<Dict<k, v>>fn dict_at_least(fuzz_key: Fuzzer<k>, fuzz_value: Fuzzer<v>, min: Int, max: Int) -> Fuzzer<Dict<k, v>>fn dict_at_most(fuzz_key: Fuzzer<k>, fuzz_value: Fuzzer<v>, min: Int, max: Int) -> Fuzzer<Dict<k, v>>fn dict_from(keys: Sample<k>, fuzz_value: Fuzzer<v>) -> Fuzzer<Dict<k, v>>aiken/fuzz/math/rationalfn rational() -> Fuzzer<Rational>fn rational_between(min: Rational, max: Rational) -> Fuzzer<Rational>fn rational_at_least(min: Rational) -> Fuzzer<Rational>fn rational_at_most(max: Rational) -> Fuzzer<Rational>aiken/fuzz/transaction/valuefn lovelace() -> Fuzzer<Int>(a bespoke int fuzzer for lovelace quantities)aiken/fuzz/transaction/certificatefn certificate(delegators: Sample<StakeCredential>, pools: Sample<PoolId>) -> Fuzzer<Certificate>aiken/fuzz/transaction/credentialfn address(payment_credentials: Sample<PaymentCredential>, delegation_credentials: Sample<DelegationCredential>) -> Fuzzer<Address>Documentation
Experiments