package roboguice.event.eventListener;
import static org.easymock.EasyMock.createMock;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;
import roboguice.event.EventListener;
import roboguice.event.EventThread;
import roboguice.event.eventListener.factory.EventListenerThreadingDecorator;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import android.os.Handler;
/**
* Tests for the EventListenerThreadingDecorator class
*
* @author John Ericksen
*/
public class EventListenerThreadingDecoratorTest {
protected EventListenerThreadingDecorator eventListenerDecorator;
protected EventListener<Void> eventListener;
@SuppressWarnings("unchecked")
@Before
public void setup(){
//noinspection unchecked
eventListener = createMock(EventListener.class);
final Module testFactoryModule = new AbstractModule() {
public void configure() {
bind(Handler.class).toInstance(createMock(Handler.class));
}
};
final Injector injector = Guice.createInjector(testFactoryModule);
eventListenerDecorator = injector.getInstance(EventListenerThreadingDecorator.class);
}
@SuppressWarnings("rawtypes")
@Test
public void buildCurrentThreadObserverTest(){
final EventListener outputListener = eventListenerDecorator.decorate(EventThread.CURRENT, eventListener);
assertEquals(eventListener, outputListener);
}
@SuppressWarnings("rawtypes")
@Test
public void buildUIThreadObserverTest(){
final EventListener outputListener = eventListenerDecorator.decorate(EventThread.UI, eventListener);
assertEquals( eventListener, ((UIThreadEventListenerDecorator)outputListener).eventListener);
}
@SuppressWarnings("rawtypes")
@Test
public void buildAsyncThreadObserverTest(){
final EventListener outputListener = eventListenerDecorator.decorate(EventThread.BACKGROUND, eventListener);
assertEquals( eventListener, ((AsynchronousEventListenerDecorator)outputListener).eventListener);
}
}