mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add test
This commit is contained in:
parent
3d10a39ea3
commit
bdceb0013d
@ -1,11 +1,10 @@
|
||||
package cn.hutool.core.lang.func;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.lang.invoke.MethodHandleInfo;
|
||||
|
||||
@ -13,13 +12,13 @@ public class LambdaUtilTest {
|
||||
|
||||
@Test
|
||||
public void getMethodNameTest() {
|
||||
String methodName = LambdaUtil.getMethodName(MyTeacher::getAge);
|
||||
final String methodName = LambdaUtil.getMethodName(MyTeacher::getAge);
|
||||
Assert.assertEquals("getAge", methodName);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getFieldNameTest() {
|
||||
String fieldName = LambdaUtil.getFieldName(MyTeacher::getAge);
|
||||
final String fieldName = LambdaUtil.getFieldName(MyTeacher::getAge);
|
||||
Assert.assertEquals("age", fieldName);
|
||||
}
|
||||
|
||||
@ -46,38 +45,38 @@ public class LambdaUtilTest {
|
||||
@Test
|
||||
public void getRealClassTest() {
|
||||
// 引用特定类型的任意对象的实例方法
|
||||
Class<MyTeacher> functionClass = LambdaUtil.getRealClass(MyTeacher::getAge);
|
||||
final Class<MyTeacher> functionClass = LambdaUtil.getRealClass(MyTeacher::getAge);
|
||||
Assert.assertEquals(MyTeacher.class, functionClass);
|
||||
// 枚举测试,不会导致类型擦除
|
||||
Class<LambdaKindEnum> enumFunctionClass = LambdaUtil.getRealClass(LambdaKindEnum::ordinal);
|
||||
final Class<LambdaKindEnum> enumFunctionClass = LambdaUtil.getRealClass(LambdaKindEnum::ordinal);
|
||||
Assert.assertEquals(LambdaKindEnum.class, enumFunctionClass);
|
||||
// 调用父类方法,能获取到正确的子类类型
|
||||
Class<MyTeacher> superFunctionClass = LambdaUtil.getRealClass(MyTeacher::getId);
|
||||
final Class<MyTeacher> superFunctionClass = LambdaUtil.getRealClass(MyTeacher::getId);
|
||||
Assert.assertEquals(MyTeacher.class, superFunctionClass);
|
||||
|
||||
MyTeacher myTeacher = new MyTeacher();
|
||||
final MyTeacher myTeacher = new MyTeacher();
|
||||
// 引用特定对象的实例方法
|
||||
Class<MyTeacher> supplierClass = LambdaUtil.getRealClass(myTeacher::getAge);
|
||||
final Class<MyTeacher> supplierClass = LambdaUtil.getRealClass(myTeacher::getAge);
|
||||
Assert.assertEquals(MyTeacher.class, supplierClass);
|
||||
// 枚举测试,只能获取到枚举类型
|
||||
Class<Enum<?>> enumSupplierClass = LambdaUtil.getRealClass(LambdaKindEnum.REF_NONE::ordinal);
|
||||
final Class<Enum<?>> enumSupplierClass = LambdaUtil.getRealClass(LambdaKindEnum.REF_NONE::ordinal);
|
||||
Assert.assertEquals(Enum.class, enumSupplierClass);
|
||||
// 调用父类方法,只能获取到父类类型
|
||||
Class<Entity<?>> superSupplierClass = LambdaUtil.getRealClass(myTeacher::getId);
|
||||
final Class<Entity<?>> superSupplierClass = LambdaUtil.getRealClass(myTeacher::getId);
|
||||
Assert.assertEquals(Entity.class, superSupplierClass);
|
||||
|
||||
// 引用静态带参方法,能够获取到正确的参数类型
|
||||
Class<MyTeacher> staticFunctionClass = LambdaUtil.getRealClass(MyTeacher::takeAgeBy);
|
||||
final Class<MyTeacher> staticFunctionClass = LambdaUtil.getRealClass(MyTeacher::takeAgeBy);
|
||||
Assert.assertEquals(MyTeacher.class, staticFunctionClass);
|
||||
// 引用父类静态带参方法,只能获取到父类类型
|
||||
Class<Entity<?>> staticSuperFunctionClass = LambdaUtil.getRealClass(MyTeacher::takeId);
|
||||
final Class<Entity<?>> staticSuperFunctionClass = LambdaUtil.getRealClass(MyTeacher::takeId);
|
||||
Assert.assertEquals(Entity.class, staticSuperFunctionClass);
|
||||
|
||||
// 引用静态无参方法,能够获取到正确的类型
|
||||
Class<MyTeacher> staticSupplierClass = LambdaUtil.getRealClass(MyTeacher::takeAge);
|
||||
final Class<MyTeacher> staticSupplierClass = LambdaUtil.getRealClass(MyTeacher::takeAge);
|
||||
Assert.assertEquals(MyTeacher.class, staticSupplierClass);
|
||||
// 引用父类静态无参方法,能够获取到正确的参数类型
|
||||
Class<MyTeacher> staticSuperSupplierClass = LambdaUtil.getRealClass(MyTeacher::takeIdBy);
|
||||
final Class<MyTeacher> staticSuperSupplierClass = LambdaUtil.getRealClass(MyTeacher::takeIdBy);
|
||||
Assert.assertEquals(MyTeacher.class, staticSuperSupplierClass);
|
||||
}
|
||||
|
||||
@ -97,7 +96,7 @@ public class LambdaUtilTest {
|
||||
return new Entity<T>().getId();
|
||||
}
|
||||
|
||||
public static <T> T takeIdBy(Entity<T> entity) {
|
||||
public static <T> T takeIdBy(final Entity<T> entity) {
|
||||
return entity.getId();
|
||||
}
|
||||
|
||||
@ -112,7 +111,7 @@ public class LambdaUtilTest {
|
||||
return new MyTeacher().getAge();
|
||||
}
|
||||
|
||||
public static String takeAgeBy(MyTeacher myTeacher) {
|
||||
public static String takeAgeBy(final MyTeacher myTeacher) {
|
||||
return myTeacher.getAge();
|
||||
}
|
||||
|
||||
@ -133,4 +132,17 @@ public class LambdaUtilTest {
|
||||
REF_invokeSpecial,
|
||||
REF_newInvokeSpecial,
|
||||
}
|
||||
|
||||
@Test
|
||||
public void lambdaClassNameTest() {
|
||||
final String lambdaClassName1 = LambdaUtilTestHelper.getLambdaClassName(MyTeacher::getAge);
|
||||
final String lambdaClassName2 = LambdaUtilTestHelper.getLambdaClassName(MyTeacher::getAge);
|
||||
Assert.assertNotEquals(lambdaClassName1, lambdaClassName2);
|
||||
}
|
||||
|
||||
static class LambdaUtilTestHelper {
|
||||
public static <P> String getLambdaClassName(final Func1<P, ?> func) {
|
||||
return func.getClass().getName();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user