registering default ArbitraryBuilder

0. Class

public class GenerateString {
	String value;
}

public class GenerateInt {
	int value;
}

1. Register one type

FixtureMonkey fixtureMonkey=FixtureMonkey.builder()
	.register(
        GenerateString.class,
        fixture -> fixture.giveMeBuilder(GenerateString.class)
            .set("value", Arbitraries.strings().alpha())
    )
	.build();

2. Register multiple types

register

FixtureMonkey fixtureMonkey = FixtureMonkey.builder()
	.register(
	    GenerateString.class,
	    fixture -> fixture.giveMeBuilder(GenerateString.class)
            .set("value", Arbitraries.strings().alpha())
    )
	.register(
        GenerateInt.class,
        fixture -> fixture.giveMeBuilder(GenerateInt.class)
            .set("value", Arbitraries.integers().between(1, 100))
	)
	.build();

registerGroup

Defining registerGroup

// using reflection
public class GenerateGroup {
	public ArbitraryBuilder<GenerateString> generateString(FixtureMonkey fixtureMonkey){
		return fixtureMonkey.giveMeBuilder(GenerateString.class)
			.set("value", Arbitraries.strings().numeric());
    }
	
	public ArbitraryBuilder<GenerateInt> generateInt(FixtureMonkey fixtureMonkey){
		return fixture.giveMeBuilder(GenerateInt.class)
			.set("value", Arbitraries.integers().between(1, 100));
    }
}

// using ArbitraryBuilderGroup interface
public class GenerateBuilderGroup implements ArbitraryBuilderGroup {
	@Override
	public ArbitraryBuilderCandidateList generateCandidateList() {
		return ArbitraryBuilderCandidateList.create()
			.add(
				ArbitraryBuilderCandidateFactory.of(GenerateString.class)
					.builder(
						arbitraryBuilder -> arbitraryBuilder
							.set("value", Arbitraries.strings().numeric())
					)
			)
			.add(
				ArbitraryBuilderCandidateFactory.of(GenerateInt.class)
					.builder(
						builder -> builder
							.set("value", Arbitraries.integers().between(1, 100))
					)
			);
	}
}

Add registerGroup option

// using reflection
FixtureMonkey fixtureMonkey = FixtureMonkey.builder()
    .registerGroup(GenerateGroup.class)
	.build();

// using ArbitraryBuilderGroup interface
FixtureMonkey fixtureMonkey = FixtureMonkey.builder()
	.registerGroup(new GenerateBuilderGroup())
	.build();

Example

GenerateString generateString = fixtureMonkey.giveMeOne(GenerateString.class);
GenerateInt generateInt = fixtureMonkey.giveMeOne(GenerateInt.class);

then(generateString.getValue()).containsOnlyDigits()();
then(generateInt.getValue()).isBetween(1, 100);