You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by py...@apache.org on 2006/08/17 11:04:10 UTC

svn commit: r432185 - in /incubator/harmony/enhanced/classlib/trunk/modules/luni/src: main/java/java/util/EnumMap.java test/java/tests/api/java/util/EnumMapTest.java

Author: pyang
Date: Thu Aug 17 02:04:09 2006
New Revision: 432185

URL: http://svn.apache.org/viewvc?rev=432185&view=rev
Log:
Patch applied for HARMONY-1210([classlib][luni] new method in java.util.EnumMap)

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/EnumMap.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumMapTest.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/EnumMap.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/EnumMap.java?rev=432185&r1=432184&r2=432185&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/EnumMap.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/EnumMap.java Thu Aug 17 02:04:09 2006
@@ -176,9 +176,21 @@
      *            the value to be associated with the given key
      * @return the value to which this map maps the given key, or null if this
      *         map has no mapping for the given key.
+     * @throws NullPointerException
+     *             if the given key is null
      */
+    @Override
+    @SuppressWarnings("unchecked")
     public V put(K key, V value) {
-        throw new NotYetImplementedException();
+        validateKeyType(key);
+        int keyOrdinal = key.ordinal();
+        if (!hasMapping[keyOrdinal]) {
+            hasMapping[keyOrdinal] = true;
+            mappingsCount++;
+        }
+        V oldValue = (V) values[keyOrdinal];
+        values[keyOrdinal] = value;
+        return oldValue;
     }
 
     /**
@@ -228,6 +240,15 @@
      */
     public Collection<V> values() {
         throw new NotYetImplementedException();
+    }
+
+    private void validateKeyType(Object key) {
+        if(key == null){
+            throw new NullPointerException();
+        }
+        if(!keyType.isInstance(key)){
+            throw new ClassCastException();
+        }
     }
 
     @SuppressWarnings("unchecked")

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumMapTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumMapTest.java?rev=432185&r1=432184&r2=432185&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumMapTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumMapTest.java Thu Aug 17 02:04:09 2006
@@ -67,7 +67,52 @@
         assertNotNull(new EnumMap(Size.Middle.getClass()));
         
     }
+    
+    /**
+     * @tests java.util.EnumMap#put(Object,Object)
+     */
+    @SuppressWarnings( { "unchecked", "boxing" })
+    public void test_putLjava_lang_ObjectLjava_lang_Object() {
+        EnumMap enumSizeMap = new EnumMap(Size.class);
+        try {
+            enumSizeMap.put(Color.Red, 2);
+            fail("Expected ClassCastException"); //$NON-NLS-1$
+        } catch (ClassCastException e) {
+            // Expected
+        }
+        assertNull("Return non-null for non mapped key", enumSizeMap.put( //$NON-NLS-1$
+                Size.Small, 1));
 
+        EnumMap enumColorMap = new EnumMap<Color, Double>(Color.class);
+        try {
+            enumColorMap.put(Size.Big, 2);
+            fail("Expected ClassCastException"); //$NON-NLS-1$
+        } catch (ClassCastException e) {
+            // Expected
+        }
+        try {
+            enumColorMap.put(null, 2);
+            fail("Expected NullPointerException"); //$NON-NLS-1$
+        } catch (NullPointerException e) {
+            // Expected
+        }
+        assertNull("Return non-null for non mapped key", enumColorMap.put( //$NON-NLS-1$
+                Color.Green, 2));
+        assertEquals("Return wrong value", 2, enumColorMap.put(Color.Green, //$NON-NLS-1$
+                new Double(4)));
+        assertEquals("Return wrong value", new Double(4), enumColorMap.put( //$NON-NLS-1$
+                Color.Green, new Integer("3")));//$NON-NLS-1$
+        assertEquals("Return wrong value", new Integer("3"), enumColorMap.put( //$NON-NLS-1$//$NON-NLS-2$
+                Color.Green, null));
+        Float f = new Float("3.4");//$NON-NLS-1$
+        assertNull("Return non-null for non mapped key", enumColorMap.put( //$NON-NLS-1$
+                Color.Green, f));
+        assertNull("Return non-null for non mapped key", enumColorMap.put( //$NON-NLS-1$
+                Color.Blue, 2));
+        assertEquals("Return wrong value", 2, enumColorMap.put(Color.Blue, //$NON-NLS-1$
+                new Double(4)));
+    }
+    
     /**
      * Sets up the fixture.
      */