commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rdon...@apache.org
Subject cvs commit: jakarta-commons/beanutils/optional/bean-collections/src/test/org/apache/commons/beanutils TestBeanMap.java
Date Tue, 11 May 2004 22:46:26 GMT
rdonkin     2004/05/11 15:46:26

  Added:       beanutils/optional/bean-collections/src/test/org/apache/commons/beanutils
                        TestBeanMap.java
  Log:
  Added BeanMap from collections. (Thanks Stephen)
  
  Revision  Changes    Path
  1.1                  jakarta-commons/beanutils/optional/bean-collections/src/test/org/apache/commons/beanutils/TestBeanMap.java
  
  Index: TestBeanMap.java
  ===================================================================
  /*
   *  Copyright 2001-2004 The Apache Software Foundation
   *
   *  Licensed 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.
   */
  package org.apache.commons.beanutils;
  
  import java.io.Serializable;
  import java.lang.reflect.Method;
  import java.util.Map;
  
  import junit.framework.Test;
  import junit.textui.TestRunner;
  
  import org.apache.commons.collections.map.AbstractTestMap;
  import org.apache.commons.collections.BulkTest;
  
  /**
   * Test cases for BeanMap
   * 
   * @version $Revision: 1.1 $ $Date: 2004/05/11 22:46:26 $
   * 
   * @author Morgan Delagrange
   * @author Stephen Colebourne
   */
  public class TestBeanMap extends AbstractTestMap {
  
      public TestBeanMap(String testName) {
          super(testName);
      }
      
      public static void main(String[] args) {
          TestRunner.run(suite());
      }
  
      public static Test suite() {
          return BulkTest.makeSuite(TestBeanMap.class);
      }
  
  /*
    note to self.  The getter and setter methods were generated by copying the
    field declarations and using the following regular expression search and
    replace:
  
    From:
          private \(.*\) some\(.*\);
    To:
          public \1 getSome\2Value() {
              return some\2;
          }
          public void setSome\2Value(\1 value) {
              some\2 = value;
          } 
  
    Also note:  The sample keys and mappings were generated manually.
  */
  
  
      public static class BeanWithProperties implements Serializable {
          private int someInt;
          private long someLong;
          private double someDouble;
          private float someFloat;
          private short someShort;
          private byte someByte;
          private char someChar;
          private Integer someInteger;
          private String someString;
          private Object someObject;
  
          public int getSomeIntValue() {
              return someInt;
          }
          public void setSomeIntValue(int value) {
              someInt = value;
          }
  
          public long getSomeLongValue() {
              return someLong;
          }
          public void setSomeLongValue(long value) {
              someLong = value;
          }
  
          public double getSomeDoubleValue() {
              return someDouble;
          }
          public void setSomeDoubleValue(double value) {
              someDouble = value;
          }
  
          public float getSomeFloatValue() {
              return someFloat;
          }
          public void setSomeFloatValue(float value) {
              someFloat = value;
          }
  
          public short getSomeShortValue() {
              return someShort;
          }
          public void setSomeShortValue(short value) {
              someShort = value;
          }
  
          public byte getSomeByteValue() {
              return someByte;
          }
          public void setSomeByteValue(byte value) {
              someByte = value;
          }
  
          public char getSomeCharValue() {
              return someChar;
          }
          public void setSomeCharValue(char value) {
              someChar = value;
          }
  
          public String getSomeStringValue() {
              return someString;
          }
          public void setSomeStringValue(String value) {
              someString = value;
          }
  
          public Integer getSomeIntegerValue() {
              return someInteger;
          }
          public void setSomeIntegerValue(Integer value) {
              someInteger = value;
          }
  
          public Object getSomeObjectValue() {
              return someObject;
          }
          public void setSomeObjectValue(Object value) {
              someObject = value;
          }
      }
      
      // note to self.  The Sample keys were generated by copying the field
      // declarations and using the following regular expression search and replace:
      //
      // From:
      //    private \(.*\) some\(.*\);
      // To:
      //    "some\2Value",
      //
      // Then, I manually added the "class" key, which is a property that exists for
      // all beans (and all objects for that matter.
      public Object[] getSampleKeys() {
          Object[] keys = new Object[] {
              "someIntValue",
              "someLongValue",
              "someDoubleValue",
              "someFloatValue",
              "someShortValue",
              "someByteValue",
              "someCharValue",
              "someIntegerValue",
              "someStringValue",
              "someObjectValue",
              "class",
          };
          return keys;
      }
  
      /**
       *  An object value that will be stored in the bean map as a value.  Need
       *  to save this externally so that we can make sure the object instances
       *  are equivalent since getSampleValues() would otherwise construct a new
       *  and different Object each time.
       **/
      private Object objectInFullMap = new Object();
  
      // note to self: the sample values were created manually
      public Object[] getSampleValues() {
          Object[] values = new Object[] {
              new Integer(1234),
              new Long(1298341928234L),
              new Double(123423.34),
              new Float(1213332.12f),
              new Short((short)134),
              new Byte((byte)10),
              new Character('a'),
              new Integer(1432),
              "SomeStringValue",
              objectInFullMap,
              BeanWithProperties.class,
          };
          return values;
      }
  
      public Object[] getNewSampleValues() {
          Object[] values = new Object[] {
              new Integer(223),
              new Long(23341928234L),
              new Double(23423.34),
              new Float(213332.12f),
              new Short((short)234),
              new Byte((byte)20),
              new Character('b'),
              new Integer(232),
              "SomeNewStringValue",
              new Object(),
              null,
          };
          return values;
      }
  
      /**
       * Values is a dead copy in BeanMap, so refresh each time.
       */
      public void verifyValues() {
          values = map.values();
          super.verifyValues();
      }
  
      /**
       * The mappings in a BeanMap are fixed on the properties the underlying
       * bean has.  Adding and removing mappings is not possible, thus this
       * method is overridden to return false.
       */
      public boolean isPutAddSupported() {
          return false;
      }
  
      /**
       * The mappings in a BeanMap are fixed on the properties the underlying
       * bean has.  Adding and removing mappings is not possible, thus this
       * method is overridden to return false.
       */
      public boolean isRemoveSupported() {
          return false;
      }
  
      public Map makeFullMap() {
          // note: These values must match (i.e. .equals() must return true)
          // those returned from getSampleValues().
          BeanWithProperties bean = new BeanWithProperties();
          bean.setSomeIntValue(1234);
          bean.setSomeLongValue(1298341928234L);
          bean.setSomeDoubleValue(123423.34);
          bean.setSomeFloatValue(1213332.12f);
          bean.setSomeShortValue((short)134);
          bean.setSomeByteValue((byte)10);
          bean.setSomeCharValue('a');
          bean.setSomeIntegerValue(new Integer(1432));
          bean.setSomeStringValue("SomeStringValue");
          bean.setSomeObjectValue(objectInFullMap);
          return new BeanMap(bean);
      }
  
      public Map makeEmptyMap() {
          return new BeanMap();
      }
  
      public String[] ignoredTests() {
          // Ignore the serialization tests on collection views.
          return new String[] {
           "TestBeanMap.bulkTestMapEntrySet.testCanonicalEmptyCollectionExists",
           "TestBeanMap.bulkTestMapEntrySet.testCanonicalFullCollectionExists",
           "TestBeanMap.bulkTestMapKeySet.testCanonicalEmptyCollectionExists",
           "TestBeanMap.bulkTestMapKeySet.testCanonicalFullCollectionExists",
           "TestBeanMap.bulkTestMapValues.testCanonicalEmptyCollectionExists",
           "TestBeanMap.bulkTestMapValues.testCanonicalFullCollectionExists",
           "TestBeanMap.bulkTestMapEntrySet.testSimpleSerialization",
           "TestBeanMap.bulkTestMapKeySet.testSimpleSerialization",
           "TestBeanMap.bulkTestMapEntrySet.testSerializeDeserializeThenCompare",
           "TestBeanMap.bulkTestMapKeySet.testSerializeDeserializeThenCompare"
          };
      }
  
      /**
       * Need to override this method because the "clear()" method on the bean
       * map just returns the bean properties to their default states.  It does
       * not actually remove the mappings as per the map contract.  The default
       * testClear() methods checks that the clear method throws an
       * UnsupportedOperationException since this class is not add/remove
       * modifiable.  In our case though, we do not always throw that exception.
       */
      public void testMapClear() {
          //TODO: make sure a call to BeanMap.clear returns the bean to its
          //default initialization values.
      }
  
      /**
       * Need to override this method because the "put()" method on the bean
       * doesn't work for this type of Map.
       */
      public void testMapPut() {
          // see testBeanMapPutAllWriteable
      }
  
      public void testBeanMapClone() {
          BeanMap map = (BeanMap)makeFullMap();
          try {
              BeanMap map2 = (BeanMap)((BeanMap)map).clone();
  
              // make sure containsKey is working to verify the bean was cloned
              // ok, and the read methods were properly initialized
              Object[] keys = getSampleKeys();
              for(int i = 0; i < keys.length; i++) {
                  assertTrue("Cloned BeanMap should contain the same keys",
                             map2.containsKey(keys[i]));
              }
          } catch (CloneNotSupportedException exception) {
              fail("BeanMap.clone() should not throw a " +
                   "CloneNotSupportedException when clone should succeed.");
          }
      }
  
      public void testBeanMapPutAllWriteable() {
          BeanMap map1 = (BeanMap)makeFullMap();
          BeanMap map2 = (BeanMap)makeFullMap();
          map2.put("someIntValue", new Integer(0));
          map1.putAllWriteable(map2);
          assertEquals(map1.get("someIntValue"), new Integer(0));
      }
  
      public void testMethodAccessor() throws Exception {
          BeanMap map = (BeanMap) makeFullMap();
          Method method = BeanWithProperties.class.getDeclaredMethod("getSomeIntegerValue",
null);
          assertEquals(method, map.getReadMethod("someIntegerValue"));
      }
      
      public void testMethodMutator() throws Exception {
          BeanMap map = (BeanMap) makeFullMap();
          Method method = BeanWithProperties.class.getDeclaredMethod("setSomeIntegerValue",
new Class[] {Integer.class});
          assertEquals(method, map.getWriteMethod("someIntegerValue"));
      }
      
  }
  
  
  

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


Mime
View raw message