From d26216908b156b1aa1fa68df8688953dbe02bf58 Mon Sep 17 00:00:00 2001 From: Elliott Hughes <enh@google.com> Date: Sat, 12 Oct 2013 01:11:25 -0700 Subject: Add a unit test for a Class.getDeclaringClass bug. Bug: https://code.google.com/p/android/issues/detail?id=61003 Change-Id: I3e76f0ce9c4b4df91ab3eeaca956d2d735e52f6c --- .../test/java/libcore/java/lang/OldClassTest.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/luni/src/test/java/libcore/java/lang/OldClassTest.java b/luni/src/test/java/libcore/java/lang/OldClassTest.java index 0f7ce42..23a42bd 100644 --- a/luni/src/test/java/libcore/java/lang/OldClassTest.java +++ b/luni/src/test/java/libcore/java/lang/OldClassTest.java @@ -720,8 +720,20 @@ public class OldClassTest extends junit.framework.TestCase { } public void test_getDeclaringClass() { - assertNull(OldClassTest.class.getDeclaringClass()); - assertNotNull(PublicTestClass.class.getDeclaringClass()); + assertEquals(OldClassTest.class, Intf1.class.getDeclaringClass()); + assertEquals(null, Serializable.class.getDeclaringClass()); + assertEquals(null, OldClassTest.class.getDeclaringClass()); + + assertEquals(OldClassTest.class, PublicTestClass.class.getDeclaringClass()); + + // https://code.google.com/p/android/issues/detail?id=61003 + assertEquals(null, new Object() {}.getClass().getDeclaringClass()); + assertEquals(null, new AnonymousMemberFixture().instanceOfAnonymousClass.getClass().getDeclaringClass()); + + // Arrays, primitive types, and void all return null. + assertEquals(null, char[].class.getDeclaringClass()); + assertEquals(null, int.class.getDeclaringClass()); + assertEquals(null, void.class.getDeclaringClass()); } public void test_getFieldLjava_lang_String() throws Exception { @@ -1022,3 +1034,7 @@ public class OldClassTest extends junit.framework.TestCase { assertNull(clazz.getResourceAsStream("libcore/java/lang/HelloWorld.txt")); } } + +class AnonymousMemberFixture { + Object instanceOfAnonymousClass = new Object() {}; +} -- cgit v1.1