We love the unit tests bay-bee!
git-svn-id: https://samskivert.googlecode.com/svn/trunk@745 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -0,0 +1,101 @@
|
|||||||
|
//
|
||||||
|
// $Id: ObserverListTest.java,v 1.1 2002/05/16 22:00:07 mdb Exp $
|
||||||
|
|
||||||
|
package com.samskivert.util;
|
||||||
|
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
import com.samskivert.Log;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the {@link ObserverList} class.
|
||||||
|
*/
|
||||||
|
public class ObserverListTest extends TestCase
|
||||||
|
{
|
||||||
|
public ObserverListTest ()
|
||||||
|
{
|
||||||
|
super(ObserverListTest.class.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void runTest ()
|
||||||
|
{
|
||||||
|
// Log.info("Testing safe list.");
|
||||||
|
testList(new ObserverList(ObserverList.SAFE_IN_ORDER_NOTIFY));
|
||||||
|
|
||||||
|
// Log.info("Testing unsafe list.");
|
||||||
|
testList(new ObserverList(ObserverList.FAST_UNSAFE_NOTIFY));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testList (final ObserverList list)
|
||||||
|
{
|
||||||
|
final int[] notifies = new int[1];
|
||||||
|
|
||||||
|
for (int i = 0; i < 1000; i++) {
|
||||||
|
// add some test observers
|
||||||
|
list.add(new TestObserver(1));
|
||||||
|
list.add(new TestObserver(2));
|
||||||
|
list.add(new TestObserver(3));
|
||||||
|
list.add(new TestObserver(4));
|
||||||
|
|
||||||
|
int ocount = list.size();
|
||||||
|
notifies[0] = 0;
|
||||||
|
|
||||||
|
list.apply(new ObserverList.ObserverOp() {
|
||||||
|
public boolean apply (Object obs) {
|
||||||
|
notifies[0]++;
|
||||||
|
((TestObserver)obs).foozle();
|
||||||
|
|
||||||
|
// 1/3 of the time, remove the observer; 1/3 of the
|
||||||
|
// time append a new observer; 1/3 of the time do
|
||||||
|
// nothing
|
||||||
|
double rando = Math.random();
|
||||||
|
if (rando < 0.33) {
|
||||||
|
return false;
|
||||||
|
|
||||||
|
} else if (rando > 0.66) {
|
||||||
|
list.add(new TestObserver(5));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Log.info("had " + ocount + "; notified " + notifies[0] +
|
||||||
|
// "; size " + list.size() + ".");
|
||||||
|
|
||||||
|
assertTrue("had " + ocount + "; notified " + notifies[0],
|
||||||
|
ocount == notifies[0]);
|
||||||
|
list.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Test suite ()
|
||||||
|
{
|
||||||
|
return new ObserverListTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main (String[] args)
|
||||||
|
{
|
||||||
|
ObserverListTest test = new ObserverListTest();
|
||||||
|
test.runTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static class TestObserver
|
||||||
|
{
|
||||||
|
public TestObserver (int index)
|
||||||
|
{
|
||||||
|
_index = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void foozle ()
|
||||||
|
{
|
||||||
|
// Log.info("foozle! " + _index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString ()
|
||||||
|
{
|
||||||
|
return Integer.toString(_index);
|
||||||
|
}
|
||||||
|
protected int _index;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user