/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.properties;
import net.sourceforge.pmd.PropertyDescriptor;
import net.sourceforge.pmd.lang.rule.properties.FloatMultiProperty;
import net.sourceforge.pmd.lang.rule.properties.FloatProperty;
/**
* Evaluates the functionality of the FloatProperty descriptor by testing its
* ability to catch creation errors (illegal args), flag out-of-range test
* values, and serialize/deserialize groups of float values onto/from a string
* buffer.
*
* @author Brian Remedios
*/
public class FloatPropertyTest extends AbstractPropertyDescriptorTester {
private static final float MIN = 1.0f;
private static final float MAX = 11.0f;
private static final float SHIFT = 3.0f;
public static FloatProperty randomProperty(int nameLength, int descLength, boolean multiValue) {
float defalt = randomFloat(0, 1000f);
return new FloatProperty(randomString(nameLength), randomString(descLength), defalt - 1000f, defalt + 1000,
defalt, 0f);
}
public FloatPropertyTest() {
super("Float");
}
/**
* Method createValue.
*
* @param count
* int
* @return Object
*/
@Override
protected Object createValue(int count) {
if (count == 1) {
return Float.valueOf(randomFloat(MIN, MAX));
}
Float[] values = new Float[count];
for (int i = 0; i < values.length; i++) {
values[i] = (Float) createValue(1);
}
return values;
}
/**
* Creates and returns (count) number of out-of-range float values
*
* @param count
* int
* @return Object
*/
@Override
protected Object createBadValue(int count) {
if (count == 1) {
return Float.valueOf(randomBool() ? randomFloat(MIN - SHIFT, MIN) : randomFloat(MAX, MAX + SHIFT));
}
Float[] values = new Float[count];
for (int i = 0; i < values.length; i++) {
values[i] = (Float) createBadValue(1);
}
return values;
}
/**
* Method createProperty.
*
* @param multiValue
* boolean
* @return PropertyDescriptor
*/
@Override
protected PropertyDescriptor createProperty(boolean multiValue) {
return multiValue ? new FloatMultiProperty("testFloat", "Test float property", MIN, MAX,
new Float[] { -1f, 0f, 1f, 2f }, 1.0f)
: new FloatProperty("testFloat", "Test float property", MIN, MAX, 9.0f, 1.0f);
}
/**
* Method createBadProperty.
*
* @param multiValue
* boolean
* @return PropertyDescriptor
*/
@Override
protected PropertyDescriptor createBadProperty(boolean multiValue) {
return multiValue ? new FloatMultiProperty("testFloat", "Test float property", 0f, 5f,
new Float[] { -1f, 0f, 1f, 2f }, 1.0f)
: new FloatProperty("testFloat", "Test float property", 5f, 4f, 9.0f, 1.0f);
}
}