package test.org.kalisen.common.adapter; import java.util.Observable; import java.util.Observer; import org.jmock.Expectations; import org.jmock.Mockery; import org.kalisen.common.adapter.AbstractAdapter; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @Test public class TestAbstractAdapter { private Mockery mockery = null; @BeforeMethod public void setUpMockery() { this.mockery = new Mockery(); } @Test(expectedExceptions = IllegalArgumentException.class) public void addListenerShouldThrowAnIllegalArgumentExceptionWhenPassedANullParameter() { MyTestAdapter adapter = new MyTestAdapter(); adapter.addListener(null); } public void testAddListener() { final MyTestAdapter adapter = new MyTestAdapter(); final Observer listener = this.mockery.mock(Observer.class); this.mockery.checking(new Expectations() { { oneOf(listener).update(with(any(Observable.class)), with(aNull(Object.class))); } }); adapter.addListener(listener); adapter.notifyListeners(); this.mockery.assertIsSatisfied(); } public void testRemoveListener() { final MyTestAdapter adapter = new MyTestAdapter(); final Observer listener = this.mockery.mock(Observer.class); adapter.addListener(listener); adapter.removeListener(listener); adapter.notifyListeners(); this.mockery.assertIsSatisfied(); } private static class MyTestAdapter extends AbstractAdapter { // for test purpose only public void notifyListeners() { getNotifier().setChanged(); getNotifier().notifyObservers(); } } }