
net.sf.qualitytest.blueprint.configuration.RandomBlueprintConfiguration Maven / Gradle / Ivy
/*******************************************************************************
* Copyright 2013 André Rouél and Dominik Seichter
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package net.sf.qualitytest.blueprint.configuration;
import java.util.ArrayList;
import java.util.List;
import net.sf.qualitytest.blueprint.strategy.creation.BlueprintStringCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.BlueprintCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.RandomBooleanValueCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.RandomByteValueCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.RandomCharValueCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.RandomDoubleValueCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.RandomEnumCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.RandomFloatValueCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.RandomIntValueCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.RandomLongValueCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.RandomShortValueCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.creation.ValueCreationStrategy;
import net.sf.qualitytest.blueprint.strategy.matching.InterfaceOfTypeMatchingStrategy;
import net.sf.qualitytest.blueprint.strategy.matching.SetterMethodMatchingStrategy;
import net.sf.qualitytest.blueprint.strategy.matching.TypeMatchingStrategy;
/**
* {@code BlueprintConfiguration} which assigns all primitive types and their corresponding object types with a random
* value.
*
* Additionally, support for the interfaces {@code java.util.List}, {@code java.util.Set} and {@code java.util.Map} is
* added. If these interface are encountered, empty lists, maps and sets are created.
*
* @author Dominik Seichter
*
*/
public final class RandomBlueprintConfiguration extends ImmutableBlueprintConfiguration {
private static final ValueCreationStrategy LONG_DEFAULT = new RandomLongValueCreationStrategy();
private static final ValueCreationStrategy INTEGER_DEFAULT = new RandomIntValueCreationStrategy();
private static final ValueCreationStrategy BOOLEAN_DEFAULT = new RandomBooleanValueCreationStrategy();
private static final ValueCreationStrategy CHARACTER_DEFAULT = new RandomCharValueCreationStrategy();
private static final ValueCreationStrategy SHORT_DEFAULT = new RandomShortValueCreationStrategy();
private static final ValueCreationStrategy BYTE_DEFAULT = new RandomByteValueCreationStrategy();
private static final ValueCreationStrategy FLOAT_DEFAULT = new RandomFloatValueCreationStrategy();
private static final ValueCreationStrategy DOUBLE_DEFAULT = new RandomDoubleValueCreationStrategy();
/**
* Add the default enum handling to a map.
*
* @param map
*/
public static void addRandomEnumStrategy(final List list) {
list.add(new StrategyPair(new InterfaceOfTypeMatchingStrategy(Enum.class), new RandomEnumCreationStrategy()));
}
private static List createDefaultAttributeMapping() {
final List list = new ArrayList();
list.add(new StrategyPair(new TypeMatchingStrategy(String.class), new BlueprintStringCreationStrategy()));
list.add(new StrategyPair(new TypeMatchingStrategy(Long.class), LONG_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(long.class), LONG_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(Integer.class), INTEGER_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(int.class), INTEGER_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(Boolean.class), BOOLEAN_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(boolean.class), BOOLEAN_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(Character.class), CHARACTER_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(char.class), CHARACTER_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(Short.class), SHORT_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(short.class), SHORT_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(Byte.class), BYTE_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(byte.class), BYTE_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(Float.class), FLOAT_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(float.class), FLOAT_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(Double.class), DOUBLE_DEFAULT));
list.add(new StrategyPair(new TypeMatchingStrategy(double.class), DOUBLE_DEFAULT));
addRandomEnumStrategy(list);
DefaultBlueprintConfiguration.addDefaultArrayStrategy(list);
DefaultBlueprintConfiguration.addDefaultCollections(list);
list.add(new StrategyPair(new SetterMethodMatchingStrategy(), new BlueprintCreationStrategy()));
return list;
}
public RandomBlueprintConfiguration() {
super(createDefaultAttributeMapping(), false);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy