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