package com.maxifier.guice.events;
import org.testng.annotations.Test;
import static org.mockito.Mockito.*;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
/**
* Created by IntelliJ IDEA.
* User: dalex
* Date: 30.06.2009
* Time: 8:48:58
*/
public class ClassgenHandlerInvocatorUTest {
public interface TestInvoker {
public void doIt(String s);
public void doIt();
public String returnIt();
public String returnIt(String s);
}
@Test
public void testWParam() throws Exception {
HandlerInvocator<String, TestInvoker> inv = new ClassgenHandlerInvocator<String, TestInvoker>(TestInvoker.class.getMethod("doIt", String.class));
TestInvoker test = mock(TestInvoker.class);
assertEquals(inv.getParamType(), String.class);
assertNull(inv.invoke(test, "test"));
verify(test).doIt("test");
verifyNoMoreInteractions(test);
}
@Test
public void testWOParam() throws Exception {
HandlerInvocator<String, TestInvoker> inv = new ClassgenHandlerInvocator<String, TestInvoker>(TestInvoker.class.getMethod("doIt"));
TestInvoker test = mock(TestInvoker.class);
assertEquals(inv.getParamType(), null);
assertNull(inv.invoke(test, "test"));
verify(test).doIt();
verifyNoMoreInteractions(test);
}
@Test
public void testWReturn() throws Exception {
HandlerInvocator<String, TestInvoker> inv = new ClassgenHandlerInvocator<String, TestInvoker>(TestInvoker.class.getMethod("returnIt"));
TestInvoker test = mock(TestInvoker.class);
when(test.returnIt()).thenReturn("result");
assertEquals(inv.getParamType(), null);
assertEquals(inv.invoke(test, "test"), "result");
verify(test).returnIt();
verifyNoMoreInteractions(test);
}
@Test
public void testWReturnAndParam() throws Exception {
HandlerInvocator<String, TestInvoker> inv = new ClassgenHandlerInvocator<String, TestInvoker>(TestInvoker.class.getMethod("returnIt", String.class));
TestInvoker test = mock(TestInvoker.class);
when(test.returnIt("test")).thenReturn("result");
assertEquals(inv.getParamType(), String.class);
assertEquals(inv.invoke(test, "test"), "result");
verify(test).returnIt("test");
verifyNoMoreInteractions(test);
}
}