Author: j16sdiz
Date: 2008-09-24 11:57:05 +0000 (Wed, 24 Sep 2008)
New Revision: 22794

Modified:
   trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java
   trunk/freenet/test/freenet/support/UpdatableSortedLinkedListTest.java
Log:
complete test case for UpdatableSortedLinkedList

Modified: trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java
===================================================================
--- trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java    
2008-09-24 10:41:07 UTC (rev 22793)
+++ trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java    
2008-09-24 11:57:05 UTC (rev 22794)
@@ -10,7 +10,7 @@
  * value has changed. Allows duplicates.
  */
 public class UpdatableSortedLinkedList {
-
+       boolean debug = false;
        protected boolean killed = false;
        private static boolean logMINOR;

@@ -62,7 +62,7 @@
     protected synchronized void checkList() {
        // If get errors, make this happen all the time.
        ctr++;
-       if(ctr % 256 != 0) return;
+       if(ctr % 256 != 0 && !debug) return;
        int statedLength = list.size();
        int realLength = 0;
        for(Enumeration e = list.elements();e.hasMoreElements();) {

Modified: trunk/freenet/test/freenet/support/UpdatableSortedLinkedListTest.java
===================================================================
--- trunk/freenet/test/freenet/support/UpdatableSortedLinkedListTest.java       
2008-09-24 10:41:07 UTC (rev 22793)
+++ trunk/freenet/test/freenet/support/UpdatableSortedLinkedListTest.java       
2008-09-24 11:57:05 UTC (rev 22794)
@@ -44,11 +44,16 @@
                public int hashCode() {
                        return value;
                }
+
+               public String toString() {
+                       return "(" + value + ")";
+               }
        }

        public void testAdd1() throws UpdatableSortedLinkedListKilledException {
                UpdatableSortedLinkedList l = new UpdatableSortedLinkedList();
-               
+               l.debug = true;
+
                assertTrue("isEmpty()", l.isEmpty());
                assertEquals("size()", 0, l.size());
                l.add(new T(2));
@@ -65,6 +70,20 @@
                l.add(new T(-4));
                assertEquals("size()", 11, l.size());

+               UpdatableSortedLinkedListItem[] a = l.toArray();
+               assertEquals(((T)a[0]).value , -5);
+               assertEquals(((T)a[1]).value , -4);
+               assertEquals(((T)a[2]).value , -3);
+               assertEquals(((T)a[3]).value , -2);
+               assertEquals(((T)a[4]).value , -1);
+               assertEquals(((T)a[5]).value , 0);
+               assertEquals(((T)a[6]).value , 1);
+               assertEquals(((T)a[7]).value , 2);
+               assertEquals(((T)a[8]).value , 3);
+               assertEquals(((T)a[9]).value , 4);
+               assertEquals(((T)a[10]).value , 5);
+               
+
                ((T) l.getLowest()).assertV(-5);
                ((T) l.removeLowest()).assertV(-5);
                assertFalse("isEmpty()", l.isEmpty());
@@ -84,4 +103,92 @@
                assertEquals("size()", 0, l.size());
        }

+       public void testUpdate() throws 
UpdatableSortedLinkedListKilledException {
+               UpdatableSortedLinkedList l = new UpdatableSortedLinkedList();
+               l.debug = true;
+               
+               T[] t = new T[] { new T(0), new T(1), new T(2), new T(3), new 
T(4) };
+
+               l.add(t[0]);
+               l.add(t[1]);
+               l.add(t[2]);
+               l.add(t[3]);
+               l.add(t[4]);
+
+               t[1].value = -99;
+               l.update(t[1]);
+               t[0].value = 99;
+               l.update(t[0]);
+               t[4].value = -98;
+               l.update(t[4]);
+               t[2].value = 98;
+               l.update(t[2]);
+
+               l.update(t[0]);
+               l.update(t[1]);
+               l.update(t[4]);
+
+               assertSame(t[1], l.removeLowest());
+               assertSame(t[4], l.removeLowest());
+               assertSame(t[3], l.removeLowest());
+               assertSame(t[2], l.removeLowest());
+               assertSame(t[0], l.removeLowest());
+       }
+       
+       public void testClearKill() throws 
UpdatableSortedLinkedListKilledException {
+               UpdatableSortedLinkedList l = new UpdatableSortedLinkedList();
+               l.debug = true;
+               
+               l.add(new T(2));
+               l.add(new T(5));
+               l.add(new T(-1));
+               l.add(new T(-5));
+               
+               l.clear();
+               assertEquals(l.size(), 0);
+               
+               l.add(new T(3));
+               l.add(new T(0));
+               l.add(new T(1));
+               l.add(new T(-3));
+               l.add(new T(-2));
+               l.add(new T(4));
+               assertEquals(l.size(), 6);
+
+               UpdatableSortedLinkedListItem[] a = l.toArray();
+               assertEquals(((T)a[0]).value , -3);
+               assertEquals(((T)a[1]).value , -2);
+               assertEquals(((T)a[2]).value , 0);
+               assertEquals(((T)a[3]).value , 1);
+               assertEquals(((T)a[4]).value ,3);
+               assertEquals(((T)a[5]).value , 4);
+               
+               l.kill();
+               assertEquals(l.size(), 0);
+               try {
+                       l.add(new T(-4));
+                       fail("no UpdatableSortedLinkedListKilledException on 
add?");
+               } catch (UpdatableSortedLinkedListKilledException usllke) {
+               }
+               try {
+                       l.remove(new T(-4));
+                       fail("no UpdatableSortedLinkedListKilledException on 
remove?");
+               } catch (UpdatableSortedLinkedListKilledException usllke) {
+               }
+               try {
+                       l.update(new T(-4));
+                       fail("no UpdatableSortedLinkedListKilledException on 
update?");
+               } catch (UpdatableSortedLinkedListKilledException usllke) {
+               }
+               try {
+                       l.toArray();
+                       fail("no UpdatableSortedLinkedListKilledException on 
toArray?");
+               } catch (UpdatableSortedLinkedListKilledException usllke) {
+               }
+               try {
+                       l.removeLowest();       // should it throw?
+               } catch (UpdatableSortedLinkedListKilledException usllke) {
+                       fail("UpdatableSortedLinkedListKilledException on 
removeLowest?");
+               }
+       }
 }


Reply via email to