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/16 08:55:42 UTC

svn commit: r431847 - 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: Tue Aug 15 23:55:42 2006
New Revision: 431847

URL: http://svn.apache.org/viewvc?rev=431847&view=rev
Log:
Patch applied for HARMONY-1203 ([classlib][luni] new constructor of java.util.EnumMap - EnumMap(Class<K>))

Added:
    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

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=431847&r1=431846&r2=431847&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 Tue Aug 15 23:55:42 2006
@@ -19,10 +19,22 @@
 
 import org.apache.harmony.luni.util.NotYetImplementedException;
 
-public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> implements Map<K, V>,
-        Serializable, Cloneable {
+public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> implements
+        Map<K, V>, Serializable, Cloneable {
     private static final long serialVersionUID = 458661240069192865L;
 
+    Class<K> keyType;
+
+    transient Enum keys[];
+
+    transient Object values[];
+
+    transient boolean hasMapping[];
+
+    transient int mappingsCount;
+
+    transient int enumSize;
+
     /**
      * Constructs an empty enum map using the given key type.
      * 
@@ -32,7 +44,7 @@
      *             if the keyType is null
      */
     public EnumMap(Class<K> keyType) {
-        throw new NotYetImplementedException();
+        initialization(keyType);
     }
 
     /**
@@ -216,6 +228,15 @@
      */
     public Collection<V> values() {
         throw new NotYetImplementedException();
+    }
+
+    @SuppressWarnings("unchecked")
+    private void initialization(Class<K> type) {
+        keyType = type;
+        keys = keyType.getEnumConstants();
+        enumSize = keys.length;
+        values = new Object[enumSize];
+        hasMapping = new boolean[enumSize];
     }
 
 }

Added: 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=431847&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumMapTest.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumMapTest.java Tue Aug 15 23:55:42 2006
@@ -0,0 +1,86 @@
+/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * 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 tests.api.java.util;
+
+import java.util.EnumMap;
+
+import junit.framework.TestCase;
+
+public class EnumMapTest extends TestCase {
+    enum Size {
+        Small, Middle, Big {};
+    }
+
+    enum Color {
+        Red, Green, Blue {};
+    }
+
+    enum Empty {
+        //Empty
+    }
+
+    /**
+     * @tests java.util.EnumMap#EnumMap(Class)
+     */
+    @SuppressWarnings("unchecked")
+    public void test_ConstructorLjava_lang_Class() {
+        try {
+            new EnumMap((Class) null);
+            fail("Expected NullPointerException"); //$NON-NLS-1$
+        } catch (NullPointerException e) {
+            // Expected
+        }
+        
+        try {
+            new EnumMap(Size.Big.getClass());
+            fail("Expected NullPointerException"); //$NON-NLS-1$
+        } catch (NullPointerException e) {
+            // Expected
+        }
+
+        try {
+            new EnumMap(Integer.class);
+            fail("Expected NullPointerException"); //$NON-NLS-1$
+        } catch (NullPointerException e) {
+            // Expected
+        }
+
+        assertNotNull(new EnumMap<Color, Double>(Color.class));
+        
+        assertNotNull(new EnumMap<Empty, Double>(Empty.class));
+
+        assertNotNull(new EnumMap(Size.class));
+        
+        assertNotNull(new EnumMap(Size.Middle.getClass()));
+        
+    }
+
+    /**
+     * Sets up the fixture.
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    /**
+     * Tears down the fixture.
+     */
+    @Override
+    protected void tearDown() throws Exception{
+        super.tearDown();
+    }
+}