You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by pe...@apache.org on 2011/09/21 17:43:22 UTC

svn commit: r1173728 - in /river/jtsk/skunk/peterConcurrentPolicy/test/src: org/apache/river/impl/security/policy/util/ org/apache/river/impl/util/ tests/support/

Author: peter_firmstone
Date: Wed Sep 21 15:43:22 2011
New Revision: 1173728

URL: http://svn.apache.org/viewvc?rev=1173728&view=rev
Log:
Reference Collection Utilities

Added:
    river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/SegmentTest.java   (with props)
    river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/
    river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ConcurrentReferenceMapTest.java   (with props)
    river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceCollectionTest.java   (with props)
    river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceListTest.java   (with props)
    river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceMapTest.java   (with props)
    river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/ArrayListOverflow.java   (with props)
    river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/PrintTask.java   (with props)
    river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/StackOverflowTask.java   (with props)

Added: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/SegmentTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/SegmentTest.java?rev=1173728&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/SegmentTest.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/SegmentTest.java Wed Sep 21 15:43:22 2011
@@ -0,0 +1,48 @@
+/*
+ * 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.river.impl.security.policy.util;
+
+import java.util.Properties;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author peter
+ */
+public class SegmentTest {
+    Properties p;
+    public SegmentTest() {
+    }
+    
+    @Before
+    public void setup(){
+       p = new Properties();
+       p.setProperty("java.ext.dirs", "tests:foo:bar:cat");
+    }
+    
+    @Test
+    public void divideAndReplace(){
+        System.out.println("Test divideAndReplace");
+        String policyGrantln = "file:${{java.ext.dirs}}/*";
+    }
+            
+    
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/SegmentTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ConcurrentReferenceMapTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ConcurrentReferenceMapTest.java?rev=1173728&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ConcurrentReferenceMapTest.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ConcurrentReferenceMapTest.java Wed Sep 21 15:43:22 2011
@@ -0,0 +1,126 @@
+/*
+ * 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.river.impl.util;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.lang.ref.Reference;
+import java.util.concurrent.ConcurrentMap;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author Peter Firmstone.
+ */
+public class ConcurrentReferenceMapTest {
+    private ConcurrentMap<Integer, String> instance;
+    // strong references
+    private Integer i1, i2, i3, i4, i5;
+    
+    public ConcurrentReferenceMapTest() {
+    }
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+    
+    @Before
+    public void setUp() {
+        ConcurrentMap<Reference<Integer>, Reference<String>> internal 
+                = new ConcurrentHashMap<Reference<Integer>, Reference<String>>(5);
+        instance = RC.concurrentMap(internal, Ref.WEAK, Ref.STRONG);
+        i1 = 1;
+        i2 = 2;
+        i3 = 3;
+        i4 = 4;
+        i5 = 5;
+        instance.put(i1, "1");
+        instance.put(i2, "2");
+        instance.put(i3, "3");
+        instance.put(i4, "4");
+        instance.put(i5, "5");
+    }
+    
+    @After
+    public void tearDown() {
+    }
+
+    /**
+     * Test of putIfAbsent method, of class ConcurrentReferenceMap.
+     */
+    @Test
+    public void testPutIfAbsent() {
+        System.out.println("putIfAbsent");
+        Integer key = 5;
+        String value = "Five";
+        Object expResult = "5";
+        Object result = instance.putIfAbsent(key, value);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of remove method, of class ConcurrentReferenceMap.
+     */
+    @Test
+    public void testRemove() {
+        System.out.println("remove");
+        Integer key = 4;
+        String value = "4";
+        boolean expResult = true;
+        boolean result = instance.remove(key, value);
+        assertEquals(expResult, result);
+        assertFalse(instance.containsValue(value));
+    }
+
+    /**
+     * Test of replace method, of class ConcurrentReferenceMap.
+     */
+    @Test
+    public void testReplace_3args() {
+        System.out.println("replace");
+        Integer key = 3;
+        String oldValue = "3";
+        String newValue = "Three";
+        boolean expResult = true;
+        boolean result = instance.replace(key, oldValue, newValue);
+        assertEquals(expResult, result);
+        assertFalse(instance.containsValue(oldValue));
+    }
+
+    /**
+     * Test of replace method, of class ConcurrentReferenceMap.
+     */
+    @Test
+    public void testReplace_GenericType_GenericType() {
+        System.out.println("replace");
+        Integer key = 2;
+        String value = "Two";
+        String expResult = "2";
+        String result = instance.replace(key, value);
+        assertEquals(expResult, result);
+    }
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ConcurrentReferenceMapTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceCollectionTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceCollectionTest.java?rev=1173728&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceCollectionTest.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceCollectionTest.java Wed Sep 21 15:43:22 2011
@@ -0,0 +1,273 @@
+/*
+ * 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.river.impl.util;
+
+import java.util.ArrayList;
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ * This test also validates ReferenceSet and most of ReferenceList.
+ * 
+ * @author peter
+ */
+public class ReferenceCollectionTest {
+    
+    private ReferenceCollection<String> instance;
+    private String truck = "truck";
+    private String shovel = "shovel";
+    private String grader = "grader";
+    private String waterTruck = "water truck";
+    private String roller = "roller";
+    
+    public ReferenceCollectionTest() {
+    }
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+    
+    @Before
+    public void setUp() {
+        instance = new ReferenceCollection<String>(new ArrayList<Reference<String>>(), Ref.WEAK_IDENTITY);
+        instance.add(truck);
+        instance.add(shovel);
+        instance.add(grader);
+        instance.add(waterTruck);
+        instance.add(roller);
+    }
+    
+    @After
+    public void tearDown() {
+    }
+
+    /**
+     * Test of getQueue method, of class ReferenceCollection.
+     */
+    @Test
+    public void testGetQueue() {
+        System.out.println("getQueue");
+        ReferenceQueue result = instance.getQueue();
+        assertTrue(result instanceof ReferenceQueue);
+    }
+
+    /**
+     * Test of getType method, of class ReferenceCollection.
+     */
+    @Test
+    public void testGetType() {
+        System.out.println("getType");
+        Ref expResult = Ref.WEAK_IDENTITY;
+        Ref result = instance.getType();
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of size method, of class ReferenceCollection.
+     */
+    @Test
+    public void testSize() {
+        System.out.println("size");
+        int expResult = 5;
+        int result = instance.size();
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of isEmpty method, of class ReferenceCollection.
+     */
+    @Test
+    public void testIsEmpty() {
+        System.out.println("isEmpty");
+        boolean expResult = false;
+        boolean result = instance.isEmpty();
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of contains method, of class ReferenceCollection.
+     */
+    @Test
+    public void testContains() {
+        System.out.println("contains");
+        String o = "truck";
+        boolean expResult = true;
+        boolean result = instance.contains(o);
+        // This only passes because String uses object pooling. 
+        // For other objects this would fail when identity and equality
+        // are not the same.
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of iterator method, of class ReferenceCollection.
+     */
+    @Test
+    public void testIterator() {
+        System.out.println("iterator");
+        Collection<String> expResult = new ArrayList<String>(5);
+        expResult.add(truck);
+        expResult.add(shovel);
+        expResult.add(waterTruck);
+        expResult.add(grader);
+        expResult.add(roller);
+        Collection<String> result = new ArrayList<String>(5);
+        Iterator<String> it = instance.iterator();
+        while (it.hasNext()){
+            result.add(it.next());
+        }
+        assertTrue(expResult.containsAll(result));
+    }
+
+    /**
+     * Test of toArray method, of class ReferenceCollection.
+     */
+    @Test
+    public void testToArray_0args() {
+        System.out.println("toArray");
+        Object[] expResult = {truck, shovel, waterTruck, grader, roller};
+        Object[] result = instance.toArray();
+        assertTrue(expResult.length == result.length);
+        Collection res = Arrays.asList(result);
+        Collection exp = Arrays.asList(expResult);
+        assertTrue(exp.containsAll(res));
+    }
+
+    /**
+     * Test of toArray method, of class ReferenceCollection.
+     */
+    @Test
+    public void testToArray_GenericType() {
+        System.out.println("toArray");
+        String[] a = new String [5];
+        String[] expResult = {truck, shovel, waterTruck, grader, roller};
+        String[] result = instance.toArray(a);
+        assertTrue(expResult.length == result.length);
+        Collection<String> res = Arrays.asList(result);
+        Collection<String> exp = Arrays.asList(expResult);
+        assertTrue(exp.containsAll(res));
+    }
+
+    /**
+     * Test of add method, of class ReferenceCollection.
+     */
+    @Test
+    public void testAdd() {
+        System.out.println("add");
+        truck = "cat797";
+        boolean expResult = true;
+        boolean result = instance.add(truck);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of remove method, of class ReferenceCollection.
+     */
+    @Test
+    public void testRemove() {
+        System.out.println("remove");
+        boolean expResult = true;
+        boolean result = instance.remove(shovel);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of containsAll method, of class ReferenceCollection.
+     */
+    @Test
+    public void testContainsAll() {
+        System.out.println("containsAll");
+        Collection<String> c = new ArrayList<String>(4);
+        c.add(truck);
+        c.add(grader);
+        c.add(waterTruck);
+        c.add(roller);
+        boolean expResult = true;
+        boolean result = instance.containsAll(c);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of addAll method, of class ReferenceCollection.
+     */
+    @Test
+    public void testAddAll() {
+        System.out.println("addAll");
+        Collection<String> c = new ArrayList<String>(2);
+        c.add("Kress");
+        c.add("Bucyrus");
+        boolean expResult = true;
+        boolean result = instance.addAll(c);
+        assertEquals(expResult, result);
+        assertTrue(instance.containsAll(c));
+    }
+
+    /**
+     * Test of removeAll method, of class ReferenceCollection.
+     */
+    @Test
+    public void testRemoveAll() {
+        System.out.println("removeAll");
+        Collection<String> c = new ArrayList<String>(2);
+        c.add(grader);
+        c.add(roller);
+        boolean expResult = true;
+        boolean result = instance.removeAll(c);
+        assertEquals(expResult, result);
+        assertFalse(instance.containsAll(c));
+    }
+
+    /**
+     * Test of retainAll method, of class ReferenceCollection.
+     */
+    @Test
+    public void testRetainAll() {
+        System.out.println("retainAll");
+        Collection<String> c = new ArrayList<String>(2);
+        c.add(truck);
+        c.add(waterTruck);
+        boolean expResult = true;
+        boolean result = instance.retainAll(c);
+        assertEquals(expResult, result);
+        assertTrue( instance.size() == 2);
+    }
+
+    /**
+     * Test of clear method, of class ReferenceCollection.
+     */
+    @Test
+    public void testClear() {
+        System.out.println("clear");
+        instance.clear();
+        assertTrue( instance.isEmpty() );
+    }
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceCollectionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceListTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceListTest.java?rev=1173728&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceListTest.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceListTest.java Wed Sep 21 15:43:22 2011
@@ -0,0 +1,219 @@
+/*
+ * 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.river.impl.util;
+
+import java.lang.ref.Reference;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.ListIterator;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author peter
+ */
+public class ReferenceListTest {
+    private List<String> instance;
+    private String truck = "truck";
+    private String shovel = "shovel";
+    private String grader = "grader";
+    private String waterTruck = "water truck";
+    private String roller = "roller";
+    
+    public ReferenceListTest() {
+    }
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+    
+    @Before
+    public void setUp() {
+        instance = new ReferenceList<String>(new ArrayList<Reference<String>>(), Ref.WEAK_IDENTITY);
+        instance.add(truck);
+        instance.add(shovel);
+        instance.add(grader);
+        instance.add(waterTruck);
+        instance.add(roller);
+    }
+    
+    @After
+    public void tearDown() {
+    }
+
+    /**
+     * Test of addAll method, of class ReferenceList.
+     */
+    @Test
+    public void testAddAll() {
+        System.out.println("addAll");
+        int index = 5;
+        String [] list = {"Bucyrus", "Marion", "Page"};
+        Collection<String> c = Arrays.asList(list);
+        boolean expResult = true;
+        boolean result = instance.addAll(index, c);
+        System.out.println(instance);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of get method, of class ReferenceList.
+     */
+    @Test
+    public void testGet() {
+        System.out.println("get");
+        int index = 2;
+        String expResult = grader;
+        Object result = instance.get(index);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of set method, of class ReferenceList.
+     */
+    @Test
+    public void testSet() {
+        System.out.println("set");
+        int index = 2;
+        String element = "dozer";
+        String expResult = grader;
+        String result = instance.set(index, element);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of add method, of class ReferenceList.
+     */
+    @Test
+    public void testAdd() {
+        System.out.println("add");
+        int index = 4;
+        String element = "drill";
+        instance.add(index, element);
+        String result = instance.get(index);
+        assertEquals(element , result);
+    }
+
+    /**
+     * Test of remove method, of class ReferenceList.
+     */
+    @Test
+    public void testRemove() {
+        System.out.println("remove");
+        int index = 3;
+        String expResult = waterTruck;
+        String result = instance.remove(index);
+        assertEquals(expResult, result);
+    }
+
+       /**
+     * Test of indexOf method, of class ReferenceList.
+     */
+    @Test
+    public void testGC() {
+        System.out.println("test Garbage collection");
+        String o = "drill";
+        int expResult = -1;
+        int result = instance.indexOf(o);
+        System.out.println(instance);
+        assertEquals(expResult, result);
+    }
+    
+    /**
+     * Test of indexOf method, of class ReferenceList.
+     */
+    @Test
+    public void testIndexOf() {
+        System.out.println("indexOf");
+        String o = "shovel";
+        int expResult = 1;
+        int result = instance.indexOf(o);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of lastIndexOf method, of class ReferenceList.
+     */
+    @Test
+    public void testLastIndexOf() {
+        System.out.println("lastIndexOf");
+        String o = roller;
+        int expResult = 4;
+        int result = instance.lastIndexOf(o);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of listIterator method, of class ReferenceList.
+     */
+    @Test
+    public void testListIterator_0args() {
+        System.out.println("listIterator");
+        List<String> expResult = new ArrayList<String>();
+        ListIterator<String> i = instance.listIterator();
+        while( i.hasNext()){
+            expResult.add(i.next());
+        }
+        assertTrue(expResult.containsAll(instance));
+    }
+
+    /**
+     * Test of listIterator method, of class ReferenceList.
+     */
+    @Test
+    public void testListIterator_int() {
+        System.out.println("listIterator");
+        int index = 3;
+        Collection<String> expResult = new ArrayList<String>(3);
+        expResult.add(waterTruck);
+        expResult.add(roller);
+        Collection<String> result = new ArrayList<String>();
+        ListIterator<String> i = instance.listIterator(index);
+        while (i.hasNext()){
+            result.add(i.next());
+        }
+        System.out.println(result);
+        assertTrue(expResult.containsAll(result));
+    }
+
+    /**
+     * Test of subList method, of class ReferenceList.
+     */
+    @Test
+    public void testSubList() {
+        System.out.println("subList");
+        int fromIndex = 0;
+        int toIndex = 1;
+        List<String> expResult = new ArrayList<String>();
+        expResult.add(truck);
+        List<String> result = instance.subList(fromIndex, toIndex);
+        assertTrue(result.containsAll(expResult));
+    }
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceListTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceMapTest.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceMapTest.java?rev=1173728&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceMapTest.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceMapTest.java Wed Sep 21 15:43:22 2011
@@ -0,0 +1,232 @@
+/*
+ * 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.river.impl.util;
+
+import java.util.Iterator;
+import java.util.Map.Entry;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.lang.ref.Reference;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author Peter Firmstone.
+ */
+public class ReferenceMapTest {
+    private Map<Integer, String> instance;
+    // strong references
+    private Integer i1, i2, i3, i4, i5;
+    private String s1, s2, s3, s4, s5;
+    
+    public ReferenceMapTest() {
+    }
+
+    @Before
+    public void setUp() {
+        Map<Reference<Integer>, Reference<String>> internal 
+                = new HashMap<Reference<Integer>, Reference<String>>(5);
+        instance = new ReferenceMap<Integer, String>(internal, Ref.WEAK, Ref.STRONG);
+        i1 = 1;
+        i2 = 2;
+        i3 = 3;
+        i4 = 4;
+        i5 = 5;
+        s1 = "One";
+        s2 = "Two";
+        s3 = "Three";
+        s4 = "Four";
+        s5 = "Five";
+        instance.put(i1, s1);
+        instance.put(i2, s2);
+        instance.put(i3, s3);
+        instance.put(i4, s4);
+        instance.put(i5, s5);
+    }
+    
+    @After
+    public void tearDown() {
+    }
+
+    /**
+     * Test of containsKey method, of class ReferenceMap.
+     */
+    @Test
+    public void testContainsKey() {
+        System.out.println("containsKey");
+        instance.put(i1, s1);
+        Integer key = i1;
+        boolean expResult = true;
+        boolean result = instance.containsKey(key);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of containsValue method, of class ReferenceMap.
+     */
+    @Test
+    public void testContainsValue() {
+        System.out.println("containsValue");
+        Object value = "One";
+        boolean expResult = true;
+        boolean result = instance.containsValue(value);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of entrySet method, of class ReferenceMap.
+     * Tests the entry set iterator and the keySet and values methods too.
+     */
+    @Test
+    public void testEntrySet() {
+        System.out.println("entrySet");
+        List<Integer> keys = new ArrayList<Integer>(5);
+        List<String> values = new ArrayList<String>(5);
+        Set<Entry<Integer, String>> result = instance.entrySet();
+        Iterator<Entry<Integer, String>> i = result.iterator();
+        while (i.hasNext()){
+            Entry<Integer, String> e = i.next();
+            keys.add(e.getKey());
+            values.add(e.getValue());
+        }
+        Collection<Integer> k = instance.keySet();
+        Collection<String> v = instance.values();
+        System.out.println(k);
+        System.out.println(v);
+        assertTrue(k.containsAll(keys));
+        assertTrue(v.containsAll(values));
+    }
+    
+    @Test
+    public void testEntrySetMutation(){
+        instance.put(i1, s1);
+        instance.put(i2, s2);
+        instance.put(i3, s3);
+        instance.put(i4, s4);
+        instance.put(i5, s5);
+        Set<Entry<Integer, String>> result = instance.entrySet();
+        Iterator<Entry<Integer, String>> i = result.iterator();
+        while (i.hasNext()){
+            Entry<Integer, String> e = i.next();
+            if (e.getKey().equals(i1)){
+                e.setValue("Big One");
+            }
+        }
+        assertTrue( instance.get(i1).equals("Big One"));
+    }
+
+    /**
+     * Test of get method, of class ReferenceMap.
+     */
+    @Test
+    public void testGet() {
+        System.out.println("get");
+        Object key = 1;
+        Object expResult = "One";
+        Object result = instance.get(key);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of isEmpty method, of class ReferenceMap.
+     */
+    @Test
+    public void testIsEmpty() {
+        System.out.println("isEmpty");
+        boolean expResult = false;
+        boolean result = instance.isEmpty();
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of put method, of class ReferenceMap.
+     */
+    @Test
+    public void testPut() {
+        System.out.println("put");
+        Integer key = 5;
+        String value = "5";
+        Object expResult = "Five";
+        Object result = instance.put(key, value);
+        assertEquals(expResult, result);
+    }
+
+    /**
+     * Test of putAll method, of class ReferenceMap.
+     */
+    @Test
+    public void testPutAll() {
+        System.out.println("putAll");
+        Map<Integer,String> m = new HashMap<Integer, String>();
+        Integer i6 = 6, i7 = 7, i8 = 8;
+        m.put(6,"Six");
+        m.put(7, "Seven");
+        m.put(8, "Eight");
+        instance.putAll(m);
+        assertTrue( instance.containsKey(8));
+        assertTrue( instance.containsValue("Seven"));
+    }
+
+    /**
+     * Test of remove method, of class ReferenceMap.
+     */
+    @Test
+    public void testRemove() {
+        System.out.println("remove");
+        Integer key = 4;
+        Object expResult = "Four";
+        String result = instance.remove(key);
+        assertEquals(expResult, result);
+        assertFalse(instance.containsKey(4));
+        assertFalse(instance.containsValue("Four"));
+    }
+
+    /**
+     * Test of size method, of class ReferenceMap.
+     */
+    @Test
+    public void testSize() {
+        System.out.println("size");
+        Collection<Integer> keys = instance.keySet();
+        int expResult = keys.size();
+        int result = instance.size();
+        System.out.println(instance);
+        assertEquals(expResult, result);
+    }
+
+
+
+     /**
+     * Test of clear method, of class ReferenceMap.
+     */
+    @Test
+    public void testClear() {
+        System.out.println("clear");
+        instance.clear();
+        assertTrue(instance.size() == 0);
+        instance.put(i1, s1);
+    }
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/util/ReferenceMapTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/ArrayListOverflow.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/ArrayListOverflow.java?rev=1173728&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/ArrayListOverflow.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/ArrayListOverflow.java Wed Sep 21 15:43:22 2011
@@ -0,0 +1,38 @@
+/*
+ * 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 tests.support;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+/**
+ *
+ * @author peter
+ */
+public class ArrayListOverflow implements Callable {
+    
+    public Object call() throws Exception {
+        List overflow = new ArrayList(5000);
+        while (true){
+            overflow.add(new ArrayList(100));
+        }
+    }
+    
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/ArrayListOverflow.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/PrintTask.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/PrintTask.java?rev=1173728&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/PrintTask.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/PrintTask.java Wed Sep 21 15:43:22 2011
@@ -0,0 +1,35 @@
+/*
+ * 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 tests.support;
+
+import java.util.concurrent.Callable;
+
+/**
+ *
+ * @author peter
+ */
+public class PrintTask implements Callable<Boolean>{
+
+
+    public Boolean call() throws Exception {
+        System.out.println("Print Task successful");
+        return Boolean.TRUE;
+    }
+    
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/PrintTask.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/StackOverflowTask.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/StackOverflowTask.java?rev=1173728&view=auto
==============================================================================
--- river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/StackOverflowTask.java (added)
+++ river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/StackOverflowTask.java Wed Sep 21 15:43:22 2011
@@ -0,0 +1,36 @@
+/*
+ * 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 tests.support;
+
+import java.util.concurrent.Callable;
+
+/**
+ *
+ * @author peter
+ */
+public class StackOverflowTask implements Callable{
+
+    public Object call() throws Exception {
+        return callAgain();
+    }
+    
+    public Object callAgain() throws Exception{
+        return call();
+    }
+}

Propchange: river/jtsk/skunk/peterConcurrentPolicy/test/src/tests/support/StackOverflowTask.java
------------------------------------------------------------------------------
    svn:eol-style = native