You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2012/03/15 13:24:52 UTC
svn commit: r1300952 - in /commons/sandbox/beanutils2/trunk/src: changes/
test/java/org/apache/commons/beanutils2/
Author: simonetripodi
Date: Thu Mar 15 12:24:52 2012
New Revision: 1300952
URL: http://svn.apache.org/viewvc?rev=1300952&view=rev
Log:
[SANDBOX-403] Refactor Unit tests for better readability - patch provided by Benedikt Ritter
Added:
commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/TestBeanUtils.java (with props)
Modified:
commons/sandbox/beanutils2/trunk/src/changes/changes.xml
commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/CloneTestCase.java
commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/PopulateTestCase.java
Modified: commons/sandbox/beanutils2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/changes/changes.xml?rev=1300952&r1=1300951&r2=1300952&view=diff
==============================================================================
--- commons/sandbox/beanutils2/trunk/src/changes/changes.xml (original)
+++ commons/sandbox/beanutils2/trunk/src/changes/changes.xml Thu Mar 15 12:24:52 2012
@@ -23,6 +23,9 @@
</properties>
<body>
<release version="0.1" date="201?-??-??" description="First release.">
+ <action dev="simonetripodi" type="add" issue="SANDBOX-403" due-to="Benedikt Ritter">
+ Refactor Unit tests for better readability
+ </action>
<action dev="simonetripodi" type="add" issue="SANDBOX-401" due-to="Benedikt Ritter">
Performance improvement: store hash code of AccessibleObjectDescriptor as member variable
</action>
Modified: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/CloneTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/CloneTestCase.java?rev=1300952&r1=1300951&r2=1300952&view=diff
==============================================================================
--- commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/CloneTestCase.java (original)
+++ commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/CloneTestCase.java Thu Mar 15 12:24:52 2012
@@ -18,10 +18,12 @@ package org.apache.commons.beanutils2;
*/
import static org.apache.commons.beanutils2.BeanUtils.on;
-import static org.junit.Assert.assertArrayEquals;
+import static org.apache.commons.beanutils2.TestBeanUtils.assertReadWritePropertiesEquals;
+import static org.apache.commons.beanutils2.TestBeanUtils.assertShallow;
+import static org.apache.commons.beanutils2.TestBeanUtils.changeArrayProperties;
+import static org.apache.commons.beanutils2.TestBeanUtils.changeScalarProperties;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Before;
@@ -31,6 +33,7 @@ public class CloneTestCase
{
private TestBean original;
+ private TestBean defaults;
private TestBean clone;
@@ -38,12 +41,14 @@ public class CloneTestCase
public void setUp()
{
original = new TestBean();
+ defaults = new TestBean();
}
@After
public void tearDown()
{
original = null;
+ defaults = null;
clone = null;
}
@@ -51,16 +56,17 @@ public class CloneTestCase
public void cloneTestBean()
throws Exception
{
- clone = on( new TestBean() ).cloneBean();
+ clone = on( defaults ).cloneBean();
assertNotNull( "Clone is null!", clone );
- assertReadWritePropertiesEquals( new TestBean(), clone );
+ // we can not simply call assertEquals because of the nested properties in TestBean
+ assertReadWritePropertiesEquals( defaults, clone );
}
@Test
public void cloneWithChangedScalarProperties()
throws Exception
{
- changeScalarProperties();
+ changeScalarProperties( original );
clone = on( original ).cloneBean();
assertNotNull( "Clone is null!", clone );
@@ -68,40 +74,17 @@ public class CloneTestCase
assertReadWritePropertiesEquals( original, clone );
}
- private void changeScalarProperties()
- {
- original.setBooleanProperty( false );
- // booleanSecond is left at true
- original.setByteProperty( (byte) 111 );
- original.setDoubleProperty( 432.0 );
- // floatProperty is left at 123.0
- original.setIntProperty( 543 );
- original.setLongProperty( 123456789l );
- original.setNullProperty( "Non-null value" );
- original.setShortProperty( (short) 654 );
- // stringProperty is left at "This is a string"
- }
-
@Test
public void cloneWithChangedArrayProperties()
throws Exception
{
- changeArrayProperties();
+ changeArrayProperties( original );
clone = on( original ).cloneBean();
assertNotNull( clone );
-
assertReadWritePropertiesEquals( original, clone );
}
- private void changeArrayProperties()
- {
- int intArray[] = new int[] { 123, 456, 789 };
- String stringArray[] = new String[] { "New String 0", "New String 1" };
- original.setIntArray( intArray );
- original.setStringArray( stringArray );
- }
-
@Test
public void cloneWithChangedWriteOnlyProperty()
throws Exception
@@ -114,7 +97,7 @@ public class CloneTestCase
// The value of writeOnlyProperty can not be read out from original, so it must have the
// original value
- assertEquals( "writeOnlyProperty has been changed on clone!", new TestBean().getWriteOnlyPropertyValue(),
+ assertEquals( "writeOnlyProperty has been changed on clone!", defaults.getWriteOnlyPropertyValue(),
clone.getWriteOnlyPropertyValue() );
}
@@ -127,52 +110,6 @@ public class CloneTestCase
{
clone = on( original ).cloneBean();
- assertTrue(clone.getAnotherNested() == original.getAnotherNested());
- assertTrue(clone.getDateArrayProperty() == original.getDateArrayProperty());
- assertTrue(clone.getDateProperty() == original.getDateProperty());
- assertTrue(clone.getDateProperty() == original.getDateProperty());
- assertTrue(clone.getDupProperty() == original.getDupProperty());
- assertTrue(clone.getIntArray() == original.getIntArray());
- assertTrue(clone.getMapProperty() == original.getMapProperty());
- assertTrue(clone.getStringArray() == original.getStringArray());
- assertTrue(clone.getStringProperty() == original.getStringProperty());
+ assertShallow( original, clone );
}
-
- /**
- * Asserts that all properties that are readable and writable on {@code actual} are equal to those on
- * {@code expected}.
- *
- * @param expected the {@code TestBean} with the expected properties.
- * @param actual the {@code TestBean} with the actual values.
- */
- private static void assertReadWritePropertiesEquals( TestBean expected, TestBean actual )
- {
- assertEquals( "Property 'anotherNested' is not equal!", expected.getAnotherNested(), actual.getAnotherNested() );
- assertEquals( "Property 'booleanProperty' is not equal!", expected.getBooleanProperty(),
- actual.getBooleanProperty() );
- assertEquals( "Property 'booleanSecond' is not equal!", expected.isBooleanSecond(), actual.isBooleanSecond() );
- assertEquals( "Property 'byteProperty' is not equal!", expected.getByteProperty(), actual.getByteProperty() );
- assertArrayEquals( "Property 'DateArrayProperty' is not equal!", expected.getDateArrayProperty(),
- actual.getDateArrayProperty() );
- assertEquals( "Property 'dateProperty' is not equal!", expected.getDateProperty(), actual.getDateProperty() );
- assertEquals( "Property 'doubleProperty' is not equal!", expected.getDoubleProperty(),
- actual.getDoubleProperty(), 0.0 );
- assertArrayEquals( "Property 'dupProperty' is not equal!", expected.getDupProperty(), actual.getDupProperty() );
- assertEquals( "Property 'floatProperty' is not equal!", expected.getFloatProperty(), actual.getFloatProperty(),
- 0.0 );
- assertArrayEquals( "Property 'intArrayProperty' is not equal!", expected.getIntArray(), actual.getIntArray() );
- assertEquals( "Property 'intProperty' is not equal!", expected.getIntProperty(), actual.getIntProperty() );
- assertEquals( "Property 'invalidBoolean' is not equal!", expected.getInvalidBoolean(),
- actual.getInvalidBoolean() );
- assertEquals( "Property 'listIndexed' is not equal!", expected.getListIndexed(), actual.getListIndexed() );
- assertEquals( "Property 'longProperty' is not equal!", expected.getLongProperty(), actual.getLongProperty() );
- assertEquals( "Property 'mapProperty' is not equal!", expected.getMapProperty(), actual.getMapProperty() );
- assertEquals( "Property 'nested' is not equal!", expected.getNested(), actual.getNested() );
- assertEquals( "Property 'nullProperty' is not equal!", expected.getNullProperty(), actual.getNullProperty() );
- assertEquals( "Property 'shortProperty' is not equal!", expected.getShortProperty(), actual.getShortProperty() );
- assertArrayEquals( "Property 'stringArray' is not equal!", expected.getStringArray(), actual.getStringArray() );
- assertEquals( "Property 'stringProperty' is not equal!", expected.getStringProperty(),
- actual.getStringProperty() );
- }
-
}
Modified: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/PopulateTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/PopulateTestCase.java?rev=1300952&r1=1300951&r2=1300952&view=diff
==============================================================================
--- commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/PopulateTestCase.java (original)
+++ commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/PopulateTestCase.java Thu Mar 15 12:24:52 2012
@@ -18,8 +18,8 @@ package org.apache.commons.beanutils2;
*/
import static org.apache.commons.beanutils2.BeanUtils.on;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -34,6 +34,7 @@ public class PopulateTestCase
{
private TestBean target;
+ private TestBean defaults;
private Map<String, Object> properties;
@@ -41,6 +42,7 @@ public class PopulateTestCase
public void setUp()
{
target = new TestBean();
+ defaults = new TestBean();
properties = new HashMap<String, Object>();
}
@@ -48,6 +50,7 @@ public class PopulateTestCase
public void tearDown()
{
target = null;
+ defaults = null;
properties = null;
}
@@ -56,7 +59,7 @@ public class PopulateTestCase
throws Exception
{
on( target ).populate( properties );
- assertTrue( target.equals( new TestBean() ) );
+ assertTrue( target.equals( defaults ) );
}
@Test( expected = NullPointerException.class )
@@ -72,7 +75,7 @@ public class PopulateTestCase
{
properties.put( null, new Object() );
on( target ).populate( properties );
- assertTrue( target.equals( new TestBean() ) );
+ assertTrue( target.equals( defaults ) );
}
@Test
@@ -91,7 +94,7 @@ public class PopulateTestCase
{
properties.put( "unkown", "String value" );
on( target ).populate( properties );
- assertTrue( target.equals( new TestBean() ) );
+ assertEquals( defaults, target ) ;
}
@Test( expected = IllegalArgumentException.class )
@@ -121,17 +124,11 @@ public class PopulateTestCase
private void validateArrayPropertiesOnTarget()
{
- int[] intArray = target.getIntArray();
- assertNotNull( "intArray is not present", intArray );
- assertEquals( "intArray has the worng length", 3, intArray.length );
- assertEquals( "intArray[0] has the wrong value", 123, intArray[0] );
- assertEquals( "intArray[1] has the wrong value", 456, intArray[1] );
- assertEquals( "intArray[2] has the wrong value", 789, intArray[2] );
- String[] stringArray = target.getStringArray();
- assertNotNull( "stringArray is not present", stringArray );
- assertEquals( "stringArray has the wrong length", 2, stringArray.length );
- assertEquals( "stringArray[0] has the wrong value", "New String 0", stringArray[0] );
- assertEquals( "stringArray[1] has the wrong value", "New String 1", stringArray[1] );
+ int[] expectedInts = (int[]) properties.get( "intArray" );
+ assertArrayEquals( expectedInts, target.getIntArray() );
+
+ String[] expectedStrings = (String[]) properties.get( "stringArray" );
+ assertArrayEquals( expectedStrings, target.getStringArray() );
}
@Test
@@ -146,35 +143,76 @@ public class PopulateTestCase
private void setUpScalarProperties()
{
properties.put( "booleanProperty", false );
- // booleanSecond is left at true
+ // booleanSecond is left at default value
properties.put( "byteProperty", (byte) 111 );
properties.put( "doubleProperty", 432.0 );
- // floatProperty is left at 123.0
+ // floatProperty is left at default value
properties.put( "intProperty", 543 );
properties.put( "longProperty", 123456789l );
properties.put( "nullProperty", "Non-null value" );
properties.put( "shortProperty", (short) 654 );
- // stringProperty is left at "This is a string"
+ // stringProperty is left at default value
properties.put( "writeOnlyProperty", "New writeOnlyProperty value" );
properties.put( "readOnlyProperty", "New readOnlyProperty value" );
}
private void validateScalarPropertiesOnTarget()
{
- assertEquals( "booleanProperty has the wrong value!", false, target.getBooleanProperty() );
- assertEquals( "booleanSecond has the wrong value!", true, target.isBooleanSecond() );
- assertEquals( "byteProperty has the wrong value!", (byte) 111, target.getByteProperty() );
- assertEquals( "doubleProperty has the wrong value!", 432.0, target.getDoubleProperty(), 0.005 );
- assertEquals( "floatProperty has the wrong value!", (float) 123.0, target.getFloatProperty(), (float) 0.005 );
- assertEquals( "intProperty has the wrong value!", 543, target.getIntProperty() );
- assertEquals( "longProperty has the wrong value!", 123456789l, target.getLongProperty() );
- assertEquals( "nullProperty has the wrong value!", "Non-null value", target.getNullProperty() );
- assertEquals( "shortProperty has the wrong value!", (short) 654, target.getShortProperty() );
- assertEquals( "stringProperty has the wrong value!", "This is a string", target.getStringProperty() );
- assertEquals( "writeOnlyProperty has the wrong value!", "New writeOnlyProperty value",
+ boolean expectedBoolean = (Boolean) properties.get( "booleanProperty" );
+ // was left at default value
+ boolean expectedBooleanSecond = defaults.isBooleanSecond();
+ byte expectedByte = (Byte) properties.get( "byteProperty" );
+ double expectedDouble = (Double) properties.get( "doubleProperty" );
+ // was left at default
+ float expectedFloat = defaults.getFloatProperty();
+ int expectedInt = (Integer) properties.get( "intProperty" );
+ long expectedLong = (Long) properties.get( "longProperty" );
+ String expectedNull = (String) properties.get( "nullProperty" );
+ short expectedShort = (Short) properties.get( "shortProperty" );
+ String expectedString = defaults.getStringProperty();
+ String expectedWriteOnly = (String) properties.get( "writeOnlyProperty" );
+ String expectedReadOnly = defaults.getReadOnlyProperty();
+
+ assertEquals( "booleanProperty has the wrong value!", expectedBoolean, target.getBooleanProperty() );
+ assertEquals( "booleanSecond has the wrong value!", expectedBooleanSecond, target.isBooleanSecond() );
+ assertEquals( "byteProperty has the wrong value!", expectedByte, target.getByteProperty() );
+ assertEquals( "doubleProperty has the wrong value!", expectedDouble, target.getDoubleProperty(), 0.005 );
+ assertEquals( "floatProperty has the wrong value!", expectedFloat, target.getFloatProperty(), (float) 0.005 );
+ assertEquals( "intProperty has the wrong value!", expectedInt, target.getIntProperty() );
+ assertEquals( "longProperty has the wrong value!", expectedLong, target.getLongProperty() );
+ assertEquals( "nullProperty has the wrong value!", expectedNull, target.getNullProperty() );
+ assertEquals( "shortProperty has the wrong value!", expectedShort, target.getShortProperty() );
+ assertEquals( "stringProperty has the wrong value!", expectedString, target.getStringProperty() );
+ assertEquals( "writeOnlyProperty has the wrong value!", expectedWriteOnly,
target.getWriteOnlyPropertyValue() );
- assertEquals( "readOnlyProperty has the wrong value!", new TestBean().getReadOnlyProperty(),
+ assertEquals( "readOnlyProperty has the wrong value!", expectedReadOnly,
target.getReadOnlyProperty() );
}
+ /**
+ * Makes sure that read only properties are ignored
+ */
+ @Test
+ public void populateReadOnly()
+ throws Exception
+ {
+ properties.put( "readOnlyProperty", "Some Value" );
+ on( target ).populate( properties );
+ assertTrue( target.equals( defaults ) );
+ }
+
+ /**
+ * Makes sure, that ignoring read only property does not cause writable properties to be ignored
+ */
+ @Test
+ public void populateReadOnlyAndOther()
+ throws Exception
+ {
+ properties.put( "readOnlyProperty", "Some value" );
+ properties.put( "stringProperty", "Some other value" );
+ on( target ).populate( properties );
+
+ defaults.setStringProperty( "Some other value" );
+ assertTrue( target.equals( defaults ) );
+ }
}
Added: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/TestBeanUtils.java
URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/TestBeanUtils.java?rev=1300952&view=auto
==============================================================================
--- commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/TestBeanUtils.java (added)
+++ commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/TestBeanUtils.java Thu Mar 15 12:24:52 2012
@@ -0,0 +1,111 @@
+package org.apache.commons.beanutils2;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+final class TestBeanUtils
+{
+ private TestBeanUtils()
+ {
+ // private constructor to prevent instantiation
+ }
+
+ public static void changeArrayProperties( TestBean testBean )
+ {
+ int intArray[] = new int[] { 123, 456, 789 };
+ String stringArray[] = new String[] { "New String 0", "New String 1" };
+ testBean.setIntArray( intArray );
+ testBean.setStringArray( stringArray );
+ }
+
+ public static void changeScalarProperties( TestBean testBean )
+ {
+ testBean.setBooleanProperty( false );
+ // booleanSecond is left at true
+ testBean.setByteProperty( (byte) 111 );
+ testBean.setDoubleProperty( 432.0 );
+ // floatProperty is left at 123.0
+ testBean.setIntProperty( 543 );
+ testBean.setLongProperty( 123456789l );
+ testBean.setNullProperty( "Non-null value" );
+ testBean.setShortProperty( (short) 654 );
+ // stringProperty is left at "This is a string"
+ }
+
+ /**
+ * Asserts that all properties that are readable and writable on {@code actual} are equal to those on
+ * {@code expected}.
+ *
+ * @param expected the {@code TestBean} with the expected properties.
+ * @param actual the {@code TestBean} with the actual values.
+ */
+ public static void assertReadWritePropertiesEquals( TestBean expected, TestBean actual )
+ {
+ assertEquals( "Property 'anotherNested' is not equal!", expected.getAnotherNested(), actual.getAnotherNested() );
+ assertEquals( "Property 'booleanProperty' is not equal!", expected.getBooleanProperty(),
+ actual.getBooleanProperty() );
+ assertEquals( "Property 'booleanSecond' is not equal!", expected.isBooleanSecond(), actual.isBooleanSecond() );
+ assertEquals( "Property 'byteProperty' is not equal!", expected.getByteProperty(), actual.getByteProperty() );
+ assertArrayEquals( "Property 'DateArrayProperty' is not equal!", expected.getDateArrayProperty(),
+ actual.getDateArrayProperty() );
+ assertEquals( "Property 'dateProperty' is not equal!", expected.getDateProperty(), actual.getDateProperty() );
+ assertEquals( "Property 'doubleProperty' is not equal!", expected.getDoubleProperty(),
+ actual.getDoubleProperty(), 0.0 );
+ assertArrayEquals( "Property 'dupProperty' is not equal!", expected.getDupProperty(), actual.getDupProperty() );
+ assertEquals( "Property 'floatProperty' is not equal!", expected.getFloatProperty(), actual.getFloatProperty(),
+ 0.0 );
+ assertArrayEquals( "Property 'intArrayProperty' is not equal!", expected.getIntArray(), actual.getIntArray() );
+ assertEquals( "Property 'intProperty' is not equal!", expected.getIntProperty(), actual.getIntProperty() );
+ assertEquals( "Property 'invalidBoolean' is not equal!", expected.getInvalidBoolean(),
+ actual.getInvalidBoolean() );
+ assertEquals( "Property 'listIndexed' is not equal!", expected.getListIndexed(), actual.getListIndexed() );
+ assertEquals( "Property 'longProperty' is not equal!", expected.getLongProperty(), actual.getLongProperty() );
+ assertEquals( "Property 'mapProperty' is not equal!", expected.getMapProperty(), actual.getMapProperty() );
+ assertEquals( "Property 'nested' is not equal!", expected.getNested(), actual.getNested() );
+ assertEquals( "Property 'nullProperty' is not equal!", expected.getNullProperty(), actual.getNullProperty() );
+ assertEquals( "Property 'shortProperty' is not equal!", expected.getShortProperty(), actual.getShortProperty() );
+ assertArrayEquals( "Property 'stringArray' is not equal!", expected.getStringArray(), actual.getStringArray() );
+ assertEquals( "Property 'stringProperty' is not equal!", expected.getStringProperty(),
+ actual.getStringProperty() );
+ }
+
+ /**
+ * Asserts, that complex properties of {@code referenced} are the same as in {@code referencing} (that they are just
+ * referenced).
+ */
+ public static void assertShallow( TestBean referenced, TestBean referencing )
+ {
+ assertSame( referenced.getAnotherNested(), referencing.getAnotherNested() );
+ assertSame( referenced.getDateArrayProperty(), referencing.getDateArrayProperty() );
+ assertSame( referenced.getDateProperty(), referencing.getDateProperty() );
+ assertSame( referenced.getDateProperty(), referencing.getDateProperty() );
+ assertSame( referenced.getDupProperty(), referencing.getDupProperty() );
+ assertSame( referenced.getIntArray(), referencing.getIntArray() );
+ assertSame( referenced.getMapProperty(), referencing.getMapProperty() );
+ // mappedNested and nested are lazy initialized, so the following getXXX calls will create new instances on
+ // both, clone and original, causing the assertions to fail.
+ // assertSame(clone.getMappedNested(), original.getMappedNested());
+ // assertSame(clone.getNested(), original.getNested());
+ assertSame( referenced.getStringArray(), referencing.getStringArray() );
+ assertSame( referenced.getStringProperty(), referencing.getStringProperty() );
+ }
+
+}
Propchange: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/TestBeanUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/TestBeanUtils.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/TestBeanUtils.java
------------------------------------------------------------------------------
svn:mime-type = text/plain