You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2012/06/12 00:07:33 UTC

[3/4] git commit: Convert TestNG to Spock

Convert TestNG to Spock


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/2fcbeefa
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/2fcbeefa
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/2fcbeefa

Branch: refs/heads/master
Commit: 2fcbeefa611e45f2d4d9f3d2143007cd4ec5f4b7
Parents: 0028c83
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Mon Jun 11 14:07:19 2012 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Mon Jun 11 14:07:19 2012 -0700

----------------------------------------------------------------------
 .../ioc/util/CaseInsensitiveMapSpec.groovy         |  303 ++++++++++++
 .../tapestry5/ioc/util/CaseInsensitiveMapTest.java |  357 ---------------
 2 files changed, 303 insertions(+), 357 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/2fcbeefa/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/util/CaseInsensitiveMapSpec.groovy
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/util/CaseInsensitiveMapSpec.groovy b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/util/CaseInsensitiveMapSpec.groovy
new file mode 100644
index 0000000..b413af2
--- /dev/null
+++ b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/util/CaseInsensitiveMapSpec.groovy
@@ -0,0 +1,303 @@
+package org.apache.tapestry5.ioc.util
+
+import spock.lang.Specification
+
+
+class CaseInsensitiveMapSpec extends Specification {
+
+  CaseInsensitiveMap map = new CaseInsensitiveMap([fred: "flintstone", barney: "rubble", wilma: "flinstone", betty: "rubble"])
+
+  def "get() is case insensitive"() {
+    def map = new CaseInsensitiveMap()
+
+    def value = "flintstone"
+
+    when:
+
+    map.put("fred", value)
+
+    then:
+
+    map.get("fred").is(value)
+    map.get("Fred").is(value)
+  }
+
+  def "containsKey() is case insensitive"() {
+
+    expect:
+
+    map.containsKey("fred")
+    map.containsKey("Fred")
+    map.containsKey("barney")
+    map.containsKey("wilma")
+    !map.containsKey("dino")
+  }
+
+  def "remove() is case insensitive"() {
+    expect:
+
+    map.containsKey("fred")
+    !map.isEmpty()
+
+    when:
+
+    map.remove("FrED")
+
+    then:
+
+    map.keySet() == ["barney", "wilma", "betty"] as Set
+  }
+
+  def "copying Map constructor"() {
+    def standard = [fred: "flintstone", barney: "rubble", wilma: "flintstone"]
+
+    when:
+
+    def original = new CaseInsensitiveMap(standard)
+
+    then:
+
+    original == standard
+
+    when:
+
+    def copy = new CaseInsensitiveMap(original)
+
+    then:
+
+    copy == original
+  }
+
+  def "comparison of two CaseInsensitiveMaps ignores case"() {
+    def lower = new CaseInsensitiveMap([fred: "flintstone", barney: "rubble"])
+    def upper = new CaseInsensitiveMap([Fred: "flintstone", Barney: "rubble"])
+
+    expect:
+
+    upper == lower
+  }
+
+  def "put with different case replaces the old key"() {
+
+    expect:
+
+    map.keySet() == ["fred", "barney", "betty", "wilma"] as Set
+
+
+    when:
+
+    map.put("FRED", "flintstone")
+
+    then:
+
+    map.keySet() == ["FRED", "barney", "betty", "wilma"] as Set
+  }
+
+  def "get with missing key is null"() {
+    expect:
+
+    map.notFound == null
+  }
+
+  def "get with non-string key is null"() {
+    expect:
+
+    map.get(this) == null
+  }
+
+  def "expansion of the internal entry array"() {
+
+    def count = 2000
+
+    def map = new CaseInsensitiveMap()
+
+    count.times { it ->
+      assert map.put("key_$it" as String, it) == null
+    }
+
+    when:
+
+    count.times { it ->
+      assert map.get("key_$it" as String) == it
+    }
+
+    then:
+
+    map.size() == count
+    map.entrySet().size() == count
+
+    when:
+
+    map.clear()
+
+    then:
+
+    map.size() == 0
+
+  }
+
+  def "change value via entrySet()"() {
+    def map = new CaseInsensitiveMap()
+
+    map.put("fred", "flintstone")
+
+    when:
+
+    map.entrySet().each { entry -> entry.value = "murray" }
+
+    then:
+
+    map.get("fred") == "murray"
+  }
+
+  def "entrySet iterator fails fast after remove"() {
+
+    def i = map.entrySet().iterator()
+
+    i.next()
+    map.remove("betty")
+
+    when:
+
+    i.next()
+
+    then:
+
+    thrown(ConcurrentModificationException)
+  }
+
+  def "entrySet iterator fails fast after put"() {
+
+    def i = map.entrySet().iterator()
+
+    i.next()
+    map.put("zaphod", "breeblebrox")
+
+    when:
+
+    i.next()
+
+    then:
+
+    thrown(ConcurrentModificationException)
+  }
+
+  def "iterator may remove without concurrent exception"() {
+
+    def i = map.entrySet().iterator()
+
+    while (i.hasNext()) {
+      if (i.next().key == "wilma") { i.remove() }
+    }
+
+    expect:
+
+    map.keySet() == ["barney", "betty", "fred"] as Set
+  }
+
+  def "contains via entrySet"() {
+
+    def set = map.entrySet()
+
+    expect:
+
+    set.contains(newMapEntry("fred", "flintstone"))
+    set.contains(newMapEntry("Fred", "flintstone"))
+
+    !set.contains(newMapEntry("Zaphod", "Breeblebox"))
+    !set.contains(newMapEntry("fred", "murray"))
+  }
+
+  def "remove via entrySet"() {
+
+    def set = map.entrySet()
+
+    when:
+
+    assert set.remove(newMapEntry("Zaphod", "Breeblrox")) == false
+    assert set.remove(newMapEntry("fred", "murray")) == false
+
+    assert set.remove(newMapEntry("fred", "flintstone")) == true
+
+    then:
+
+    map.keySet() == ["barney", "wilma", "betty"] as Set
+  }
+
+  def newMapEntry(key, value) {
+    return new Map.Entry() {
+
+      @Override
+      Object getKey() {
+        return key
+      }
+
+      @Override
+      Object getValue() {
+        return value;
+      }
+
+      @Override
+      Object setValue(Object newValue) {
+        value = newValue
+      }
+    }
+  }
+
+  def "null is a valid key"() {
+    when:
+
+    map.put(null, "NULL")
+
+    then:
+
+    map.get(null) == "NULL"
+  }
+
+  def "clearing the entrySet clears the map"() {
+    expect:
+
+    !map.isEmpty()
+    !map.entrySet().isEmpty()
+
+    when:
+
+    map.entrySet().clear()
+
+    then:
+
+    map.isEmpty()
+  }
+
+  def "next() after last entry in entrySet is a failure"() {
+    Iterator i = map.entrySet().iterator()
+
+    while (i.hasNext()) { i.next() }
+
+    when:
+
+    i.next()
+
+    then:
+
+    thrown(NoSuchElementException)
+  }
+
+  def "serialize/deserialize copies all data"() {
+
+    def baos = new ByteArrayOutputStream()
+    def oos = new ObjectOutputStream(baos)
+
+    oos.writeObject(map)
+    oos.close()
+
+    def bais = new ByteArrayInputStream(baos.toByteArray())
+    ObjectInputStream ois = new ObjectInputStream(bais)
+
+    def copy = ois.readObject()
+
+    expect:
+
+    copy == map
+  }
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/2fcbeefa/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMapTest.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMapTest.java b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMapTest.java
deleted file mode 100644
index 4cf13ec..0000000
--- a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMapTest.java
+++ /dev/null
@@ -1,357 +0,0 @@
-// 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.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newCaseInsensitiveMap;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.*;
-
-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"));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void serialize_deserialize() throws Exception
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-        map.put("barney", "rubble");
-        map.put("wilma", "flinstone");
-        map.put("betty", "rubble");
-
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        ObjectOutputStream oos = new ObjectOutputStream(baos);
-
-        oos.writeObject(map);
-        oos.close();
-
-        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        ObjectInputStream ois = new ObjectInputStream(bais);
-
-        Map<String, String> copy = (Map<String, String>) ois.readObject();
-
-        assertEquals(copy, map);
-    }
-
-    @SuppressWarnings("unchecked")
-    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();
-            }
-
-        };
-    }
-}