All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.amygdalum.testrecorder.data.TestDataGenerator Maven / Gradle / Ivy

There is a newer version: 0.10.5
Show newest version
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);
		}
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy