From e725487f997d9e843af2fa9b5ff24b4f42424895 Mon Sep 17 00:00:00 2001 From: William Degrange Date: Mon, 22 Jan 2024 18:59:44 +0100 Subject: [PATCH] Test $Gson$Types equals method with TypeVariable when its generic declaration is not a Class --- .../google/gson/internal/GsonTypesTest.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gson/src/test/java/com/google/gson/internal/GsonTypesTest.java b/gson/src/test/java/com/google/gson/internal/GsonTypesTest.java index 1e9d613e4a..9ab5f9e277 100644 --- a/gson/src/test/java/com/google/gson/internal/GsonTypesTest.java +++ b/gson/src/test/java/com/google/gson/internal/GsonTypesTest.java @@ -19,6 +19,8 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.List; @@ -98,4 +100,37 @@ public static Type getFirstTypeArgument(Type type) throws Exception { } return $Gson$Types.canonicalize(actualTypeArguments[0]); } + + @Test + public void testEqualsOnMethodTypeVariables() throws Exception { + Method m1 = TypeVariableTest.class.getMethod("method"); + Method m2 = TypeVariableTest.class.getMethod("method"); + + Type rt1 = m1.getGenericReturnType(); + Type rt2 = m2.getGenericReturnType(); + + assertThat($Gson$Types.equals(rt1, rt2)).isTrue(); + } + + @Test + public void testEqualsOnConstructorParameterTypeVariables() throws Exception { + Constructor c1 = TypeVariableTest.class.getConstructor(Object.class); + Constructor c2 = TypeVariableTest.class.getConstructor(Object.class); + + Type rt1 = c1.getGenericParameterTypes()[0]; + Type rt2 = c2.getGenericParameterTypes()[0]; + + assertThat($Gson$Types.equals(rt1, rt2)).isTrue(); + } + + private static final class TypeVariableTest { + + public TypeVariableTest(T parameter) {} + + public T method() { + return null; + } + + } + }