View Javadoc
1   package net.sourceforge.pmd.properties;
2   
3   import net.sourceforge.pmd.PropertyDescriptor;
4   import net.sourceforge.pmd.lang.rule.properties.IntegerMultiProperty;
5   import net.sourceforge.pmd.lang.rule.properties.IntegerProperty;
6   
7   import org.junit.Test;
8   
9   /**
10   * Evaluates the functionality of the IntegerProperty descriptor by testing its
11   * ability to catch creation errors (illegal args), flag out-of-range test
12   * values, and serialize/deserialize groups of integers onto/from a string
13   * buffer.
14   * 
15   * @author Brian Remedios
16   */
17  public class IntegerPropertyTest extends AbstractPropertyDescriptorTester {
18  
19      private static final int MIN = 1;
20      private static final int MAX = 12;
21      private static final int SHIFT = 3;
22  
23      public IntegerPropertyTest() {
24          super("Integer");
25      }
26  
27      /**
28       * Method createValue.
29       * 
30       * @param count int
31       * @return Object
32       */
33      protected Object createValue(int count) {
34  
35          if (count == 1)
36              return Integer.valueOf(randomInt(MIN, MAX));
37  
38          Integer[] values = new Integer[count];
39          for (int i = 0; i < values.length; i++)
40              values[i] = (Integer) createValue(1);
41          return values;
42      }
43  
44      /**
45       * Creates and returns (count) number of out-of-range Integer values
46       * 
47       * @param count int
48       * @return Object
49       */
50      protected Object createBadValue(int count) {
51  
52          if (count == 1)
53              return Integer.valueOf(randomBool() ? randomInt(MIN - SHIFT, MIN) : randomInt(MAX, MAX + SHIFT));
54  
55          Integer[] values = new Integer[count];
56          for (int i = 0; i < values.length; i++)
57              values[i] = (Integer) createBadValue(1);
58          return values;
59      }
60  
61      @Test
62      public void testErrorForBad() {
63      } // not until int properties get ranges
64  
65      /**
66       * Method createProperty.
67       * 
68       * @param multiValue boolean
69       * @return PropertyDescriptor
70       */
71      protected PropertyDescriptor createProperty(boolean multiValue) {
72  
73          return multiValue ? new IntegerMultiProperty("testInteger", "Test integer property", MIN, MAX, new Integer[] {
74                  MIN, MIN + 1, MAX - 1, MAX }, 1.0f) : new IntegerProperty("testInteger", "Test integer property", MIN,
75                  MAX, MAX - 1, 1.0f);
76      }
77  
78      /**
79       * Method createBadProperty.
80       * 
81       * @param multiValue boolean
82       * @return PropertyDescriptor
83       */
84      protected PropertyDescriptor createBadProperty(boolean multiValue) {
85  
86          return multiValue ? new IntegerMultiProperty("testInteger", "", MIN, MAX, new Integer[] { MIN - 1, MAX }, 1.0f)
87                  : new IntegerProperty("", "Test integer property", MIN, MAX, MAX + 1, 1.0f);
88      }
89  }