You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by al...@apache.org on 2007/03/27 16:21:09 UTC

svn commit: r522922 - in /incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src: main/java/wicket/util/collections/MiniMap.java test/java/wicket/util/collections/ test/java/wicket/util/collections/MiniMapTest.java

Author: almaw
Date: Tue Mar 27 07:21:08 2007
New Revision: 522922

URL: http://svn.apache.org/viewvc?view=rev&rev=522922
Log:
Really fix WICKET-428, complete with unit test.

Added:
    incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/wicket/util/collections/
    incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/wicket/util/collections/MiniMapTest.java   (with props)
Modified:
    incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/util/collections/MiniMap.java

Modified: incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/util/collections/MiniMap.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/util/collections/MiniMap.java?view=diff&rev=522922&r1=522921&r2=522922
==============================================================================
--- incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/util/collections/MiniMap.java (original)
+++ incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/util/collections/MiniMap.java Tue Mar 27 07:21:08 2007
@@ -229,19 +229,19 @@
 				{
 					public boolean hasNext()
 					{
-						return i < size;
+						return i < size - 1;
 					}
 
 					public Object next()
 					{
-						// Find next key
-						i = nextKey(nextIndex(i));
-
 						// Just in case... (WICKET-428)
 						if (!hasNext()) {
 							throw new NoSuchElementException();
 						}
 						
+						// Find next key
+						i = nextKey(nextIndex(i));
+						
 						// Get key
 						return keys[i];
 					}
@@ -273,6 +273,9 @@
 		{
 			public Object get(final int index)
 			{
+				if (index > size - 1) {
+					throw new IndexOutOfBoundsException();
+				}
 				int keyIndex = nextKey(0);
 
 				for (int i = 0; i < index; i++)

Added: incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/wicket/util/collections/MiniMapTest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/wicket/util/collections/MiniMapTest.java?view=auto&rev=522922
==============================================================================
--- incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/wicket/util/collections/MiniMapTest.java (added)
+++ incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/wicket/util/collections/MiniMapTest.java Tue Mar 27 07:21:08 2007
@@ -0,0 +1,98 @@
+/*
+ * 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 wicket.util.collections;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+/**
+ * @author almaw
+ */
+public class MiniMapTest extends TestCase
+{
+	private static final Object FOO = new Object();
+	private static final Object BAR = new Object();
+	
+	/**
+	 * Basic test for keySet(), entrySet() and values(). 
+	 */
+	public void testMiniMap() {
+		MiniMap m = new MiniMap(3);
+		m.put(FOO, BAR);
+		
+		// Test .keySet();
+		Set s = m.keySet();
+		assertEquals(1, m.size());
+		
+		Iterator i = s.iterator();
+		assertTrue(i.hasNext());
+		Object key = i.next();
+		assertEquals(FOO, key);
+		assertFalse(i.hasNext());
+		try {
+			i.next();
+			fail("Expected i.next() to fail with NoSuchElementException");
+		}
+		catch (NoSuchElementException e) {
+			// Swallow this.
+		}
+		
+		// Do approx the same again with the .entrySet()
+		s = m.entrySet();
+		assertEquals(1, m.size());
+		
+		i = s.iterator();
+		assertTrue(i.hasNext());
+		Map.Entry entry = (Map.Entry)i.next();
+		assertEquals(FOO, entry.getKey());
+		assertEquals(BAR, entry.getValue());
+		assertFalse(i.hasNext());
+		try {
+			i.next();
+			fail("Expected i.next() to fail with NoSuchElementException");
+		}
+		catch (NoSuchElementException e) {
+			// Swallow this.
+		}
+		
+		// Do approx the same again with the .values()
+		Collection v = m.values();
+		assertEquals(1, m.size());
+		
+		i = v.iterator();
+		assertTrue(i.hasNext());
+		Object value = i.next();
+		assertEquals(BAR, value);
+		assertFalse(i.hasNext());
+		try {
+			Object wibble = i.next();
+			wibble = i.next();
+			wibble = i.next();
+			wibble = i.next();
+			wibble = i.next();
+			fail("Expected i.next() to fail with NoSuchElementException");
+		}
+		catch (NoSuchElementException e) {
+			// Swallow this.
+		}
+	}
+}

Propchange: incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/test/java/wicket/util/collections/MiniMapTest.java
------------------------------------------------------------------------------
    svn:eol-style = native