package com.netflix.hystrix.contrib.javanica.util;
import com.google.common.base.Optional;
import com.netflix.hystrix.contrib.javanica.utils.MethodProvider;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
/**
* Created by dmgcodevil.
*/
@RunWith(Parameterized.class)
public class GetMethodTest {
private String methodName;
private Class<?>[] parametersTypes;
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ "foo", new Class<?>[]{ String.class } },
{ "bar", new Class<?>[]{ Integer.class } }
});
}
public GetMethodTest(String methodName, Class<?>[] parametersTypes) {
this.methodName = methodName;
this.parametersTypes = parametersTypes;
}
@Test
public void testGetMethodFoo(){
Optional<Method> method = MethodProvider.getInstance().getMethod(C.class, methodName, parametersTypes);
assertTrue(method.isPresent());
assertEquals(methodName, method.get().getName());
}
public static class A { void foo(String in) {} }
public static class B extends A { void bar(Integer in) {} }
public static class C extends B{ }
}