package tc.oc.commons.reflect;
import junit.framework.TestCase;
import tc.oc.commons.core.reflect.Methods;
public class FunctionalInterfaceUtilsTest extends TestCase {
interface SingleMethodAbstract {
void abs();
}
interface SingleMethodDefault {
default void def() {}
}
interface MultipleMethodsNoneAbstract {
default void def1() {}
default void def2() {}
}
interface MultipleMethodsOneAbstract {
default void def() {}
void abs();
}
interface MultipleMethodsMultipleAbstract {
void abs1();
void abs2();
}
interface WithStaticMethods {
static void stat1() {}
void abs();
}
public void testDetectFunctionalInterface() throws Exception {
assertEquals(SingleMethodAbstract.class.getMethod("abs"), Methods.trySamMethod(SingleMethodAbstract.class));
assertEquals(SingleMethodDefault.class.getMethod("def"), Methods.trySamMethod(SingleMethodDefault.class));
assertNull(Methods.trySamMethod(MultipleMethodsNoneAbstract.class));
assertEquals(MultipleMethodsOneAbstract.class.getMethod("abs"), Methods.trySamMethod(MultipleMethodsOneAbstract.class));
assertNull(Methods.trySamMethod(MultipleMethodsMultipleAbstract.class));
assertEquals(WithStaticMethods.class.getMethod("abs"), Methods.trySamMethod(WithStaticMethods.class));
}
}