import junit.framework.TestCase; import com.nurey.ObservableCollection.*; import java.util.*; /** * <> * * @author Ilia Lobsanov <> * @version $Rev$ */ public class MultipleListenersTest extends TestCase { private ObservableList list; private ArrayList listeners; //keep track of the listeners private int numListeners = 5; /** * Sets up the test fixture. * * Called before every test case method. */ protected void setUp() { listeners = new ArrayList(numListeners); String bar = "bar"; String baz = "baz"; list = new ObservableList(); list.add(bar); list.add(baz); for ( int i = 0; i < numListeners; i ++ ) { DummyListListener listener = new DummyListListener(); list.register(listener); listeners.add(listener); } for ( DummyListListener listener : listeners ) { assertFalse("listener is initially not updated", listener.isUpdated); } } /** * Tears down the test fixture. * * Called after every test case method. */ protected void tearDown() { // release objects under test here, if necessary for ( DummyListListener listener : listeners ) { list.unregister(listener); } } protected void assertListenersUpdated() { for ( DummyListListener listener : listeners ) { assertTrue("listener is updated", listener.isUpdated); } } /** * Tests adding an item to the list */ public void testAdd() { String foo = "foo"; list.add(foo); assertListenersUpdated(); } /** * Tests adding an item to the list via an index */ public void testAddIndex() { String foo = "foo"; list.add(0, foo); //add foo as the first element assertListenersUpdated(); } /** * Tests removing an item from the list. * */ public void testRemove() { String bar = "bar"; list.remove(bar); assertListenersUpdated(); } /** * Tests removing an item from the list via an index * */ public void testRemoveIndex() { list.remove(0); assertListenersUpdated(); } /** * Tests removing items from the list by specifying fromIndex, toIndex * */ public void testRemoveRange() { list.removeRange(0, 2); assertListenersUpdated(); } /** * register and then unregister * */ public void testUnregister() { // stop listening for ( DummyListListener listener : listeners ) { listener.isUpdated = false; list.unregister(listener); } // change the list list.add("foo"); // assert the listeners still have not been updated for ( DummyListListener listener : listeners ) { assertFalse(listener.isUpdated); } } }