package com.zachklipp.captivate.test.util; import java.util.ArrayList; import java.util.List; import com.zachklipp.captivate.util.Observable; import com.zachklipp.captivate.util.Observer; import junit.framework.TestCase; public class ObservableTest extends TestCase { public void testAddObserver() { Observable<Object> observable = new MockObservable<Object>(); Observer<Object> observer = new MockObserver<Object>(); observable.addObserver(observer); observable.deleteObserver(observer); } public void testNotifyObservers() { MockObservable<Object> observable = new MockObservable<Object>(); List<MockObserver<Object>> observers = createObserverList(3, observable); observable.trigger(null); observable.trigger(observable); Object[] events = new Object[2]; for (MockObserver<Object> observer : observers) { assertEquals(2, observer.getObservedEventCount()); observer.getObservedEvents(events); assertNull(events[0]); assertSame(observable, events[1]); } } private static <Event> List<MockObserver<Event>> createObserverList(int count, Observable<Event> observable) { List<MockObserver<Event>> observers = new ArrayList<MockObserver<Event>>(); for (int i = 0; i < 3; i++) { MockObserver<Event> observer = new MockObserver<Event>(); observers.add(observer); observable.addObserver(observer); } return observers; } }