You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by to...@apache.org on 2008/03/04 09:02:45 UTC

svn commit: r633384 [12/15] - in /harmony/enhanced/classlib/branches/java6: depends/build/platform/ depends/files/ depends/files/bcprov/ doc/ doc/classlib/ make/ make/linux.ia64/ make/linux.ppc32/ make/linux.ppc64/ make/linux.x86.libstdc++6/ make/linux...

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/UnknownHostExceptionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/UnknownHostExceptionTest.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/UnknownHostExceptionTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/UnknownHostExceptionTest.java Tue Mar  4 00:02:13 2008
@@ -17,45 +17,52 @@
 
 package org.apache.harmony.luni.tests.java.net;
 
-public class UnknownHostExceptionTest extends junit.framework.TestCase {
+import java.net.UnknownHostException;
 
-	/**
-	 * @tests java.net.UnknownHostException#UnknownHostException()
-	 */
-	public void test_Constructor() {
-		// Test for method java.net.UnknownHostException()
-                try {
-                        java.net.InetAddress.getByName("a.b.c.x.y.z.com");
-                } catch (java.net.UnknownHostException e) {
-                        return;
-                }
-                fail("Failed to generate Exception");
-	}
-
-	/**
-	 * @tests java.net.UnknownHostException#UnknownHostException(java.lang.String)
-	 */
-	public void test_ConstructorLjava_lang_String() {
-		// Test for method java.net.UnknownHostException(java.lang.String)
-                try {
-                        java.net.InetAddress.getByName("a.b.c.x.y.z.com");
-                } catch (java.net.UnknownHostException e) {
-                        return;
-                }
-                fail("Failed to generate Exception");
-	}
-
-	/**
-	 * Sets up the fixture, for example, open a network connection. This method
-	 * is called before a test is executed.
-	 */
-	protected void setUp() {
-	}
-
-	/**
-	 * Tears down the fixture, for example, close a network connection. This
-	 * method is called after a test is executed.
-	 */
-	protected void tearDown() {
-	}
+import junit.framework.TestCase;
+
+public class UnknownHostExceptionTest extends TestCase {
+
+    /**
+     * @tests java.net.UnknownHostException#UnknownHostException()
+     */
+    public void test_Constructor() {
+        try {
+            if (true) {
+                throw new UnknownHostException();
+            }
+            fail("Failed to generate Exception");
+        } catch (UnknownHostException e) {
+            // Expected
+        }
+    }
+
+    /**
+     * @tests java.net.UnknownHostException#UnknownHostException(java.lang.String)
+     */
+    public void test_ConstructorLjava_lang_String() {
+        try {
+            if (true) {
+                throw new UnknownHostException("test");
+            }
+            fail("Failed to generate Exception");
+        } catch (UnknownHostException e) {
+            assertEquals("Threw exception with incorrect message", "test", e
+                    .getMessage());
+        }
+    }
+
+    /**
+     * Sets up the fixture, for example, open a network connection. This method
+     * is called before a test is executed.
+     */
+    protected void setUp() {
+    }
+
+    /**
+     * Tears down the fixture, for example, close a network connection. This
+     * method is called after a test is executed.
+     */
+    protected void tearDown() {
+    }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/UnknownServiceExceptionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/UnknownServiceExceptionTest.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/UnknownServiceExceptionTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/UnknownServiceExceptionTest.java Tue Mar  4 00:02:13 2008
@@ -17,53 +17,51 @@
 
 package org.apache.harmony.luni.tests.java.net;
 
-import java.net.URL;
 import java.net.UnknownServiceException;
 
-public class UnknownServiceExceptionTest extends junit.framework.TestCase {
+import junit.framework.TestCase;
 
-	/**
-	 * @tests java.net.UnknownServiceException#UnknownServiceException()
-	 */
-	public void test_Constructor() throws Exception {
-		// Test for method java.net.UnknownServiceException()
-		try {
-			new URL("file://moo.txt").openConnection().getOutputStream();
-		} catch (UnknownServiceException e) {
-			// correct
-			return;
-		} 
-
-		fail("Exception not thrown");
-	}
-
-	/**
-	 * @tests java.net.UnknownServiceException#UnknownServiceException(java.lang.String)
-	 */
-	public void test_ConstructorLjava_lang_String() {
-		// Test for method java.net.UnknownServiceException(java.lang.String)
-		try {
-			if (true)
-				throw new UnknownServiceException("HelloWorld");
-		} catch (UnknownServiceException e) {
-			assertTrue("Wrong exception message: " + e.toString(), e
-					.getMessage().equals("HelloWorld"));
-			return;
-		}
-		fail("Constructor failed");
-	}
-
-	/**
-	 * Sets up the fixture, for example, open a network connection. This method
-	 * is called before a test is executed.
-	 */
-	protected void setUp() {
-	}
-
-	/**
-	 * Tears down the fixture, for example, close a network connection. This
-	 * method is called after a test is executed.
-	 */
-	protected void tearDown() {
-	}
+public class UnknownServiceExceptionTest extends TestCase {
+
+    /**
+     * @tests java.net.UnknownServiceException#UnknownServiceException()
+     */
+    public void test_Constructor() {
+        try {
+            if (true) {
+                throw new UnknownServiceException();
+            }
+            fail("Exception not thrown");
+        } catch (UnknownServiceException e) {
+            // Expected
+        }
+    }
+
+    /**
+     * @tests java.net.UnknownServiceException#UnknownServiceException(java.lang.String)
+     */
+    public void test_ConstructorLjava_lang_String() {
+        try {
+            if (true) {
+                throw new UnknownServiceException("test");
+            }
+            fail("Constructor failed");
+        } catch (UnknownServiceException e) {
+            assertEquals("Wrong exception message", "test", e.getMessage());
+        }
+    }
+
+    /**
+     * Sets up the fixture, for example, open a network connection. This method
+     * is called before a test is executed.
+     */
+    protected void setUp() {
+    }
+
+    /**
+     * Tears down the fixture, for example, close a network connection. This
+     * method is called after a test is executed.
+     */
+    protected void tearDown() {
+    }
 }

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/HashMapTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/HashMapTest.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/HashMapTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/HashMapTest.java Tue Mar  4 00:02:13 2008
@@ -1,674 +1,678 @@
-/*
- *  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.
- */
-
-package org.apache.harmony.luni.tests.java.util;
-
-import java.util.AbstractMap;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-import org.apache.harmony.testframework.serialization.SerializationTest;
-
-import tests.support.Support_MapTest2;
-import tests.support.Support_UnmodifiableCollectionTest;
-
-public class HashMapTest extends junit.framework.TestCase {
-    class MockMap extends AbstractMap {
-        public Set entrySet() {
-            return null;
-        }
-        public int size(){
-            return 0;
-        }
-    }
-    
-    private static class MockMapNull extends AbstractMap {
-        public Set entrySet() {
-            return null;
-        }
-
-        public int size() {
-            return 10;
-        }
-    }
-    
-	HashMap hm;
-
-	final static int hmSize = 1000;
-
-	static Object[] objArray;
-
-	static Object[] objArray2;
-	{
-		objArray = new Object[hmSize];
-		objArray2 = new Object[hmSize];
-		for (int i = 0; i < objArray.length; i++) {
-			objArray[i] = new Integer(i);
-			objArray2[i] = objArray[i].toString();
-		}
-	}
-
-	/**
-	 * @tests java.util.HashMap#HashMap()
-	 */
-	public void test_Constructor() {
-		// Test for method java.util.HashMap()
-		new Support_MapTest2(new HashMap()).runTest();
-
-		HashMap hm2 = new HashMap();
-		assertEquals("Created incorrect HashMap", 0, hm2.size());
-	}
-
-	/**
-	 * @tests java.util.HashMap#HashMap(int)
-	 */
-	public void test_ConstructorI() {
-		// Test for method java.util.HashMap(int)
-		HashMap hm2 = new HashMap(5);
-		assertEquals("Created incorrect HashMap", 0, hm2.size());
-		try {
-			new HashMap(-1);
-		} catch (IllegalArgumentException e) {
-			return;
-		}
-		fail(
-				"Failed to throw IllegalArgumentException for initial capacity < 0");
-
-		HashMap empty = new HashMap(0);
-		assertNull("Empty hashmap access", empty.get("nothing"));
-		empty.put("something", "here");
-		assertTrue("cannot get element", empty.get("something") == "here");
-	}
-
-	/**
-	 * @tests java.util.HashMap#HashMap(int, float)
-	 */
-	public void test_ConstructorIF() {
-		// Test for method java.util.HashMap(int, float)
-		HashMap hm2 = new HashMap(5, (float) 0.5);
-		assertEquals("Created incorrect HashMap", 0, hm2.size());
-		try {
-			new HashMap(0, 0);
-		} catch (IllegalArgumentException e) {
-			return;
-		}
-		fail(
-				"Failed to throw IllegalArgumentException for initial load factor <= 0");
-
-		HashMap empty = new HashMap(0, 0.75f);
-		assertNull("Empty hashtable access", empty.get("nothing"));
-		empty.put("something", "here");
-		assertTrue("cannot get element", empty.get("something") == "here");
-	}
-
-	/**
-	 * @tests java.util.HashMap#HashMap(java.util.Map)
-	 */
-	public void test_ConstructorLjava_util_Map() {
-		// Test for method java.util.HashMap(java.util.Map)
-		Map myMap = new TreeMap();
-		for (int counter = 0; counter < hmSize; counter++)
-			myMap.put(objArray2[counter], objArray[counter]);
-		HashMap hm2 = new HashMap(myMap);
-		for (int counter = 0; counter < hmSize; counter++)
-			assertTrue("Failed to construct correct HashMap", hm
-					.get(objArray2[counter]) == hm2.get(objArray2[counter]));
-        
-        try {
-            Map mockMap = new MockMap();
-            hm = new HashMap(mockMap);
-            fail("Should throw NullPointerException");
-        } catch (NullPointerException e) {
-            //empty
-        }
-        
-        HashMap map = new HashMap();
-        map.put("a", "a");
-        SubMap map2 = new SubMap(map); 
-        assertTrue(map2.containsKey("a"));
-        assertTrue(map2.containsValue("a"));
-	}
-
-	/**
-	 * @tests java.util.HashMap#clear()
-	 */
-	public void test_clear() {
-		hm.clear();
-		assertEquals("Clear failed to reset size", 0, hm.size());
-		for (int i = 0; i < hmSize; i++)
-			assertNull("Failed to clear all elements",
-					hm.get(objArray2[i]));
-        
-		// Check clear on a large loaded map of Integer keys
-		HashMap<Integer, String> map = new HashMap<Integer, String>();
-        for (int i = -32767; i < 32768; i++) {
-            map.put(i, "foobar");
-        }
-        map.clear();
-        assertEquals("Failed to reset size on large integer map", 0, hm.size());
-        for (int i = -32767; i < 32768; i++) {
-            assertNull("Failed to clear integer map values", map.get(i));
-        }
-	}
-
-	/**
-	 * @tests java.util.HashMap#clone()
-	 */
-	public void test_clone() {
-		// Test for method java.lang.Object java.util.HashMap.clone()
-		HashMap hm2 = (HashMap) hm.clone();
-		assertTrue("Clone answered equivalent HashMap", hm2 != hm);
-		for (int counter = 0; counter < hmSize; counter++)
-			assertTrue("Clone answered unequal HashMap", hm
-					.get(objArray2[counter]) == hm2.get(objArray2[counter]));
-
-		HashMap map = new HashMap();
-		map.put("key", "value");
-		// get the keySet() and values() on the original Map
-		Set keys = map.keySet();
-		Collection values = map.values();
-		assertEquals("values() does not work", 
-				"value", values.iterator().next());
-		assertEquals("keySet() does not work", 
-				"key", keys.iterator().next());
-		AbstractMap map2 = (AbstractMap) map.clone();
-		map2.put("key", "value2");
-		Collection values2 = map2.values();
-		assertTrue("values() is identical", values2 != values);
-		// values() and keySet() on the cloned() map should be different
-		assertEquals("values() was not cloned", 
-				"value2", values2.iterator().next());
-		map2.clear();
-		map2.put("key2", "value3");
-		Set key2 = map2.keySet();
-		assertTrue("keySet() is identical", key2 != keys);
-		assertEquals("keySet() was not cloned", 
-				"key2", key2.iterator().next());
-        
-        // regresion test for HARMONY-4603
-        HashMap hashmap = new HashMap();
-        MockClonable mock = new MockClonable(1);
-        hashmap.put(1, mock);
-        assertEquals(1, ((MockClonable) hashmap.get(1)).i);
-        HashMap hm3 = (HashMap)hashmap.clone();
-        assertEquals(1, ((MockClonable) hm3.get(1)).i);
-        mock.i = 0;
-        assertEquals(0, ((MockClonable) hashmap.get(1)).i);
-        assertEquals(0, ((MockClonable) hm3.get(1)).i);
-	}
-
-	/**
-	 * @tests java.util.HashMap#containsKey(java.lang.Object)
-	 */
-	public void test_containsKeyLjava_lang_Object() {
-		// Test for method boolean
-		// java.util.HashMap.containsKey(java.lang.Object)
-		assertTrue("Returned false for valid key", hm.containsKey(new Integer(
-				876).toString()));
-		assertTrue("Returned true for invalid key", !hm.containsKey("KKDKDKD"));
-
-		HashMap m = new HashMap();
-		m.put(null, "test");
-		assertTrue("Failed with null key", m.containsKey(null));
-		assertTrue("Failed with missing key matching null hash", !m
-				.containsKey(new Integer(0)));
-	}
-
-	/**
-	 * @tests java.util.HashMap#containsValue(java.lang.Object)
-	 */
-	public void test_containsValueLjava_lang_Object() {
-		// Test for method boolean
-		// java.util.HashMap.containsValue(java.lang.Object)
-		assertTrue("Returned false for valid value", hm
-				.containsValue(new Integer(875)));
-		assertTrue("Returned true for invalid valie", !hm
-				.containsValue(new Integer(-9)));
-	}
-
-	/**
-	 * @tests java.util.HashMap#entrySet()
-	 */
-	public void test_entrySet() {
-		// Test for method java.util.Set java.util.HashMap.entrySet()
-		Set s = hm.entrySet();
-		Iterator i = s.iterator();
-		assertTrue("Returned set of incorrect size", hm.size() == s.size());
-		while (i.hasNext()) {
-			Map.Entry m = (Map.Entry) i.next();
-			assertTrue("Returned incorrect entry set", hm.containsKey(m
-					.getKey())
-					&& hm.containsValue(m.getValue()));
-		}
-	}
-
-	/**
-	 * @tests java.util.HashMap#get(java.lang.Object)
-	 */
-	public void test_getLjava_lang_Object() {
-		// Test for method java.lang.Object
-		// java.util.HashMap.get(java.lang.Object)
-		assertNull("Get returned non-null for non existent key",
-				hm.get("T"));
-		hm.put("T", "HELLO");
-		assertEquals("Get returned incorrect value for existing key", "HELLO", hm.get("T")
-				);
-
-		HashMap m = new HashMap();
-		m.put(null, "test");
-		assertEquals("Failed with null key", "test", m.get(null));
-		assertNull("Failed with missing key matching null hash", m
-				.get(new Integer(0)));
-		
-		// Regression for HARMONY-206
-		ReusableKey k = new ReusableKey();
-		HashMap map = new HashMap();
-		k.setKey(1);
-		map.put(k, "value1");
-
-		k.setKey(18);
-		assertNull(map.get(k));
-
-		k.setKey(17);
-		assertNull(map.get(k));
-	}
-
-	/**
-	 * @tests java.util.HashMap#isEmpty()
-	 */
-	public void test_isEmpty() {
-		// Test for method boolean java.util.HashMap.isEmpty()
-		assertTrue("Returned false for new map", new HashMap().isEmpty());
-		assertTrue("Returned true for non-empty", !hm.isEmpty());
-	}
-
-	/**
-	 * @tests java.util.HashMap#keySet()
-	 */
-	public void test_keySet() {
-		// Test for method java.util.Set java.util.HashMap.keySet()
-		Set s = hm.keySet();
-		assertTrue("Returned set of incorrect size()", s.size() == hm.size());
-		for (int i = 0; i < objArray.length; i++)
-			assertTrue("Returned set does not contain all keys", s
-					.contains(objArray[i].toString()));
-
-		HashMap m = new HashMap();
-		m.put(null, "test");
-		assertTrue("Failed with null key", m.keySet().contains(null));
-		assertNull("Failed with null key", m.keySet().iterator().next());
-
-		Map map = new HashMap(101);
-		map.put(new Integer(1), "1");
-		map.put(new Integer(102), "102");
-		map.put(new Integer(203), "203");
-		Iterator it = map.keySet().iterator();
-		Integer remove1 = (Integer) it.next();
-		it.hasNext();
-		it.remove();
-		Integer remove2 = (Integer) it.next();
-		it.remove();
-		ArrayList list = new ArrayList(Arrays.asList(new Integer[] {
-				new Integer(1), new Integer(102), new Integer(203) }));
-		list.remove(remove1);
-		list.remove(remove2);
-		assertTrue("Wrong result", it.next().equals(list.get(0)));
-		assertEquals("Wrong size", 1, map.size());
-		assertTrue("Wrong contents", map.keySet().iterator().next().equals(
-				list.get(0)));
-
-		Map map2 = new HashMap(101);
-		map2.put(new Integer(1), "1");
-		map2.put(new Integer(4), "4");
-		Iterator it2 = map2.keySet().iterator();
-		Integer remove3 = (Integer) it2.next();
-		Integer next;
-		if (remove3.intValue() == 1)
-			next = new Integer(4);
-		else
-			next = new Integer(1);
-		it2.hasNext();
-		it2.remove();
-		assertTrue("Wrong result 2", it2.next().equals(next));
-		assertEquals("Wrong size 2", 1, map2.size());
-		assertTrue("Wrong contents 2", map2.keySet().iterator().next().equals(
-				next));
-	}
-
-	/**
-	 * @tests java.util.HashMap#put(java.lang.Object, java.lang.Object)
-	 */
-	public void test_putLjava_lang_ObjectLjava_lang_Object() {
-        hm.put("KEY", "VALUE");
-        assertEquals("Failed to install key/value pair", "VALUE", hm.get("KEY"));
-
-        HashMap<Object,Object> m = new HashMap<Object,Object>();
-        m.put(new Short((short) 0), "short");
-        m.put(null, "test");
-        m.put(new Integer(0), "int");
-        assertEquals("Failed adding to bucket containing null", "short", m
-                .get(new Short((short) 0)));
-        assertEquals("Failed adding to bucket containing null2", "int", m
-                .get(new Integer(0)));
-        
-        // Check my actual key instance is returned
-        HashMap<Integer, String> map = new HashMap<Integer, String>();
-        for (int i = -32767; i < 32768; i++) {
-            map.put(i, "foobar");
-        }
-        Integer myKey = new Integer(0);
-        // Put a new value at the old key position
-        map.put(myKey, "myValue");
-        assertTrue(map.containsKey(myKey));
-        assertEquals("myValue", map.get(myKey));
-        boolean found = false;
-        for (Iterator<Integer> itr = map.keySet().iterator(); itr.hasNext();) {
-            Integer key = itr.next();
-            if (found = key == myKey) {
-                break;
-            }
-        }
-        assertFalse("Should not find new key instance in hashmap", found);
-
-        // Add a new key instance and check it is returned
-        assertNotNull(map.remove(myKey));
-        map.put(myKey, "myValue");
-        assertTrue(map.containsKey(myKey));
-        assertEquals("myValue", map.get(myKey));
-        for (Iterator<Integer> itr = map.keySet().iterator(); itr.hasNext();) {
-            Integer key = itr.next();
-            if (found = key == myKey) {
-                break;
-            }
-        }
-        assertTrue("Did not find new key instance in hashmap", found);
-
-        // Ensure keys with identical hashcode are stored separately
-        HashMap<Object,Object> objmap = new HashMap<Object, Object>();
-        for (int i = 0; i < 32768; i++) {
-            objmap.put(i, "foobar");
-        }
-        // Put non-equal object with same hashcode
-        MyKey aKey = new MyKey();
-        assertNull(objmap.put(aKey, "value"));
-        assertNull(objmap.remove(new MyKey()));
-        assertEquals("foobar", objmap.get(0));
-        assertEquals("value", objmap.get(aKey));
-    }
-	
-    static class MyKey {
-        public MyKey() {
-            super();
-        }
-        
-        public int hashCode() {
-            return 0;
-        }
-    }
-	/**
-	 * @tests java.util.HashMap#putAll(java.util.Map)
-	 */
-	public void test_putAllLjava_util_Map() {
-		// Test for method void java.util.HashMap.putAll(java.util.Map)
-		HashMap hm2 = new HashMap();
-		hm2.putAll(hm);
-		for (int i = 0; i < 1000; i++)
-			assertTrue("Failed to clear all elements", hm2.get(
-					new Integer(i).toString()).equals((new Integer(i))));
-        
-        Map mockMap = new MockMap();
-        hm2 = new HashMap();
-        hm2.putAll(mockMap);
-        assertEquals("Size should be 0", 0, hm2.size());
-	}
-    
-    /**
-     * @tests java.util.HashMap#putAll(java.util.Map)
-     */
-    public void test_putAllLjava_util_Map_Null() {
-        HashMap hashMap = new HashMap();
-        try {
-            hashMap.putAll(new MockMapNull());
-            fail("Should throw NullPointerException");
-        } catch (NullPointerException e) {
-            // expected.
-        }
-
-        try {
-            hashMap = new HashMap(new MockMapNull());
-            fail("Should throw NullPointerException");
-        } catch (NullPointerException e) {
-            // expected.
-        }
-    } 
-
-	/**
-	 * @tests java.util.HashMap#remove(java.lang.Object)
-	 */
-	public void test_removeLjava_lang_Object() {
-		int size = hm.size();
-		Integer y = new Integer(9);
-		Integer x = ((Integer) hm.remove(y.toString()));
-		assertTrue("Remove returned incorrect value", x.equals(new Integer(9)));
-		assertNull("Failed to remove given key", hm.get(new Integer(9)));
-		assertTrue("Failed to decrement size", hm.size() == (size - 1));
-		assertNull("Remove of non-existent key returned non-null", hm
-				.remove("LCLCLC"));
-
-		HashMap m = new HashMap();
-		m.put(null, "test");
-		assertNull("Failed with same hash as null",
-				m.remove(new Integer(0)));
-		assertEquals("Failed with null key", "test", m.remove(null));
-		
-		HashMap<Integer, Object> map = new HashMap<Integer, Object>();
-        for (int i = 0; i < 32768; i++) {
-            map.put(i, "const");
-        }
-        Object[] values = new Object[32768];
-        for (int i = 0; i < 32768; i++) {
-            values[i] = new Object();
-            map.put(i, values[i]);
-        }
-        for (int i = 32767; i >= 0; i--) {
-            assertEquals("Failed to remove same value", values[i], map.remove(i));
-        }
-
-        // Ensure keys with identical hashcode are removed properly
-        map = new HashMap<Integer, Object>();
-        for (int i = -32767; i < 32768; i++) {
-            map.put(i, "foobar");
-        }
-        // Remove non equal object with same hashcode
-        assertNull(map.remove(new MyKey()));
-        assertEquals("foobar", map.get(0));
-        map.remove(0);
-        assertNull(map.get(0));
-	}
-
-	/**
-	 * @tests java.util.HashMap#size()
-	 */
-	public void test_size() {
-		// Test for method int java.util.HashMap.size()
-		assertTrue("Returned incorrect size",
-				hm.size() == (objArray.length + 2));
-	}
-
-	/**
-	 * @tests java.util.HashMap#values()
-	 */
-	public void test_values() {
-		// Test for method java.util.Collection java.util.HashMap.values()
-		Collection c = hm.values();
-		assertTrue("Returned collection of incorrect size()", c.size() == hm
-				.size());
-		for (int i = 0; i < objArray.length; i++)
-			assertTrue("Returned collection does not contain all keys", c
-					.contains(objArray[i]));
-
-		HashMap myHashMap = new HashMap();
-		for (int i = 0; i < 100; i++)
-			myHashMap.put(objArray2[i], objArray[i]);
-		Collection values = myHashMap.values();
-		new Support_UnmodifiableCollectionTest(
-				"Test Returned Collection From HashMap.values()", values)
-				.runTest();
-		values.remove(new Integer(0));
-		assertTrue(
-				"Removing from the values collection should remove from the original map",
-				!myHashMap.containsValue(new Integer(0)));
-
-	}
-
-	static class ReusableKey {
-		private int key = 0;
-
-		public void setKey(int key) {
-			this.key = key;
-		}
-
-		public int hashCode() {
-			return key;
-		}
-
-		public boolean equals(Object o) {
-			if (o == this) {
-				return true;
-			}
-			if (!(o instanceof ReusableKey)) {
-				return false;
-			}
-			return key == ((ReusableKey) o).key;
-		}
-	}
-    
-	public void test_Map_Entry_hashCode() {
-        //Related to HARMONY-403
-	    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(10);
-	    Integer key = new Integer(1);
-	    Integer val = new Integer(2);
-	    map.put(key, val);
-	    int expected = key.hashCode() ^ val.hashCode();
-	    assertEquals(expected, map.hashCode());
-	    key = new Integer(4);
-	    val = new Integer(8);
-	    map.put(key, val);
-	    expected += key.hashCode() ^ val.hashCode();
-	    assertEquals(expected, map.hashCode());
-	} 
-    
-    class MockClonable implements Cloneable{
-        public int i;
-        
-        public MockClonable(int i) {
-            this.i = i;
-        }
-        
-        @Override
-        protected Object clone() throws CloneNotSupportedException {
-            return new MockClonable(i);
-        }
-    }
-    
-    /*
-     * Regression test for HY-4750
-     */
-    public void test_EntrySet() {
-        HashMap map = new HashMap();
-        map.put(new Integer(1), "ONE");
-
-        Set entrySet = map.entrySet();
-        Iterator e = entrySet.iterator();
-        Object real = e.next();
-        Map.Entry copyEntry = new MockEntry();
-        assertEquals(real, copyEntry);
-        assertTrue(entrySet.contains(copyEntry));
-        
-        entrySet.remove(copyEntry);
-        assertFalse(entrySet.contains(copyEntry));
-    }
-
-    private static class MockEntry implements Map.Entry {
-
-        public Object getKey() {
-            return new Integer(1);
-        }
-
-        public Object getValue() {
-            return "ONE";
-        }
-
-        public Object setValue(Object object) {
-            return null;
-        }
-    }
-	
-	/**
-	 * Sets up the fixture, for example, open a network connection. This method
-	 * is called before a test is executed.
-	 */
-	protected void setUp() {
-		hm = new HashMap();
-		for (int i = 0; i < objArray.length; i++)
-			hm.put(objArray2[i], objArray[i]);
-		hm.put("test", null);
-		hm.put(null, "test");
-	}
-
-
-    class SubMap<K, V> extends HashMap<K, V> {
-        public SubMap(Map<? extends K, ? extends V> m) {
-            super(m);
-        }
-
-        public V put(K key, V value) {
-            throw new UnsupportedOperationException();
-        }
-    }
-
-    /**
-     * @tests serialization/deserialization.
-     */
-    public void testSerializationSelf() throws Exception {
-        HashMap<String, String> hm = new HashMap<String, String>();
-        hm.put("key", "value");
-
-        SerializationTest.verifySelf(hm);        
-
-        //  regression for HARMONY-1583
-        hm.put(null, "null");
-        SerializationTest.verifySelf(hm);
-    }
-
-    /**
-     * @tests serialization/deserialization compatibility with RI.
-     */
-    public void testSerializationCompatibility() throws Exception {
-        HashMap<String, String> hm = new HashMap<String, String>();
-        hm.put("key", "value");
-
-        SerializationTest.verifyGolden(this, hm);
-    }
-
-}
+/*
+ *  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.
+ */
+
+package org.apache.harmony.luni.tests.java.util;
+
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import org.apache.harmony.testframework.serialization.SerializationTest;
+
+import tests.support.Support_MapTest2;
+import tests.support.Support_UnmodifiableCollectionTest;
+
+public class HashMapTest extends junit.framework.TestCase {
+    class MockMap extends AbstractMap {
+        public Set entrySet() {
+            return null;
+        }
+        public int size(){
+            return 0;
+        }
+    }
+    
+    private static class MockMapNull extends AbstractMap {
+        public Set entrySet() {
+            return null;
+        }
+
+        public int size() {
+            return 10;
+        }
+    }
+    
+	HashMap hm;
+
+	final static int hmSize = 1000;
+
+	static Object[] objArray;
+
+	static Object[] objArray2;
+	{
+		objArray = new Object[hmSize];
+		objArray2 = new Object[hmSize];
+		for (int i = 0; i < objArray.length; i++) {
+			objArray[i] = new Integer(i);
+			objArray2[i] = objArray[i].toString();
+		}
+	}
+
+	/**
+	 * @tests java.util.HashMap#HashMap()
+	 */
+	public void test_Constructor() {
+		// Test for method java.util.HashMap()
+		new Support_MapTest2(new HashMap()).runTest();
+
+		HashMap hm2 = new HashMap();
+		assertEquals("Created incorrect HashMap", 0, hm2.size());
+	}
+
+	/**
+	 * @tests java.util.HashMap#HashMap(int)
+	 */
+	public void test_ConstructorI() {
+		// Test for method java.util.HashMap(int)
+		HashMap hm2 = new HashMap(5);
+		assertEquals("Created incorrect HashMap", 0, hm2.size());
+		try {
+			new HashMap(-1);
+		} catch (IllegalArgumentException e) {
+			return;
+		}
+		fail(
+				"Failed to throw IllegalArgumentException for initial capacity < 0");
+
+		HashMap empty = new HashMap(0);
+		assertNull("Empty hashmap access", empty.get("nothing"));
+		empty.put("something", "here");
+		assertTrue("cannot get element", empty.get("something") == "here");
+	}
+
+	/**
+	 * @tests java.util.HashMap#HashMap(int, float)
+	 */
+	public void test_ConstructorIF() {
+		// Test for method java.util.HashMap(int, float)
+		HashMap hm2 = new HashMap(5, (float) 0.5);
+		assertEquals("Created incorrect HashMap", 0, hm2.size());
+		try {
+			new HashMap(0, 0);
+		} catch (IllegalArgumentException e) {
+			return;
+		}
+		fail(
+				"Failed to throw IllegalArgumentException for initial load factor <= 0");
+
+		HashMap empty = new HashMap(0, 0.75f);
+		assertNull("Empty hashtable access", empty.get("nothing"));
+		empty.put("something", "here");
+		assertTrue("cannot get element", empty.get("something") == "here");
+	}
+
+	/**
+	 * @tests java.util.HashMap#HashMap(java.util.Map)
+	 */
+	public void test_ConstructorLjava_util_Map() {
+		// Test for method java.util.HashMap(java.util.Map)
+		Map myMap = new TreeMap();
+		for (int counter = 0; counter < hmSize; counter++)
+			myMap.put(objArray2[counter], objArray[counter]);
+		HashMap hm2 = new HashMap(myMap);
+		for (int counter = 0; counter < hmSize; counter++)
+			assertTrue("Failed to construct correct HashMap", hm
+					.get(objArray2[counter]) == hm2.get(objArray2[counter]));
+        
+        try {
+            Map mockMap = new MockMap();
+            hm = new HashMap(mockMap);
+            fail("Should throw NullPointerException");
+        } catch (NullPointerException e) {
+            //empty
+        }
+        
+        HashMap map = new HashMap();
+        map.put("a", "a");
+        SubMap map2 = new SubMap(map); 
+        assertTrue(map2.containsKey("a"));
+        assertTrue(map2.containsValue("a"));
+	}
+
+	/**
+	 * @tests java.util.HashMap#clear()
+	 */
+	public void test_clear() {
+		hm.clear();
+		assertEquals("Clear failed to reset size", 0, hm.size());
+		for (int i = 0; i < hmSize; i++)
+			assertNull("Failed to clear all elements",
+					hm.get(objArray2[i]));
+        
+		// Check clear on a large loaded map of Integer keys
+		HashMap<Integer, String> map = new HashMap<Integer, String>();
+        for (int i = -32767; i < 32768; i++) {
+            map.put(i, "foobar");
+        }
+        map.clear();
+        assertEquals("Failed to reset size on large integer map", 0, hm.size());
+        for (int i = -32767; i < 32768; i++) {
+            assertNull("Failed to clear integer map values", map.get(i));
+        }
+	}
+
+	/**
+	 * @tests java.util.HashMap#clone()
+	 */
+	public void test_clone() {
+		// Test for method java.lang.Object java.util.HashMap.clone()
+		HashMap hm2 = (HashMap) hm.clone();
+		assertTrue("Clone answered equivalent HashMap", hm2 != hm);
+		for (int counter = 0; counter < hmSize; counter++)
+			assertTrue("Clone answered unequal HashMap", hm
+					.get(objArray2[counter]) == hm2.get(objArray2[counter]));
+
+		HashMap map = new HashMap();
+		map.put("key", "value");
+		// get the keySet() and values() on the original Map
+		Set keys = map.keySet();
+		Collection values = map.values();
+		assertEquals("values() does not work", 
+				"value", values.iterator().next());
+		assertEquals("keySet() does not work", 
+				"key", keys.iterator().next());
+		AbstractMap map2 = (AbstractMap) map.clone();
+		map2.put("key", "value2");
+		Collection values2 = map2.values();
+		assertTrue("values() is identical", values2 != values);
+		// values() and keySet() on the cloned() map should be different
+		assertEquals("values() was not cloned", 
+				"value2", values2.iterator().next());
+		map2.clear();
+		map2.put("key2", "value3");
+		Set key2 = map2.keySet();
+		assertTrue("keySet() is identical", key2 != keys);
+		assertEquals("keySet() was not cloned", 
+				"key2", key2.iterator().next());
+        
+        // regresion test for HARMONY-4603
+        HashMap hashmap = new HashMap();
+        MockClonable mock = new MockClonable(1);
+        hashmap.put(1, mock);
+        assertEquals(1, ((MockClonable) hashmap.get(1)).i);
+        HashMap hm3 = (HashMap)hashmap.clone();
+        assertEquals(1, ((MockClonable) hm3.get(1)).i);
+        mock.i = 0;
+        assertEquals(0, ((MockClonable) hashmap.get(1)).i);
+        assertEquals(0, ((MockClonable) hm3.get(1)).i);
+	}
+
+	/**
+	 * @tests java.util.HashMap#containsKey(java.lang.Object)
+	 */
+	public void test_containsKeyLjava_lang_Object() {
+		// Test for method boolean
+		// java.util.HashMap.containsKey(java.lang.Object)
+		assertTrue("Returned false for valid key", hm.containsKey(new Integer(
+				876).toString()));
+		assertTrue("Returned true for invalid key", !hm.containsKey("KKDKDKD"));
+
+		HashMap m = new HashMap();
+		m.put(null, "test");
+		assertTrue("Failed with null key", m.containsKey(null));
+		assertTrue("Failed with missing key matching null hash", !m
+				.containsKey(new Integer(0)));
+	}
+
+	/**
+	 * @tests java.util.HashMap#containsValue(java.lang.Object)
+	 */
+	public void test_containsValueLjava_lang_Object() {
+		// Test for method boolean
+		// java.util.HashMap.containsValue(java.lang.Object)
+		assertTrue("Returned false for valid value", hm
+				.containsValue(new Integer(875)));
+		assertTrue("Returned true for invalid valie", !hm
+				.containsValue(new Integer(-9)));
+	}
+
+	/**
+	 * @tests java.util.HashMap#entrySet()
+	 */
+	public void test_entrySet() {
+		// Test for method java.util.Set java.util.HashMap.entrySet()
+		Set s = hm.entrySet();
+		Iterator i = s.iterator();
+		assertTrue("Returned set of incorrect size", hm.size() == s.size());
+		while (i.hasNext()) {
+			Map.Entry m = (Map.Entry) i.next();
+			assertTrue("Returned incorrect entry set", hm.containsKey(m
+					.getKey())
+					&& hm.containsValue(m.getValue()));
+		}
+        
+        Iterator iter = s.iterator(); 
+        s.remove(iter.next());
+        assertEquals(1001, s.size());
+	}
+
+	/**
+	 * @tests java.util.HashMap#get(java.lang.Object)
+	 */
+	public void test_getLjava_lang_Object() {
+		// Test for method java.lang.Object
+		// java.util.HashMap.get(java.lang.Object)
+		assertNull("Get returned non-null for non existent key",
+				hm.get("T"));
+		hm.put("T", "HELLO");
+		assertEquals("Get returned incorrect value for existing key", "HELLO", hm.get("T")
+				);
+
+		HashMap m = new HashMap();
+		m.put(null, "test");
+		assertEquals("Failed with null key", "test", m.get(null));
+		assertNull("Failed with missing key matching null hash", m
+				.get(new Integer(0)));
+		
+		// Regression for HARMONY-206
+		ReusableKey k = new ReusableKey();
+		HashMap map = new HashMap();
+		k.setKey(1);
+		map.put(k, "value1");
+
+		k.setKey(18);
+		assertNull(map.get(k));
+
+		k.setKey(17);
+		assertNull(map.get(k));
+	}
+
+	/**
+	 * @tests java.util.HashMap#isEmpty()
+	 */
+	public void test_isEmpty() {
+		// Test for method boolean java.util.HashMap.isEmpty()
+		assertTrue("Returned false for new map", new HashMap().isEmpty());
+		assertTrue("Returned true for non-empty", !hm.isEmpty());
+	}
+
+	/**
+	 * @tests java.util.HashMap#keySet()
+	 */
+	public void test_keySet() {
+		// Test for method java.util.Set java.util.HashMap.keySet()
+		Set s = hm.keySet();
+		assertTrue("Returned set of incorrect size()", s.size() == hm.size());
+		for (int i = 0; i < objArray.length; i++)
+			assertTrue("Returned set does not contain all keys", s
+					.contains(objArray[i].toString()));
+
+		HashMap m = new HashMap();
+		m.put(null, "test");
+		assertTrue("Failed with null key", m.keySet().contains(null));
+		assertNull("Failed with null key", m.keySet().iterator().next());
+
+		Map map = new HashMap(101);
+		map.put(new Integer(1), "1");
+		map.put(new Integer(102), "102");
+		map.put(new Integer(203), "203");
+		Iterator it = map.keySet().iterator();
+		Integer remove1 = (Integer) it.next();
+		it.hasNext();
+		it.remove();
+		Integer remove2 = (Integer) it.next();
+		it.remove();
+		ArrayList list = new ArrayList(Arrays.asList(new Integer[] {
+				new Integer(1), new Integer(102), new Integer(203) }));
+		list.remove(remove1);
+		list.remove(remove2);
+		assertTrue("Wrong result", it.next().equals(list.get(0)));
+		assertEquals("Wrong size", 1, map.size());
+		assertTrue("Wrong contents", map.keySet().iterator().next().equals(
+				list.get(0)));
+
+		Map map2 = new HashMap(101);
+		map2.put(new Integer(1), "1");
+		map2.put(new Integer(4), "4");
+		Iterator it2 = map2.keySet().iterator();
+		Integer remove3 = (Integer) it2.next();
+		Integer next;
+		if (remove3.intValue() == 1)
+			next = new Integer(4);
+		else
+			next = new Integer(1);
+		it2.hasNext();
+		it2.remove();
+		assertTrue("Wrong result 2", it2.next().equals(next));
+		assertEquals("Wrong size 2", 1, map2.size());
+		assertTrue("Wrong contents 2", map2.keySet().iterator().next().equals(
+				next));
+	}
+
+	/**
+	 * @tests java.util.HashMap#put(java.lang.Object, java.lang.Object)
+	 */
+	public void test_putLjava_lang_ObjectLjava_lang_Object() {
+        hm.put("KEY", "VALUE");
+        assertEquals("Failed to install key/value pair", "VALUE", hm.get("KEY"));
+
+        HashMap<Object,Object> m = new HashMap<Object,Object>();
+        m.put(new Short((short) 0), "short");
+        m.put(null, "test");
+        m.put(new Integer(0), "int");
+        assertEquals("Failed adding to bucket containing null", "short", m
+                .get(new Short((short) 0)));
+        assertEquals("Failed adding to bucket containing null2", "int", m
+                .get(new Integer(0)));
+        
+        // Check my actual key instance is returned
+        HashMap<Integer, String> map = new HashMap<Integer, String>();
+        for (int i = -32767; i < 32768; i++) {
+            map.put(i, "foobar");
+        }
+        Integer myKey = new Integer(0);
+        // Put a new value at the old key position
+        map.put(myKey, "myValue");
+        assertTrue(map.containsKey(myKey));
+        assertEquals("myValue", map.get(myKey));
+        boolean found = false;
+        for (Iterator<Integer> itr = map.keySet().iterator(); itr.hasNext();) {
+            Integer key = itr.next();
+            if (found = key == myKey) {
+                break;
+            }
+        }
+        assertFalse("Should not find new key instance in hashmap", found);
+
+        // Add a new key instance and check it is returned
+        assertNotNull(map.remove(myKey));
+        map.put(myKey, "myValue");
+        assertTrue(map.containsKey(myKey));
+        assertEquals("myValue", map.get(myKey));
+        for (Iterator<Integer> itr = map.keySet().iterator(); itr.hasNext();) {
+            Integer key = itr.next();
+            if (found = key == myKey) {
+                break;
+            }
+        }
+        assertTrue("Did not find new key instance in hashmap", found);
+
+        // Ensure keys with identical hashcode are stored separately
+        HashMap<Object,Object> objmap = new HashMap<Object, Object>();
+        for (int i = 0; i < 32768; i++) {
+            objmap.put(i, "foobar");
+        }
+        // Put non-equal object with same hashcode
+        MyKey aKey = new MyKey();
+        assertNull(objmap.put(aKey, "value"));
+        assertNull(objmap.remove(new MyKey()));
+        assertEquals("foobar", objmap.get(0));
+        assertEquals("value", objmap.get(aKey));
+    }
+	
+    static class MyKey {
+        public MyKey() {
+            super();
+        }
+        
+        public int hashCode() {
+            return 0;
+        }
+    }
+	/**
+	 * @tests java.util.HashMap#putAll(java.util.Map)
+	 */
+	public void test_putAllLjava_util_Map() {
+		// Test for method void java.util.HashMap.putAll(java.util.Map)
+		HashMap hm2 = new HashMap();
+		hm2.putAll(hm);
+		for (int i = 0; i < 1000; i++)
+			assertTrue("Failed to clear all elements", hm2.get(
+					new Integer(i).toString()).equals((new Integer(i))));
+        
+        Map mockMap = new MockMap();
+        hm2 = new HashMap();
+        hm2.putAll(mockMap);
+        assertEquals("Size should be 0", 0, hm2.size());
+	}
+    
+    /**
+     * @tests java.util.HashMap#putAll(java.util.Map)
+     */
+    public void test_putAllLjava_util_Map_Null() {
+        HashMap hashMap = new HashMap();
+        try {
+            hashMap.putAll(new MockMapNull());
+            fail("Should throw NullPointerException");
+        } catch (NullPointerException e) {
+            // expected.
+        }
+
+        try {
+            hashMap = new HashMap(new MockMapNull());
+            fail("Should throw NullPointerException");
+        } catch (NullPointerException e) {
+            // expected.
+        }
+    } 
+
+	/**
+	 * @tests java.util.HashMap#remove(java.lang.Object)
+	 */
+	public void test_removeLjava_lang_Object() {
+		int size = hm.size();
+		Integer y = new Integer(9);
+		Integer x = ((Integer) hm.remove(y.toString()));
+		assertTrue("Remove returned incorrect value", x.equals(new Integer(9)));
+		assertNull("Failed to remove given key", hm.get(new Integer(9)));
+		assertTrue("Failed to decrement size", hm.size() == (size - 1));
+		assertNull("Remove of non-existent key returned non-null", hm
+				.remove("LCLCLC"));
+
+		HashMap m = new HashMap();
+		m.put(null, "test");
+		assertNull("Failed with same hash as null",
+				m.remove(new Integer(0)));
+		assertEquals("Failed with null key", "test", m.remove(null));
+		
+		HashMap<Integer, Object> map = new HashMap<Integer, Object>();
+        for (int i = 0; i < 32768; i++) {
+            map.put(i, "const");
+        }
+        Object[] values = new Object[32768];
+        for (int i = 0; i < 32768; i++) {
+            values[i] = new Object();
+            map.put(i, values[i]);
+        }
+        for (int i = 32767; i >= 0; i--) {
+            assertEquals("Failed to remove same value", values[i], map.remove(i));
+        }
+
+        // Ensure keys with identical hashcode are removed properly
+        map = new HashMap<Integer, Object>();
+        for (int i = -32767; i < 32768; i++) {
+            map.put(i, "foobar");
+        }
+        // Remove non equal object with same hashcode
+        assertNull(map.remove(new MyKey()));
+        assertEquals("foobar", map.get(0));
+        map.remove(0);
+        assertNull(map.get(0));
+	}
+
+	/**
+	 * @tests java.util.HashMap#size()
+	 */
+	public void test_size() {
+		// Test for method int java.util.HashMap.size()
+		assertTrue("Returned incorrect size",
+				hm.size() == (objArray.length + 2));
+	}
+
+	/**
+	 * @tests java.util.HashMap#values()
+	 */
+	public void test_values() {
+		// Test for method java.util.Collection java.util.HashMap.values()
+		Collection c = hm.values();
+		assertTrue("Returned collection of incorrect size()", c.size() == hm
+				.size());
+		for (int i = 0; i < objArray.length; i++)
+			assertTrue("Returned collection does not contain all keys", c
+					.contains(objArray[i]));
+
+		HashMap myHashMap = new HashMap();
+		for (int i = 0; i < 100; i++)
+			myHashMap.put(objArray2[i], objArray[i]);
+		Collection values = myHashMap.values();
+		new Support_UnmodifiableCollectionTest(
+				"Test Returned Collection From HashMap.values()", values)
+				.runTest();
+		values.remove(new Integer(0));
+		assertTrue(
+				"Removing from the values collection should remove from the original map",
+				!myHashMap.containsValue(new Integer(0)));
+
+	}
+
+	static class ReusableKey {
+		private int key = 0;
+
+		public void setKey(int key) {
+			this.key = key;
+		}
+
+		public int hashCode() {
+			return key;
+		}
+
+		public boolean equals(Object o) {
+			if (o == this) {
+				return true;
+			}
+			if (!(o instanceof ReusableKey)) {
+				return false;
+			}
+			return key == ((ReusableKey) o).key;
+		}
+	}
+    
+	public void test_Map_Entry_hashCode() {
+        //Related to HARMONY-403
+	    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(10);
+	    Integer key = new Integer(1);
+	    Integer val = new Integer(2);
+	    map.put(key, val);
+	    int expected = key.hashCode() ^ val.hashCode();
+	    assertEquals(expected, map.hashCode());
+	    key = new Integer(4);
+	    val = new Integer(8);
+	    map.put(key, val);
+	    expected += key.hashCode() ^ val.hashCode();
+	    assertEquals(expected, map.hashCode());
+	} 
+    
+    class MockClonable implements Cloneable{
+        public int i;
+        
+        public MockClonable(int i) {
+            this.i = i;
+        }
+        
+        @Override
+        protected Object clone() throws CloneNotSupportedException {
+            return new MockClonable(i);
+        }
+    }
+    
+    /*
+     * Regression test for HY-4750
+     */
+    public void test_EntrySet() {
+        HashMap map = new HashMap();
+        map.put(new Integer(1), "ONE");
+
+        Set entrySet = map.entrySet();
+        Iterator e = entrySet.iterator();
+        Object real = e.next();
+        Map.Entry copyEntry = new MockEntry();
+        assertEquals(real, copyEntry);
+        assertTrue(entrySet.contains(copyEntry));
+        
+        entrySet.remove(copyEntry);
+        assertFalse(entrySet.contains(copyEntry));
+    }
+
+    private static class MockEntry implements Map.Entry {
+
+        public Object getKey() {
+            return new Integer(1);
+        }
+
+        public Object getValue() {
+            return "ONE";
+        }
+
+        public Object setValue(Object object) {
+            return null;
+        }
+    }
+	
+	/**
+	 * Sets up the fixture, for example, open a network connection. This method
+	 * is called before a test is executed.
+	 */
+	protected void setUp() {
+		hm = new HashMap();
+		for (int i = 0; i < objArray.length; i++)
+			hm.put(objArray2[i], objArray[i]);
+		hm.put("test", null);
+		hm.put(null, "test");
+	}
+
+
+    class SubMap<K, V> extends HashMap<K, V> {
+        public SubMap(Map<? extends K, ? extends V> m) {
+            super(m);
+        }
+
+        public V put(K key, V value) {
+            throw new UnsupportedOperationException();
+        }
+    }
+
+    /**
+     * @tests serialization/deserialization.
+     */
+    public void testSerializationSelf() throws Exception {
+        HashMap<String, String> hm = new HashMap<String, String>();
+        hm.put("key", "value");
+
+        SerializationTest.verifySelf(hm);        
+
+        //  regression for HARMONY-1583
+        hm.put(null, "null");
+        SerializationTest.verifySelf(hm);
+    }
+
+    /**
+     * @tests serialization/deserialization compatibility with RI.
+     */
+    public void testSerializationCompatibility() throws Exception {
+        HashMap<String, String> hm = new HashMap<String, String>();
+        hm.put("key", "value");
+
+        SerializationTest.verifyGolden(this, hm);
+    }
+
+}

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/LocaleTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/LocaleTest.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/LocaleTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/LocaleTest.java Tue Mar  4 00:02:13 2008
@@ -358,9 +358,9 @@
 		
 		// Non-bug difference for HARMONY-5442
 		l = new Locale("", "CA", "var");
-		assertEquals("Wrong representation 2.5", "_CA_VAR", l.toString());
+		assertEquals("Wrong representation 2.5", "_CA_var", l.toString());
 		l = new Locale("en", "", "WIN");
-		assertEquals("Wrong representation 4", "en_WIN", l.toString());
+		assertEquals("Wrong representation 4", "en__WIN", l.toString());
 		l = new Locale("en", "CA");
 		assertEquals("Wrong representation 6", "en_CA", l.toString());
 		l = new Locale("en", "CA", "VAR");

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/PropertiesTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/PropertiesTest.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/PropertiesTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/PropertiesTest.java Tue Mar  4 00:02:13 2008
@@ -334,6 +334,44 @@
         }
         assertEquals("Failed to load when last line contains a comment", "1",
                 prop.get("fred"));
+
+        // Regression tests for HARMONY-5414
+        prop = new Properties();
+        prop.load(new ByteArrayInputStream("a=\\u1234z".getBytes()));
+
+        prop = new Properties();
+        try {
+            prop.load(new ByteArrayInputStream("a=\\u123".getBytes()));
+            fail("Expected IllegalArgumentException due to invalid Unicode sequence");
+        } catch (IllegalArgumentException e) {
+            // Expected
+        }
+
+        prop = new Properties();
+        try {
+            prop.load(new ByteArrayInputStream("a=\\u123z".getBytes()));
+            fail("Expected IllegalArgumentException due to invalid unicode sequence");
+        } catch (IllegalArgumentException expected) {
+            // Expected
+        }
+
+        prop = new Properties();
+        Properties expected = new Properties();
+        expected.put("a", "\u0000");
+        prop.load(new ByteArrayInputStream("a=\\".getBytes()));
+        assertEquals("Failed to read trailing slash value", expected, prop);
+
+        prop = new Properties();
+        expected = new Properties();
+        expected.put("a", "\u1234\u0000");
+        prop.load(new ByteArrayInputStream("a=\\u1234\\".getBytes()));
+        assertEquals("Failed to read trailing slash value #2", expected, prop);
+
+        prop = new Properties();
+        expected = new Properties();
+        expected.put("a", "q");
+        prop.load(new ByteArrayInputStream("a=\\q".getBytes()));
+        assertEquals("Failed to read slash value #3", expected, prop);
     }
 
     /**

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ScannerTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ScannerTest.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ScannerTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/ScannerTest.java Tue Mar  4 00:02:13 2008
@@ -5585,6 +5585,23 @@
         s = new Scanner("test\n ");
         result = s.nextLine();
         assertEquals("test", result);
+
+        // Regression test for Harmony-4774
+        class CountReadable implements Readable {
+            int counter = 0;
+            public int read(CharBuffer charBuffer) throws IOException {
+                counter++;
+                charBuffer.append("hello\n");
+                return 6;
+            }
+        }
+        CountReadable cr = new CountReadable();
+        s = new Scanner(cr);
+        result = s.nextLine();
+        // We expect read() to be called only once, otherwise we see the problem
+        // when reading from System.in described in Harmony-4774
+        assertEquals(1, cr.counter);
+        assertEquals("hello", result);        
     }
     
     /**

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/SimpleTimeZoneTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/SimpleTimeZoneTest.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/SimpleTimeZoneTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/SimpleTimeZoneTest.java Tue Mar  4 00:02:13 2008
@@ -198,6 +198,13 @@
         assertEquals("Incorrect offset returned", -(5 * 60 * 60 * 1000), st1
                 .getOffset(GregorianCalendar.AD, 1998, Calendar.JUNE, 11,
                         Calendar.THURSDAY, 0));
+        
+        // Regression for HARMONY-5459
+        st1 = (TimeZone)TimeZone.getDefault(); 
+        int fourHours = 4*60*60*1000; 
+        st1.setRawOffset(fourHours); 
+        assertEquals(fourHours, st1.getOffset(1, 2099, 01, 1, 5, 0));
+
 	}
 
 	/**

Modified: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/TimeZoneTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/TimeZoneTest.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/TimeZoneTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/TimeZoneTest.java Tue Mar  4 00:02:13 2008
@@ -18,7 +18,9 @@
 package org.apache.harmony.luni.tests.java.util;
 
 import java.util.Calendar;
+import java.util.Formatter;
 import java.util.GregorianCalendar;
+import java.util.Locale;
 import java.util.SimpleTimeZone;
 import java.util.TimeZone;
 
@@ -161,7 +163,31 @@
 		assertEquals("default not restored",
                              oldDefault, TimeZone.getDefault());
 	}
-
+    
+    /**
+     * @tests java.util.TimeZone#getDisplayName(java.util.Locale)
+     */
+    public void test_getDisplayNameLjava_util_Locale() {
+        TimeZone timezone = TimeZone.getTimeZone("Asia/Shanghai");
+        assertEquals("\u4e2d\u56fd\u6807\u51c6\u65f6\u95f4", timezone
+                .getDisplayName(Locale.CHINA));
+    }
+    
+    /**
+     * @tests java.util.TimeZone#getDisplayName(boolean, int, java.util.Locale)
+     */
+    public void test_getDisplayNameZILjava_util_Locale() {
+        TimeZone timezone = TimeZone.getTimeZone("Asia/Shanghai");
+        assertEquals("GMT+0800", timezone.getDisplayName(false, TimeZone.SHORT,
+                Locale.CHINA));
+        try {
+            timezone.getDisplayName(false, 100, Locale.CHINA);
+            fail("should throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+    
 	protected void setUp() {
 	}
 

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/build.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/build.xml?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/build.xml (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/build.xml Tue Mar  4 00:02:13 2008
@@ -40,17 +40,17 @@
             <present targetdir="${hy.nio.src.main.java}">
                 <mapper type="regexp"
                         from="^(.*?)(\$$[^/\\\.]*)?\.class$$"
-                        to="\1.java"/>
+                        to="\1.java" />
             </present>
             <present targetdir="${hy.nio.src.main.java.platform}" />
             <present targetdir="${hy.nio.src.main.java.platform}">
                 <mapper type="regexp"
                         from="^(.*?)(\$$[^/\\\.]*)?\.class$$"
-                        to="\1.java"/>
+                        to="\1.java" />
             </present>
         </or>
     </fileset>
-    
+
     <target name="build" depends="compile-java, copy-resources, build-jar" />
 
     <target name="test" depends="-test-module">
@@ -65,7 +65,8 @@
     </target>
 
     <!-- internal target for local and global test run sequence -->
-    <target name="-test-module" depends="build, compile-tests, prepare-exclude, run-tests" />
+    <target name="-test-module"
+            depends="build, compile-tests, prepare-exclude, run-tests" />
 
     <!-- Build natives.-->
     <target name="build-native">
@@ -74,9 +75,9 @@
         <!-- Copy the built shared libs over to the jre/bin dir -->
         <copy todir="${hy.jdk}/jre/bin" overwrite="yes">
             <fileset dir="${hy.nio.src.main.native}/nio">
-                <include name="*${shlib.suffix}*"/>
+                <include name="*${shlib.suffix}*" />
                 <include name="*${progdb.suffix}*" if="is.windows" />
-                <exclude name="*${manifest.suffix}"/>
+                <exclude name="*${manifest.suffix}" />
             </fileset>
         </copy>
         <!-- Copy link exports file on z/OS -->
@@ -93,33 +94,32 @@
         <delete includeemptydirs="true" failonerror="false">
             <fileset refid="classes" />
         </delete>
-        <delete failonerror="false" dir="bin"/>
+        <delete failonerror="false" dir="bin" />
     </target>
 
     <!-- Clean natives. -->
     <target name="clean-native">
         <make dir="${hy.nio.src.main.native}/nio/${hy.os.family}"
-                      target="clean" />
+              target="clean" />
     </target>
 
-
     <target name="compile-java">
         <echo message="Compiling NIO classes" />
 
         <mkdir dir="${hy.build}" />
 
         <javac sourcepath=""
-            destdir="${hy.build}"
-            compiler="${hy.javac.compiler}"
-            memoryMaximumSize="${hy.javac.maxmem}"
-            source="${hy.javac.source}" 
-            target="${hy.javac.target}"
-            debug="${hy.javac.debug}">
+               destdir="${hy.build}"
+               compiler="${hy.javac.compiler}"
+               memoryMaximumSize="${hy.javac.maxmem}"
+               source="${hy.javac.source}"
+               target="${hy.javac.target}"
+               debug="${hy.javac.debug}">
 
             <compilerarg line="${build.compilerarg}" />
 
             <src>
-                <pathelement location="${hy.nio.src.main.java}"/>
+                <pathelement location="${hy.nio.src.main.java}" />
                 <pathelement location="${hy.nio.src.main.java.platform}" />
             </src>
 
@@ -142,22 +142,22 @@
 
     <target name="build-jar" depends="svn-info">
         <jar destfile="${hy.jdk}/jre/lib/boot/nio.jar"
-            manifest="${hy.nio}/META-INF/MANIFEST.MF">
+             manifest="${hy.nio}/META-INF/MANIFEST.MF">
             <fileset refid="classes" />
             <manifest>
-                <attribute name="Implementation-Version" value="${svn.info}"/> 
+                <attribute name="Implementation-Version" value="${svn.info}" />
             </manifest>
 
-            <metainf refid="hy.required.metainf-files"/>
+            <metainf refid="hy.required.metainf-files" />
         </jar>
 
         <jar destfile="${hy.jdk}/jre/lib/boot/nio-src.jar">
             <fileset dir="${hy.nio.src.main.java}" />
             <manifest>
-                <attribute name="Implementation-Version" value="${svn.info}"/> 
+                <attribute name="Implementation-Version" value="${svn.info}" />
             </manifest>
 
-            <metainf refid="hy.required.metainf-files"/>
+            <metainf refid="hy.required.metainf-files" />
         </jar>
     </target>
 
@@ -170,29 +170,29 @@
                sourcepath=""
                compiler="${hy.javac.compiler}"
                memoryMaximumSize="${hy.javac.maxmem}"
-               source="${hy.javac.source}" 
+               source="${hy.javac.source}"
                target="${hy.javac.target}"
                debug="${hy.javac.debug}">
 
             <compilerarg line="${build.compilerarg}" />
 
-                    <src>
-                        <pathelement location="${hy.nio.src.test.java}"/>
-                        <pathelement
-                             location="${hy.nio.src.test.java.platform}"/>
-                    </src>
+            <src>
+                <pathelement location="${hy.nio.src.test.java}" />
+                <pathelement location="${hy.nio.src.test.java.platform}" />
+            </src>
             <bootclasspath>
-            <fileset dir="${hy.jdk}/jre/lib/boot">
-                <include name="**/*.jar" />
-            </fileset>
+                <fileset dir="${hy.jdk}/jre/lib/boot">
+                    <include name="**/*.jar" />
+                </fileset>
             </bootclasspath>
             <classpath location="${hy.hdk}/build/test/support.jar" />
         </javac>
     </target>
 
     <target name="prepare-exclude">
-       <prepare-exclude-list moduleName="nio" dir="./make"
-                             result="${nio.exclude.file}"/>
+        <prepare-exclude-list moduleName="nio"
+                              dir="./make"
+                              result="${nio.exclude.file}" />
     </target>
 
     <target name="run-tests">
@@ -201,14 +201,14 @@
         <property name="test.jre.home" value="${hy.jdk}/jre" />
 
         <junit fork="yes"
-            forkmode="${hy.test.forkmode}"
-            timeout="${hy.test.timeout}"
-            printsummary="withOutAndErr"
-            errorproperty="test.errors"
-            failureproperty="test.failures"
-            showoutput="on"
-            dir="${basedir}"
-            jvm="${test.jre.home}/bin/java">
+               forkmode="${hy.test.forkmode}"
+               timeout="${hy.test.timeout}"
+               printsummary="withOutAndErr"
+               errorproperty="test.errors"
+               failureproperty="test.failures"
+               showoutput="on"
+               dir="${basedir}"
+               jvm="${test.jre.home}/bin/java">
             <jvmarg line="${hy.test.vmargs}" />
 
             <classpath>
@@ -218,20 +218,22 @@
 
             <formatter type="xml" />
 
-            <batchtest todir="${hy.tests.reports}" haltonfailure="no" >
+            <batchtest todir="${hy.tests.reports}" haltonfailure="no">
                 <fileset dir="${hy.nio.src.test.java}">
                     <!-- if ${test.case}     -->
                     <include name="${converted.tc}" if="test.case" />
                     <!-- unless ${test.case} -->
                     <include name="**/*Test.java" unless="test.case" />
-                    <excludesfile name="${nio.exclude.file}" unless="test.case" />
+                    <excludesfile name="${nio.exclude.file}"
+                                  unless="test.case" />
                 </fileset>
                 <fileset dir="${hy.nio.src.test.java.platform}">
                     <!-- if ${test.case}     -->
                     <include name="${converted.tc}" if="test.case" />
                     <!-- unless ${test.case} -->
                     <include name="**/*Test.java" unless="test.case" />
-                    <excludesfile name="${nio.exclude.file}" unless="test.case" />
+                    <excludesfile name="${nio.exclude.file}"
+                                  unless="test.case" />
                 </fileset>
             </batchtest>
         </junit>

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/ByteBuffer.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/ByteBuffer.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/ByteBuffer.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/ByteBuffer.java Tue Mar  4 00:02:13 2008
@@ -262,7 +262,7 @@
     /**
      * Returns a readonly buffer that shares content with this buffer.
      * <p>
-     * The returned buffer is guaranteed to be a new instance, even this buffer
+     * The returned buffer is guaranteed to be a new instance, even if this buffer
      * is readonly itself. The new buffer's position, limit, capacity and mark
      * are the same as this buffer.
      * </p>

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/Channels.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/Channels.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/Channels.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/Channels.java Tue Mar  4 00:02:13 2008
@@ -487,11 +487,6 @@
 
         private ByteBuffer byteBuf;
 
-        /**
-         * @param outputStream
-         * @param enc
-         * @param minBufferCap
-         */
         public ByteChannelWriter(OutputStream aOutputStream,
                 CharsetEncoder aEncoder, int minBufferCap) {
             super(aOutputStream);

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/DatagramChannel.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/DatagramChannel.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/DatagramChannel.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/DatagramChannel.java Tue Mar  4 00:02:13 2008
@@ -83,6 +83,7 @@
      * @see java.nio.channels.SelectableChannel#validOps()
      * @return Valid operations in bit-set.
      */
+    @Override
     public final int validOps() {
         return (SelectionKey.OP_READ | SelectionKey.OP_WRITE);
     }

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/FileLock.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/FileLock.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/FileLock.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/FileLock.java Tue Mar  4 00:02:13 2008
@@ -191,6 +191,7 @@
      * 
      * @return the display string.
      */
+    @Override
     @SuppressWarnings("nls")
     public final String toString() {
         StringBuffer buffer = new StringBuffer(64); // Guess length of string

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/Pipe.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/Pipe.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/Pipe.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/Pipe.java Tue Mar  4 00:02:13 2008
@@ -24,7 +24,6 @@
  * A pipe contains two channels. One is the writable sink channel and the other is
  * readable source channel. When bytes are written into the writable channel they
  * can be read from readable channel. The order of these bytes remains unchanged. 
- * 
  */
 public abstract class Pipe {
 
@@ -49,6 +48,7 @@
          * 
          * @return a static value of OP_WRITE
          */
+        @Override
         public final int validOps() {
             return SelectionKey.OP_WRITE;
         }
@@ -76,6 +76,7 @@
          * 
          * @return a static value of OP_READ
          */
+        @Override
         public final int validOps() {
             return SelectionKey.OP_READ;
         }

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/ServerSocketChannel.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/ServerSocketChannel.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/ServerSocketChannel.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/ServerSocketChannel.java Tue Mar  4 00:02:13 2008
@@ -70,6 +70,7 @@
      * @see java.nio.channels.SelectableChannel#validOps()
      * @return Valid operations in bit-set.
      */
+    @Override
     public final int validOps() {
         return SelectionKey.OP_ACCEPT;
     }

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/SocketChannel.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/SocketChannel.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/SocketChannel.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/SocketChannel.java Tue Mar  4 00:02:13 2008
@@ -135,6 +135,7 @@
      * @see java.nio.channels.SelectableChannel#validOps()
      * @return Valid operations in bit-set.
      */
+    @Override
     public final int validOps() {
         return (SelectionKey.OP_CONNECT | SelectionKey.OP_READ | SelectionKey.OP_WRITE);
     }

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/spi/AbstractSelectionKey.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/spi/AbstractSelectionKey.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/spi/AbstractSelectionKey.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/spi/AbstractSelectionKey.java Tue Mar  4 00:02:13 2008
@@ -41,6 +41,7 @@
     /**
      * @see java.nio.channels.SelectionKey#isValid()
      */
+    @Override
     public final boolean isValid() {
         return isValid;
     }
@@ -50,6 +51,7 @@
      * 
      * @see java.nio.channels.SelectionKey#cancel()
      */
+    @Override
     public final void cancel() {
         if (isValid) {
             isValid = false;

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/spi/AbstractSelector.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/spi/AbstractSelector.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/spi/AbstractSelector.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/java/nio/channels/spi/AbstractSelector.java Tue Mar  4 00:02:13 2008
@@ -57,6 +57,7 @@
      * 
      * @see java.nio.channels.Selector#close()
      */
+    @Override
     public synchronized final void close() throws IOException {
         if (isOpen) {
             isOpen = false;
@@ -75,6 +76,7 @@
     /**
      * @see java.nio.channels.Selector#isOpen()
      */
+    @Override
     public final boolean isOpen() {
         return isOpen;
     }
@@ -84,6 +86,7 @@
      * 
      * @see java.nio.channels.Selector#provider()
      */
+    @Override
     public final SelectorProvider provider() {
         return provider;
     }

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/AddressUtil.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/AddressUtil.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/AddressUtil.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/AddressUtil.java Tue Mar  4 00:02:13 2008
@@ -19,6 +19,10 @@
 import java.io.FileDescriptor;
 import java.nio.Buffer;
 import java.nio.channels.Channel;
+import java.nio.channels.DatagramChannel;
+import java.nio.channels.FileChannel;
+import java.nio.channels.ServerSocketChannel;
+import java.nio.channels.SocketChannel;
 
 import org.apache.harmony.luni.platform.FileDescriptorHandler;
 import org.apache.harmony.nio.internal.DirectBuffer;
@@ -49,14 +53,15 @@
     }
 
     /**
-     * Gets the address of native resource held by the given channel, if has
+     * Gets the address of native resource held by the given channel, if it has
      * any.
      * 
-     * For network related channel, including SocketChannel, ServerSocketChannel
-     * and DatagramChannel, this method returns a int of Socket handler in Linux
-     * while returns a SOCKET (UINT_PTR) in windows.
+     * For network related channel, including {@link SocketChannel},
+     * {@link ServerSocketChannel} and {@link DatagramChannel}, this method
+     * returns the Socket handle (long) in Linux, and returns a SOCKET
+     * (UINT_PTR) in windows.
      * 
-     * For FileChannel, this method returns the native file descriptor.
+     * For {@link FileChannel}, this method returns the native file descriptor.
      * 
      * For other channels, this method return 0, which means unsupported
      * operation.

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/FileLockImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/FileLockImpl.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/FileLockImpl.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/FileLockImpl.java Tue Mar  4 00:02:13 2008
@@ -21,7 +21,7 @@
 import java.nio.channels.FileChannel;
 import java.nio.channels.FileLock;
 
-/*
+/**
  * The concrete implementation of an NIO file lock object.
  */
 final class FileLockImpl extends FileLock {
@@ -29,35 +29,41 @@
     // Remembers if this lock has been released via the API.
     private boolean isReleased = false;
 
-    /*
+    /**
      * Answers a new file lock object with the given parameters.
      * 
-     * @param channel the file channel hosting the lock. @param position the
-     * start position of the lock, in bytes @param size the length of the lock,
-     * in bytes @param shared whether this lock is shared (true) or exclusive
-     * (false)
+     * @param channel
+     *            the file channel hosting the lock.
+     * @param position
+     *            the start position of the lock, in bytes
+     * @param size
+     *            the length of the lock, in bytes
+     * @param shared
+     *            whether this lock is shared (true) or exclusive (false)
      */
     public FileLockImpl(FileChannel channel, long position, long size,
             boolean shared) {
         super(channel, position, size, shared);
     }
 
-    /*
+    /**
      * Tests to see if the lock is valid. A lock can be invalidated if the
      * channel it is acquired on is closed or if it is released. (non-Javadoc)
      * 
      * @see java.nio.channels.FileLock#isValid()
      */
+    @Override
     public boolean isValid() {
         return !isReleased && channel().isOpen();
     }
 
-    /*
+    /**
      * Releases the file lock on the channel that acquired it. Releasing an
      * invalid lock has no effect.
      * 
      * @see java.nio.channels.FileLock#release()
      */
+    @Override
     public void release() throws IOException {
         if (!channel().isOpen()) {
             throw new ClosedChannelException();

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/IOUtil.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/IOUtil.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/IOUtil.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/IOUtil.java Tue Mar  4 00:02:13 2008
@@ -29,7 +29,7 @@
 import org.apache.harmony.nio.Util;
 import org.apache.harmony.nio.internal.nls.Messages;
 
-/*
+/**
  * Static methods for I/O util. Used by io package and nio package.
  */
 public final class IOUtil {

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/PipeImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/PipeImpl.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/PipeImpl.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/PipeImpl.java Tue Mar  4 00:02:13 2008
@@ -108,7 +108,7 @@
             super(provider);
             sourceServer = provider.openServerSocketChannel();
             sourceServer.socket().bind(
-                    new InetSocketAddress(InetAddress.getLocalHost(), 0));
+                new InetSocketAddress(InetAddress.getByName(null), 0));
             serverPort = sourceServer.socket().getLocalPort();
         }
 
@@ -161,8 +161,8 @@
         }
 
         public boolean finishConnect() throws IOException {
-            return sinkSocket.connect(new InetSocketAddress(InetAddress
-                    .getLocalHost(), serverPort));
+            return sinkSocket.connect(
+                new InetSocketAddress(InetAddress.getByName(null), serverPort));
         }
 
         protected void implCloseSelectableChannel() throws IOException {

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SocketChannelImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SocketChannelImpl.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SocketChannelImpl.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SocketChannelImpl.java Tue Mar  4 00:02:13 2008
@@ -449,7 +449,7 @@
                 int length = target.remaining();
                 if (target.isDirect()) {
                     long address = AddressUtil.getDirectBufferAddress(target);
-                    readCount = networkSystem.readDirect(fd, address, offset,
+                    readCount = networkSystem.readDirect(fd, address + offset,
                             length, (isBlocking() ? TIMEOUT_BLOCK
                                     : TIMEOUT_NONBLOCK));
                 } else {
@@ -546,7 +546,7 @@
                 }
                 if (source.isDirect()) {
                     long address = AddressUtil.getDirectBufferAddress(source);
-                    writeCount = networkSystem.writeDirect(fd, address, pos,
+                    writeCount = networkSystem.writeDirect(fd, address + pos,
                             length);
                 } else if (source.hasArray()) {
                     pos += source.arrayOffset();

Modified: harmony/enhanced/classlib/branches/java6/modules/nio/src/test/java/common/org/apache/harmony/nio/tests/java/nio/channels/SocketChannelTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/nio/src/test/java/common/org/apache/harmony/nio/tests/java/nio/channels/SocketChannelTest.java?rev=633384&r1=633383&r2=633384&view=diff
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/nio/src/test/java/common/org/apache/harmony/nio/tests/java/nio/channels/SocketChannelTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/nio/src/test/java/common/org/apache/harmony/nio/tests/java/nio/channels/SocketChannelTest.java Tue Mar  4 00:02:13 2008
@@ -22,6 +22,7 @@
 import java.io.OutputStream;
 import java.net.BindException;
 import java.net.ConnectException;
+import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
@@ -2028,6 +2029,42 @@
         }
     }
     
+    public void testReadByteBuffer_Direct2() throws IOException {
+        byte[] request = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+        ByteBuffer buffer = ByteBuffer.allocateDirect(128);
+
+        ServerSocketChannel server = ServerSocketChannel.open();
+        server.socket().bind(
+                new InetSocketAddress(InetAddress.getLocalHost(), 0), 5);
+        Socket client = new Socket(InetAddress.getLocalHost(), server.socket()
+                .getLocalPort());
+        client.setTcpNoDelay(false);
+        Socket worker = server.socket().accept();
+        SocketChannel workerChannel = worker.getChannel();
+
+        OutputStream out = client.getOutputStream();
+        out.write(request);
+        out.close();
+
+        buffer.limit(5);
+        int bytesRead = workerChannel.read(buffer);
+        assertEquals(5, bytesRead);
+        assertEquals(5, buffer.position());
+
+        buffer.limit(request.length);
+        bytesRead = workerChannel.read(buffer);
+        assertEquals(6, bytesRead);
+
+        buffer.flip();
+        assertEquals(request.length, buffer.limit());
+
+        assertEquals(ByteBuffer.wrap(request), buffer);
+
+        client.close();
+        worker.close();
+        server.close();
+    }
+
     public void testReadByteBuffer_BufNull() throws Exception {
         assertTrue(this.server1.isBound());
         java.nio.ByteBuffer readBuf = java.nio.ByteBuffer.allocate(0);