You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2003/06/26 01:33:47 UTC

cvs commit: jakarta-commons/lang/src/test/org/apache/commons/lang ArrayUtilsTest.java

scolebourne    2003/06/25 16:33:47

  Modified:    lang/src/java/org/apache/commons/lang ArrayUtils.java
               lang/src/test/org/apache/commons/lang ArrayUtilsTest.java
  Log:
  Add primitive boolean/object conversions
  Bug 21068, from Matthew Hawthorne
  
  Revision  Changes    Path
  1.15      +70 -1     jakarta-commons/lang/src/java/org/apache/commons/lang/ArrayUtils.java
  
  Index: ArrayUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/ArrayUtils.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ArrayUtils.java	25 Jun 2003 23:32:08 -0000	1.14
  +++ ArrayUtils.java	25 Jun 2003 23:33:47 -0000	1.15
  @@ -68,6 +68,7 @@
    * @author Moritz Petersen
    * @author <a href="mailto:fredrik@westermarck.com">Fredrik Westermarck</a>
    * @author Nikolay Metchev
  + * @author Matthew Hawthorne
    * @since 2.0
    * @version $Id$
    */
  @@ -903,6 +904,74 @@
        */
       public static boolean contains(final Object[] array, final Object objectToFind) {
           return (indexOf(array, objectToFind) != -1);
  +    }
  +
  +    // Primitive/Object converters
  +    // ----------------------------------------------------------------------
  +    /**
  +     * <p>Converts an array of object Booleans to primitives.</p>
  +     *
  +     * <p>This method returns <code>null</code> if <code>null</code> input.</p>
  +     * 
  +     * @param array  a <code>Boolean</code> array, may be <code>null</code>
  +     * @return a <code>boolean</code> array
  +     * @throws NullPointerException if array content is <code>null</code>
  +     */
  +    public static boolean[] toPrimitive(final Boolean[] array) {
  +        if (array == null) {
  +            return null;
  +        } else if (array.length == 0) {
  +            return EMPTY_BOOLEAN_ARRAY;
  +        }
  +        final boolean[] result = new boolean[array.length];
  +        for (int i = 0; i < array.length; i++) {
  +            result[i] = array[i].booleanValue();
  +        }
  +        return result;
  +    }
  +
  +    /**
  +     * <p>Converts an array of object Booleans to primitives handling null.</p>
  +     * 
  +     * <p>This method returns <code>null</code> if <code>null</code> input.</p>
  +     * 
  +     * @param array  a <code>Boolean</code> array, may be <code>null</code>
  +     * @param valueForNull  the value to insert if <code>null</code> found
  +     * @return a <code>boolean</code> array
  +     */
  +    public static boolean[] toPrimitive(final Boolean[] array, final boolean valueForNull) {
  +        if (array == null) {
  +            return null;
  +        } else if (array.length == 0) {
  +            return EMPTY_BOOLEAN_ARRAY;
  +        }
  +        final boolean[] result = new boolean[array.length];
  +        for (int i = 0; i < array.length; i++) {
  +            Boolean b = array[i];
  +            result[i] = (b == null ? valueForNull : b.booleanValue());
  +        }
  +        return result;
  +    }
  +
  +    /**
  +     * <p>Converts an array of primitive booleans to objects.</p>
  +     *
  +     * <p>This method returns <code>null</code> if <code>null</code> input.</p>
  +     * 
  +     * @param array  a <code>boolean</code> array
  +     * @return a <code>Boolean</code> array
  +     */
  +    public static Boolean[] toObject(final boolean[] array) {
  +        if (array == null) {
  +            return null;
  +        } else if (array.length == 0) {
  +            return EMPTY_BOOLEAN_OBJECT_ARRAY;
  +        }
  +        final Boolean[] result = new Boolean[array.length];
  +        for (int i = 0; i < array.length; i++) {
  +            result[i] = (array[i] ? Boolean.TRUE : Boolean.FALSE);
  +        }
  +        return result;
       }
   
   }
  
  
  
  1.7       +48 -4     jakarta-commons/lang/src/test/org/apache/commons/lang/ArrayUtilsTest.java
  
  Index: ArrayUtilsTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/ArrayUtilsTest.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ArrayUtilsTest.java	23 Mar 2003 21:47:30 -0000	1.6
  +++ ArrayUtilsTest.java	25 Jun 2003 23:33:47 -0000	1.7
  @@ -64,9 +64,10 @@
   /**
    * Unit tests {@link org.apache.commons.lang.ArrayUtils}.
    *
  - * @author <a href="mailto:scolebourne@joda.org">Stephen Colebourne</a>
  + * @author Stephen Colebourne
    * @author Moritz Petersen
    * @author Nikolay Metchev
  + * @author Matthew Hawthorne
    * @version $Id$
    */
   public class ArrayUtilsTest extends TestCase {
  @@ -80,8 +81,8 @@
       }
   
       public static Test suite() {
  -    	TestSuite suite = new TestSuite(ArrayUtilsTest.class);
  -    	suite.setName("ArrayUtils Tests");
  +        TestSuite suite = new TestSuite(ArrayUtilsTest.class);
  +        suite.setName("ArrayUtils Tests");
           return suite;
       }
   
  @@ -706,4 +707,47 @@
           assertEquals(true, ArrayUtils.contains(array, null));
           assertEquals(false, ArrayUtils.contains(array, "notInArray"));
       }
  +    
  +    // testToPrimitive/Object for boolean
  +    //  -----------------------------------------------------------------------
  +    public void testToPrimitive_boolean() {
  +        assertEquals(null, ArrayUtils.toPrimitive(null));
  +        assertSame(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.toPrimitive(new Boolean[0]));
  +        assertTrue(Arrays.equals(
  +            new boolean[] {true, false, true},
  +            ArrayUtils.toPrimitive(new Boolean[] {Boolean.TRUE, Boolean.FALSE, Boolean.TRUE}))
  +        );
  +
  +        try {
  +            ArrayUtils.toPrimitive(new Boolean[] {Boolean.TRUE, null});
  +            fail();
  +        } catch (NullPointerException ex) {}
  +    }
  +
  +    public void testToPrimitive_boolean_boolean() {
  +        assertEquals(null, ArrayUtils.toPrimitive(null, false));
  +        assertSame(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.toPrimitive(new Boolean[0], false));
  +        assertTrue(Arrays.equals(
  +            new boolean[] {true, false, true},
  +            ArrayUtils.toPrimitive(new Boolean[] {Boolean.TRUE, Boolean.FALSE, Boolean.TRUE}, false))
  +        );
  +        assertTrue(Arrays.equals(
  +            new boolean[] {true, false, false},
  +            ArrayUtils.toPrimitive(new Boolean[] {Boolean.TRUE, null, Boolean.FALSE}, false))
  +        );
  +        assertTrue(Arrays.equals(
  +            new boolean[] {true, true, false},
  +            ArrayUtils.toPrimitive(new Boolean[] {Boolean.TRUE, null, Boolean.FALSE}, true))
  +        );
  +    }
  +
  +    public void testToObject_boolean() {
  +        assertEquals(null, ArrayUtils.toObject(null));
  +        assertSame(ArrayUtils.EMPTY_BOOLEAN_OBJECT_ARRAY, ArrayUtils.toObject(new boolean[0]));
  +        assertTrue(Arrays.equals(
  +            new Boolean[] {Boolean.TRUE, Boolean.FALSE, Boolean.TRUE},
  +            ArrayUtils.toObject(new boolean[] {true, false, true}))
  +        );
  +    }
  +
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org