/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.properties;
import org.junit.Test;
import net.sourceforge.pmd.PropertyDescriptor;
import net.sourceforge.pmd.lang.rule.properties.IntegerMultiProperty;
import net.sourceforge.pmd.lang.rule.properties.IntegerProperty;
/**
* Evaluates the functionality of the IntegerProperty descriptor by testing its
* ability to catch creation errors (illegal args), flag out-of-range test
* values, and serialize/deserialize groups of integers onto/from a string
* buffer.
*
* @author Brian Remedios
*/
public class IntegerPropertyTest extends AbstractPropertyDescriptorTester {
private static final int MIN = 1;
private static final int MAX = 12;
private static final int SHIFT = 3;
public IntegerPropertyTest() {
super("Integer");
}
/**
* Method createValue.
*
* @param count
* int
* @return Object
*/
@Override
protected Object createValue(int count) {
if (count == 1) {
return Integer.valueOf(randomInt(MIN, MAX));
}
Integer[] values = new Integer[count];
for (int i = 0; i < values.length; i++) {
values[i] = (Integer) createValue(1);
}
return values;
}
/**
* Creates and returns (count) number of out-of-range Integer values
*
* @param count
* int
* @return Object
*/
@Override
protected Object createBadValue(int count) {
if (count == 1) {
return Integer.valueOf(randomBool() ? randomInt(MIN - SHIFT, MIN) : randomInt(MAX, MAX + SHIFT));
}
Integer[] values = new Integer[count];
for (int i = 0; i < values.length; i++) {
values[i] = (Integer) createBadValue(1);
}
return values;
}
@Override
@Test
public void testErrorForBad() {
} // not until int properties get ranges
/**
* Method createProperty.
*
* @param multiValue
* boolean
* @return PropertyDescriptor
*/
@Override
protected PropertyDescriptor createProperty(boolean multiValue) {
return multiValue
? new IntegerMultiProperty("testInteger", "Test integer property", MIN, MAX,
new Integer[] { MIN, MIN + 1, MAX - 1, MAX }, 1.0f)
: new IntegerProperty("testInteger", "Test integer property", MIN, MAX, MAX - 1, 1.0f);
}
/**
* Method createBadProperty.
*
* @param multiValue
* boolean
* @return PropertyDescriptor
*/
@Override
protected PropertyDescriptor createBadProperty(boolean multiValue) {
return multiValue ? new IntegerMultiProperty("testInteger", "", MIN, MAX, new Integer[] { MIN - 1, MAX }, 1.0f)
: new IntegerProperty("", "Test integer property", MIN, MAX, MAX + 1, 1.0f);
}
}