net.jqwik.engine.providers.AbstractCollectionArbitraryProvider Maven / Gradle / Ivy
package net.jqwik.engine.providers;
import java.util.*;
import java.util.stream.*;
import net.jqwik.api.*;
import net.jqwik.api.providers.*;
abstract class AbstractCollectionArbitraryProvider implements ArbitraryProvider {
@Override
public boolean canProvideFor(TypeUsage targetType) {
return targetType.isAssignableFrom(getProvidedType());
}
protected abstract Class> getProvidedType();
@Override
public Set> provideFor(TypeUsage targetType, SubtypeProvider subtypeProvider) {
TypeUsage elementType = targetType.getTypeArgument(0);
Set> elementArbitraries = subtypeProvider.apply(elementType);
return elementArbitraries.stream()
.map(this::create)
.collect(Collectors.toSet());
}
protected abstract Arbitrary> create(Arbitrary> innerArbitrary);
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy