1import * as Arbitrary from "effect/Arbitrary"
2import * as Result from "effect/Result"
3import * as Schema from "effect/Schema"
4
5const integers = Arbitrary.schema(Schema.Int)
6
7export const arbitrary = Arbitrary.all([
8 integers.pipe(Arbitrary.map((value) => value + 1)),
9 integers.pipe(Arbitrary.flatMap((left) => integers.pipe(Arbitrary.map((right) => [left, right] as const)))),
10 integers.pipe(Arbitrary.filter((value) => value >= 0)),
11 integers.pipe(Arbitrary.filterMap((value) => value === 0 ? Result.fail(value) : Result.succeed(value)))
12])