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?");
+ }
+ }
}