net.amygdalum.testrecorder.data.TestDataGenerator Maven / Gradle / Ivy
package net.amygdalum.testrecorder.data;
import java.util.IdentityHashMap;
import java.util.Map;
import net.amygdalum.testrecorder.runtime.DefaultValue;
public class TestDataGenerator {
private Map, TestValueGenerator> objectValues;
public TestDataGenerator() {
this.objectValues = new IdentityHashMap<>();
}
public TestDataGenerator withValues(Class clazz, TestValueGenerator generator) {
objectValues.put(clazz, generator);
return this;
}
@SuppressWarnings("unchecked")
public T create(Class clazz) {
TestValueGenerator gen = (TestValueGenerator) objectValues.computeIfAbsent(clazz, c -> new DefaultValueGenerator<>(c));
return gen.create(this);
}
private static class DefaultValueGenerator implements TestValueGenerator {
private Class clazz;
DefaultValueGenerator(Class clazz) {
this.clazz = clazz;
}
@SuppressWarnings("unchecked")
@Override
public T create(TestDataGenerator generator) {
return (T) DefaultValue.of(clazz);
}
}
}