You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/02/11 00:43:28 UTC
svn commit: r505796 [2/2] - in /tapestry/tapestry5/tapestry-ioc/trunk/src:
main/java/org/apache/tapestry/ioc/
main/java/org/apache/tapestry/ioc/internal/
main/java/org/apache/tapestry/ioc/internal/services/
main/java/org/apache/tapestry/ioc/internal/ut...
Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/OrdererTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/OrdererTest.java?view=diff&rev=505796&r1=505795&r2=505796
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/OrdererTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/util/OrdererTest.java Sat Feb 10 15:43:27 2007
@@ -231,6 +231,27 @@
verify();
}
+
+ @Test
+ public void case_insensitivity()
+ {
+ Log log = newLog();
+
+ replay();
+
+ Orderer<String> o = new Orderer<String>(log);
+
+ o.add("foo.fred", "FRED", "after:Wilma");
+ o.add("foo.barney", "BARNEY", "after:Fred,BETTY");
+ o.add("foo.wilma", "WILMA");
+ o.add("foo.betty", "BETTY", "before:Foo.Wilma");
+
+ List<String> ordered = o.getOrdered();
+
+ assertEquals(ordered, Arrays.asList("BETTY", "WILMA", "FRED", "BARNEY"));
+
+ verify();
+ }
@Test
public void cross_module()
Added: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/util/CaseInsensitiveMapTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/util/CaseInsensitiveMapTest.java?view=auto&rev=505796
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/util/CaseInsensitiveMapTest.java (added)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/util/CaseInsensitiveMapTest.java Sat Feb 10 15:43:27 2007
@@ -0,0 +1,336 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.ioc.util;
+
+import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newCaseInsensitiveMap;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.ConcurrentModificationException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
+import org.apache.tapestry.ioc.internal.util.CollectionFactory;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class CaseInsensitiveMapTest extends Assert
+{
+ @Test
+ public void basic_get_put_remove()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ String value = "flintstone";
+
+ map.put("fred", value);
+
+ assertEquals(map.toString(), "{fred=flintstone}");
+
+ assertSame(map.get("fred"), value);
+ assertSame(map.get("Fred"), value);
+
+ assertSame(map.remove("FRED"), value);
+
+ assertFalse(map.containsKey("fred"));
+
+ assertTrue(map.isEmpty());
+ }
+
+ @Test
+ public void copy_map_constructor()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+ map.put("barney", "rubble");
+ map.put("wilma", "flinstone");
+ map.put("betty", "rubble");
+
+ Map<String, String> copy = newCaseInsensitiveMap(map);
+
+ assertEquals(copy, map);
+ }
+
+ @Test
+ public void put_with_different_case_replaces()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+
+ String value = "Murray";
+
+ map.put("Fred", value);
+
+ assertEquals(map.size(), 1);
+
+ assertSame(map.get("fred"), value);
+
+ assertEquals(map.toString(), "{Fred=Murray}");
+ }
+
+ @Test
+ public void get_with_missing_key_is_null()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+
+ assertNull(map.get("barney"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void get_with_non_string_key_is_null()
+ {
+ Map map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+
+ assertNull(map.get(this));
+ }
+
+ /**
+ * Add a large number of keys which should stress the code that adds and expands values into the
+ * map.
+ */
+ @Test
+ public void expansion_of_internal_entry_array()
+ {
+ Map<String, Integer> map = newCaseInsensitiveMap();
+
+ int COUNT = 2000;
+
+ for (int i = 0; i < COUNT; i++)
+ {
+ assertNull(map.put("key_" + i, i));
+ }
+
+ // Now check that the values are still there.
+
+ for (int i = 0; i < COUNT; i++)
+ {
+ assertEquals(map.get("KEY_" + i).intValue(), i);
+ }
+
+ assertEquals(map.size(), COUNT);
+ assertEquals(map.entrySet().size(), COUNT);
+
+ map.clear();
+
+ assertEquals(map.size(), 0);
+ }
+
+ @Test
+ public void change_value_via_entry_set()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+
+ Map.Entry<String, String> me = map.entrySet().iterator().next();
+
+ String value = "murray";
+
+ me.setValue(value);
+
+ assertSame(map.get("fred"), value);
+ }
+
+ @Test(expectedExceptions =
+ { ConcurrentModificationException.class })
+ public void iterator_fail_fast_after_remove()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+ map.put("barney", "rubble");
+ map.put("wilma", "flinstone");
+ map.put("betty", "rubble");
+
+ Iterator i = map.entrySet().iterator();
+
+ i.next();
+
+ map.remove("betty");
+
+ i.next();
+ }
+
+ @Test(expectedExceptions =
+ { ConcurrentModificationException.class })
+ public void iterator_fail_fast_on_next()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+ map.put("barney", "rubble");
+ map.put("wilma", "flinstone");
+ map.put("betty", "rubble");
+
+ Iterator<Map.Entry<String, String>> i = map.entrySet().iterator();
+
+ while (i.hasNext())
+ {
+ if (i.next().getKey().equals("betty")) map.put("pebbles", "flintstone");
+ }
+ }
+
+ @Test
+ public void iterator_may_remove_without_concurrent_exception()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+ map.put("barney", "rubble");
+ map.put("wilma", "flinstone");
+ map.put("betty", "rubble");
+
+ Iterator<Map.Entry<String, String>> i = map.entrySet().iterator();
+
+ while (i.hasNext())
+ {
+ if (i.next().getKey().equals("wilma")) i.remove();
+ }
+
+ List<String> keys = CollectionFactory.newList(map.keySet());
+ Collections.sort(keys);
+
+ assertEquals(keys, Arrays.asList("barney", "betty", "fred"));
+ }
+
+ @Test
+ public void contains_via_entry_set()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+ map.put("barney", "rubble");
+ map.put("wilma", "flinstone");
+ map.put("betty", "rubble");
+
+ Set<Map.Entry<String, String>> entrySet = map.entrySet();
+
+ assertTrue(entrySet.contains(newMapEntry("fred", "flintstone")));
+ assertTrue(entrySet.contains(newMapEntry("Fred", "flintstone")));
+
+ assertFalse(entrySet.contains(newMapEntry("Zaphod", "Beeblebox")));
+ assertFalse(entrySet.contains(newMapEntry("fred", "murray")));
+ }
+
+ @Test
+ public void remove_via_entry_set()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+ map.put("barney", "rubble");
+ map.put("wilma", "flinstone");
+ map.put("betty", "rubble");
+
+ Set<Map.Entry<String, String>> entrySet = map.entrySet();
+
+ assertFalse(entrySet.remove(newMapEntry("Zaphod", "Beeblebox")));
+ assertFalse(entrySet.remove(newMapEntry("fred", "murray")));
+
+ assertTrue(entrySet.remove(newMapEntry("Fred", "flintstone")));
+ }
+
+ @Test
+ public void null_key()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put(null, "NULL");
+
+ assertEquals(map.get(null), "NULL");
+ }
+
+ @Test
+ public void clear_entry_set_clears_map()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+
+ map.entrySet().clear();
+
+ assertTrue(map.isEmpty());
+ }
+
+ @Test(expectedExceptions =
+ { NoSuchElementException.class })
+ public void next_after_last_entry_is_failure()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+
+ Iterator i = map.entrySet().iterator();
+
+ while (i.hasNext())
+ i.next();
+
+ i.next();
+ }
+
+ @Test
+ public void entry_set_iterator_sees_all_keys()
+ {
+ Map<String, String> map = newCaseInsensitiveMap();
+
+ map.put("fred", "flintstone");
+ map.put("barney", "rubble");
+ map.put("wilma", "flinstone");
+ map.put("betty", "rubble");
+
+ Iterator<Map.Entry<String, String>> i = map.entrySet().iterator();
+ List<String> keys = CollectionFactory.newList();
+
+ while (i.hasNext())
+ keys.add(i.next().getKey());
+
+ Collections.sort(keys);
+
+ assertEquals(keys, Arrays.asList("barney", "betty", "fred", "wilma"));
+ }
+
+ private <K, V> Map.Entry<K, V> newMapEntry(final K key, final V value)
+ {
+ return new Map.Entry()
+ {
+
+ public Object getKey()
+ {
+ return key;
+ }
+
+ public Object getValue()
+ {
+ return value;
+ }
+
+ public Object setValue(Object value)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ };
+ }
+}
Added: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/util/StackTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/util/StackTest.java?view=auto&rev=505796
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/util/StackTest.java (added)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/util/StackTest.java Sat Feb 10 15:43:27 2007
@@ -0,0 +1,96 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.ioc.util;
+
+import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newStack;
+
+import org.apache.tapestry.ioc.test.TestBase;
+import org.testng.annotations.Test;
+
+public class StackTest extends TestBase
+{
+ @Test
+ public void peek_in_empty_stack_is_failure()
+ {
+ Stack<Integer> stack = newStack();
+
+ try
+ {
+ stack.peek();
+ unreachable();
+ }
+ catch (IllegalStateException ex)
+ {
+ assertEquals(ex.getMessage(), "Stack is empty.");
+ }
+ }
+
+ @Test
+ public void pop_in_empty_stack_is_failure()
+ {
+ Stack<Integer> stack = newStack();
+
+ try
+ {
+ stack.pop();
+ unreachable();
+ }
+ catch (IllegalStateException ex)
+ {
+ assertEquals(ex.getMessage(), "Stack is empty.");
+ }
+ }
+
+ @Test
+ public void basic_operations()
+ {
+ Stack<String> stack = newStack();
+
+ assertTrue(stack.isEmpty());
+
+ stack.push("fred");
+ assertEquals(stack.peek(), "fred");
+ assertFalse(stack.isEmpty());
+
+ stack.push("barney");
+ assertEquals(stack.peek(), "barney");
+
+ assertEquals(stack.toString(), "Stack[barney, fred]");
+
+ assertEquals(stack.pop(), "barney");
+ assertEquals(stack.peek(), "fred");
+
+ assertEquals(stack.pop(), "fred");
+ assertTrue(stack.isEmpty());
+ }
+
+ @Test
+ public void expansion_of_inner_data()
+ {
+ final int LIMIT = 1000;
+
+ Stack<Integer> stack = newStack();
+
+ for (int i = 0; i < LIMIT; i++)
+ {
+ stack.push(i);
+ }
+
+ for (int i = LIMIT - 1; i >= 0; i--)
+ {
+ assertEquals(stack.pop().intValue(), i);
+ }
+ }
+}