summaryrefslogtreecommitdiffstats
path: root/test/042-new-instance
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2012-02-17 14:48:16 -0800
committerIan Rogers <irogers@google.com>2012-02-17 14:56:26 -0800
commit1441f6f3ea53ce07d119b32eadaf322f71e07676 (patch)
tree90f3c146943282d01dad3acbb1b49fab8ede1895 /test/042-new-instance
parent55b16ceff1068cce61c86f2c9ca011a97c869bd4 (diff)
downloadart-1441f6f3ea53ce07d119b32eadaf322f71e07676.tar.gz
art-1441f6f3ea53ce07d119b32eadaf322f71e07676.tar.bz2
art-1441f6f3ea53ce07d119b32eadaf322f71e07676.zip
Test Class.forName and serialization on inner classes
Change-Id: Ib8e5e5df02818ca05d46d866f60a59c07a843d51
Diffstat (limited to 'test/042-new-instance')
-rw-r--r--test/042-new-instance/expected.txt2
-rw-r--r--test/042-new-instance/src/Main.java28
2 files changed, 30 insertions, 0 deletions
diff --git a/test/042-new-instance/expected.txt b/test/042-new-instance/expected.txt
index bb1b80c122..7d843d1b3f 100644
--- a/test/042-new-instance/expected.txt
+++ b/test/042-new-instance/expected.txt
@@ -4,6 +4,8 @@ LocalClass3 succeeded
Got expected InstantationError
Cons LocalClass failed as expected
Cons LocalClass2 succeeded
+Cons InnerClass succeeded
+Cons StaticInnerClass succeeded
Cons got expected PackageAccess complaint
Cons got expected InstantationException
Cons got expected PackageAccess2 complaint
diff --git a/test/042-new-instance/src/Main.java b/test/042-new-instance/src/Main.java
index e43c5a5680..b0a5fd4f66 100644
--- a/test/042-new-instance/src/Main.java
+++ b/test/042-new-instance/src/Main.java
@@ -92,6 +92,28 @@ public class Main {
ex.printStackTrace();
}
+ // should succeed
+ try {
+ Class c = Class.forName("Main$InnerClass");
+ Constructor cons = c.getDeclaredConstructor(new Class<?>[]{Main.class});
+ Object obj = cons.newInstance(new Main());
+ System.out.println("Cons InnerClass succeeded");
+ } catch (Exception ex) {
+ System.err.println("Cons InnerClass failed");
+ ex.printStackTrace();
+ }
+
+ // should succeed
+ try {
+ Class c = Class.forName("Main$StaticInnerClass");
+ Constructor cons = c.getDeclaredConstructor((Class[]) null);
+ Object obj = cons.newInstance();
+ System.out.println("Cons StaticInnerClass succeeded");
+ } catch (Exception ex) {
+ System.err.println("Cons StaticInnerClass failed");
+ ex.printStackTrace();
+ }
+
// should fail
try {
Class c = Class.forName("otherpackage.PackageAccess");
@@ -135,6 +157,12 @@ public class Main {
}
}
+
+ class InnerClass {
+ }
+
+ static class StaticInnerClass {
+ }
}
class LocalClass {