View Javadoc

    1   package net.sourceforge.pmd.properties;
    2
    3   import java.util.ArrayList;
    4   import java.util.HashMap;
    5
    6   import net.sourceforge.pmd.PropertyDescriptor;
    7   import net.sourceforge.pmd.lang.rule.properties.EnumeratedMultiProperty;
    8   import net.sourceforge.pmd.lang.rule.properties.EnumeratedProperty;
    9
    10  /**
    11   * Evaluates the functionality of the EnumeratedProperty descriptor by testing its ability to catch creation
    12   * errors (illegal args), flag invalid selections, and serialize/deserialize selection options.
    13   *
    14   * @author Brian Remedios
    15   */
    16  public class EnumeratedPropertyTest extends AbstractPropertyDescriptorTester {
    17
    18  	private static final String[] keys = new String[] {
    19  		"map",
    20  		"emptyArray",
    21  		"list",
    22  		"string",
    23  		};
    24
    25      private static final Object[] values = new Object[] {
    26          new HashMap(),
    27          new Object[0],
    28          new ArrayList(),
    29          "Hello World!",
    30          };
    31
    32  	public EnumeratedPropertyTest() {
    33  		super();
    34  	}
    35
    36  	/**
    37  	 * Method createValue.
    38  	 * @param count int
    39  	 * @return Object
    40  	 */
    41  	protected Object createValue(int count) {
    42
    43  		if (count == 1) return randomChoice(values);
    44
    45  		Object[] values = new Object[count];
    46  		for (int i=0; i<values.length; i++) values[i] = createValue(1);
    47  		return values;
    48  	}
    49
    50  	/**
    51  	 * Returns a (count) number of values that are not in the set of legal values.
    52  	 *
    53  	 * @param count int
    54  	 * @return Object
    55  	 */
    56  	protected Object createBadValue(int count) {
    57
    58  		if (count == 1) return Integer.toString(randomInt());		// not in the set of values
    59
    60  		Object[] values = new Object[count];
    61  		for (int i=0; i<values.length; i++) values[i] = createBadValue(1);
    62  		return values;
    63  	}
    64
    65  	/**
    66  	 * Method createProperty.
    67  	 * @param multiValue boolean
    68  	 * @return PropertyDescriptor
    69  	 */
    70  	protected PropertyDescriptor createProperty(boolean multiValue) {
    71
    72  		return multiValue ?
    73  			new EnumeratedMultiProperty<Object>("testEnumerations", "Test enumerations with complex types", keys, values, new int[] {0,1}, 1.0f) :
    74  			new EnumeratedProperty<Object>("testEnumerations", "Test enumerations with complex types", keys, values, 0, 1.0f);
    75  	}
    76
    77  	/**
    78  	 * Method createBadProperty.
    79  	 * @param multiValue boolean
    80  	 * @return PropertyDescriptor
    81  	 */
    82  	protected PropertyDescriptor createBadProperty(boolean multiValue) {
    83
    84  		return multiValue ?
    85  			new EnumeratedMultiProperty<Object>("testEnumerations", "Test enumerations with complex types", keys, new Object[0], new int[] {99}, 1.0f) :
    86  			new EnumeratedProperty<Object>("testEnumerations", "Test enumerations with complex types", new String[0], values, -1, 1.0f);
    87  	}
    88
    89      public static junit.framework.Test suite() {
    90          return new junit.framework.JUnit4TestAdapter(EnumeratedPropertyTest.class);
    91      }
    92  }