diff options
| -rw-r--r-- | build/Android.common.mk | 1 | ||||
| -rw-r--r-- | test/100-reflect2/expected.txt | 77 | ||||
| -rw-r--r-- | test/100-reflect2/info.txt | 1 | ||||
| -rw-r--r-- | test/100-reflect2/src/Main.java (renamed from test/ReflectionTest/ReflectionTest.java) | 120 |
4 files changed, 138 insertions, 61 deletions
diff --git a/build/Android.common.mk b/build/Android.common.mk index 420ad330c6..88b95252c0 100644 --- a/build/Android.common.mk +++ b/build/Android.common.mk @@ -437,7 +437,6 @@ TEST_OAT_DIRECTORIES := \ MemUsage \ ParallelGC \ ReferenceMap \ - ReflectionTest \ StackWalk \ ThreadStress diff --git a/test/100-reflect2/expected.txt b/test/100-reflect2/expected.txt new file mode 100644 index 0000000000..9417174f18 --- /dev/null +++ b/test/100-reflect2/expected.txt @@ -0,0 +1,77 @@ +true +8 +x +3.141592653589793 +3.14 +32 +81985529216486895 +16 +false +7 +y +2.7 +2.7 +31 +63 +15 +true +6 +z +1.3 +1.3 +30 +62 +14 +java.lang.IllegalArgumentException: invalid primitive conversion from int to short + at java.lang.reflect.Field.set(Native Method) + at Main.testFieldReflection(Main.java:121) + at Main.main(Main.java:269) +true (class java.lang.Boolean) +6 (class java.lang.Byte) +z (class java.lang.Character) +1.3 (class java.lang.Double) +1.3 (class java.lang.Float) +30 (class java.lang.Integer) +62 (class java.lang.Long) +14 (class java.lang.Short) +[public java.lang.String(), java.lang.String(int,int,char[]), public java.lang.String(java.lang.String), private java.lang.String(java.lang.String,char), private java.lang.String(java.lang.String,int), private java.lang.String(java.lang.String,java.lang.String), private java.lang.String(java.lang.String,java.lang.String,java.lang.String), public java.lang.String(java.lang.StringBuffer), public java.lang.String(java.lang.StringBuilder), public java.lang.String(byte[]), public java.lang.String(byte[],int), public java.lang.String(byte[],int,int), public java.lang.String(byte[],int,int,int), public java.lang.String(byte[],int,int,java.lang.String) throws java.io.UnsupportedEncodingException, public java.lang.String(byte[],int,int,java.nio.charset.Charset), public java.lang.String(byte[],java.lang.String) throws java.io.UnsupportedEncodingException, public java.lang.String(byte[],java.nio.charset.Charset), public java.lang.String(char[]), public java.lang.String(char[],int,int), public java.lang.String(int[],int,int)] +[private final char[] java.lang.String.value, private final int java.lang.String.count, private int java.lang.String.hashCode, private final int java.lang.String.offset, private static final char[] java.lang.String.ASCII, public static final java.util.Comparator java.lang.String.CASE_INSENSITIVE_ORDER, private static final char java.lang.String.REPLACEMENT_CHAR, private static final long java.lang.String.serialVersionUID] +[void java.lang.String._getChars(int,int,char[],int), public char java.lang.String.charAt(int), public int java.lang.String.codePointAt(int), public int java.lang.String.codePointBefore(int), public int java.lang.String.codePointCount(int,int), public volatile int java.lang.String.compareTo(java.lang.Object), public native int java.lang.String.compareTo(java.lang.String), public int java.lang.String.compareToIgnoreCase(java.lang.String), public java.lang.String java.lang.String.concat(java.lang.String), public boolean java.lang.String.contains(java.lang.CharSequence), public boolean java.lang.String.contentEquals(java.lang.CharSequence), public boolean java.lang.String.contentEquals(java.lang.StringBuffer), public boolean java.lang.String.endsWith(java.lang.String), public boolean java.lang.String.equals(java.lang.Object), public boolean java.lang.String.equalsIgnoreCase(java.lang.String), public void java.lang.String.getBytes(int,int,byte[],int), public [B java.lang.String.getBytes(), public [B java.lang.String.getBytes(java.lang.String) throws java.io.UnsupportedEncodingException, public [B java.lang.String.getBytes(java.nio.charset.Charset), public void java.lang.String.getChars(int,int,char[],int), public int java.lang.String.hashCode(), public int java.lang.String.indexOf(int), public int java.lang.String.indexOf(int,int), public int java.lang.String.indexOf(java.lang.String), public int java.lang.String.indexOf(java.lang.String,int), public native java.lang.String java.lang.String.intern(), public boolean java.lang.String.isEmpty(), public int java.lang.String.lastIndexOf(int), public int java.lang.String.lastIndexOf(int,int), public int java.lang.String.lastIndexOf(java.lang.String), public int java.lang.String.lastIndexOf(java.lang.String,int), public int java.lang.String.length(), public boolean java.lang.String.matches(java.lang.String), public int java.lang.String.offsetByCodePoints(int,int), public boolean java.lang.String.regionMatches(int,java.lang.String,int,int), public boolean java.lang.String.regionMatches(boolean,int,java.lang.String,int,int), public java.lang.String java.lang.String.replace(char,char), public java.lang.String java.lang.String.replace(java.lang.CharSequence,java.lang.CharSequence), public java.lang.String java.lang.String.replaceAll(java.lang.String,java.lang.String), public java.lang.String java.lang.String.replaceFirst(java.lang.String,java.lang.String), public [Ljava.lang.String; java.lang.String.split(java.lang.String), public [Ljava.lang.String; java.lang.String.split(java.lang.String,int), public boolean java.lang.String.startsWith(java.lang.String), public boolean java.lang.String.startsWith(java.lang.String,int), public java.lang.CharSequence java.lang.String.subSequence(int,int), public java.lang.String java.lang.String.substring(int), public java.lang.String java.lang.String.substring(int,int), public [C java.lang.String.toCharArray(), public java.lang.String java.lang.String.toLowerCase(), public java.lang.String java.lang.String.toLowerCase(java.util.Locale), public java.lang.String java.lang.String.toString(), public java.lang.String java.lang.String.toUpperCase(), public java.lang.String java.lang.String.toUpperCase(java.util.Locale), public java.lang.String java.lang.String.trim(), static void java.lang.String.<clinit>(), public static java.lang.String java.lang.String.copyValueOf(char[]), public static java.lang.String java.lang.String.copyValueOf(char[],int,int), private java.lang.StringIndexOutOfBoundsException java.lang.String.failedBoundsCheck(int,int,int), private native int java.lang.String.fastIndexOf(int,int), private char java.lang.String.foldCase(char), public static transient java.lang.String java.lang.String.format(java.lang.String,java.lang.Object[]), public static transient java.lang.String java.lang.String.format(java.util.Locale,java.lang.String,java.lang.Object[]), private java.lang.StringIndexOutOfBoundsException java.lang.String.indexAndLength(int), private static int java.lang.String.indexOf(java.lang.String,java.lang.String,int,int,char), private int java.lang.String.indexOfSupplementary(int,int), private int java.lang.String.lastIndexOfSupplementary(int,int), private java.lang.StringIndexOutOfBoundsException java.lang.String.startEndAndLength(int,int), public static java.lang.String java.lang.String.valueOf(char), public static java.lang.String java.lang.String.valueOf(double), public static java.lang.String java.lang.String.valueOf(float), public static java.lang.String java.lang.String.valueOf(int), public static java.lang.String java.lang.String.valueOf(long), public static java.lang.String java.lang.String.valueOf(java.lang.Object), public static java.lang.String java.lang.String.valueOf(boolean), public static java.lang.String java.lang.String.valueOf(char[]), public static java.lang.String java.lang.String.valueOf(char[],int,int)] +[] +[interface java.io.Serializable, interface java.lang.Comparable, interface java.lang.CharSequence] +0 +17 +false +true +true +false +[int] +4444 +null (null) +[int] +[int, int] +1111 2222 +null (null) +[int, int] +1111 2222 +3333 (class java.lang.Integer) +[class [I] +10 (class java.lang.Integer) +[class [Ljava.lang.String;] +hello (class java.lang.String) +[boolean, byte, char, double, float, int, long, short] +true 0 1 2.0 3.0 4 5 6 +null (null) +[boolean, byte, char, double, class java.lang.String, float, int, long, short] +true 0 1 2.0 hello world 3.0 4 5 6 +null (null) +[] +java.lang.reflect.InvocationTargetException + at java.lang.reflect.Method.invoke(Native Method) + at Main.testMethodReflection(Main.java:210) + at Main.main(Main.java:270) +Caused by: java.lang.ArithmeticException: surprise! + at Main.thrower(Main.java:218) + ... 3 more + (class java.lang.String) +yz (class java.lang.String) diff --git a/test/100-reflect2/info.txt b/test/100-reflect2/info.txt new file mode 100644 index 0000000000..1910b6e9be --- /dev/null +++ b/test/100-reflect2/info.txt @@ -0,0 +1 @@ +Another set of reflection tests.
\ No newline at end of file diff --git a/test/ReflectionTest/ReflectionTest.java b/test/100-reflect2/src/Main.java index a9dc6e7b43..04045912a4 100644 --- a/test/ReflectionTest/ReflectionTest.java +++ b/test/100-reflect2/src/Main.java @@ -17,7 +17,7 @@ import java.lang.reflect.*; import java.util.*; -class ReflectionTest { +class Main { private static boolean z = true; private static byte b = 8; private static char c = 'x'; @@ -30,114 +30,114 @@ class ReflectionTest { public static void testFieldReflection() throws Exception { Field f; - f = ReflectionTest.class.getDeclaredField("z"); + f = Main.class.getDeclaredField("z"); System.out.println(f.getBoolean(null)); - f = ReflectionTest.class.getDeclaredField("b"); + f = Main.class.getDeclaredField("b"); System.out.println(f.getByte(null)); - f = ReflectionTest.class.getDeclaredField("c"); + f = Main.class.getDeclaredField("c"); System.out.println(f.getChar(null)); - f = ReflectionTest.class.getDeclaredField("d"); + f = Main.class.getDeclaredField("d"); System.out.println(f.getDouble(null)); - f = ReflectionTest.class.getDeclaredField("f"); + f = Main.class.getDeclaredField("f"); System.out.println(f.getFloat(null)); - f = ReflectionTest.class.getDeclaredField("i"); + f = Main.class.getDeclaredField("i"); System.out.println(f.getInt(null)); - f = ReflectionTest.class.getDeclaredField("j"); + f = Main.class.getDeclaredField("j"); System.out.println(f.getLong(null)); - f = ReflectionTest.class.getDeclaredField("s"); + f = Main.class.getDeclaredField("s"); System.out.println(f.getShort(null)); - f = ReflectionTest.class.getDeclaredField("z"); + f = Main.class.getDeclaredField("z"); f.setBoolean(null, false); - f = ReflectionTest.class.getDeclaredField("b"); + f = Main.class.getDeclaredField("b"); f.setByte(null, (byte) 7); - f = ReflectionTest.class.getDeclaredField("c"); + f = Main.class.getDeclaredField("c"); f.setChar(null, 'y'); - f = ReflectionTest.class.getDeclaredField("d"); + f = Main.class.getDeclaredField("d"); f.setDouble(null, 2.7); - f = ReflectionTest.class.getDeclaredField("f"); + f = Main.class.getDeclaredField("f"); f.setFloat(null, 2.7f); - f = ReflectionTest.class.getDeclaredField("i"); + f = Main.class.getDeclaredField("i"); f.setInt(null, 31); - f = ReflectionTest.class.getDeclaredField("j"); + f = Main.class.getDeclaredField("j"); f.setLong(null, 63); - f = ReflectionTest.class.getDeclaredField("s"); + f = Main.class.getDeclaredField("s"); f.setShort(null, (short) 15); - f = ReflectionTest.class.getDeclaredField("z"); + f = Main.class.getDeclaredField("z"); System.out.println(f.getBoolean(null)); - f = ReflectionTest.class.getDeclaredField("b"); + f = Main.class.getDeclaredField("b"); System.out.println(f.getByte(null)); - f = ReflectionTest.class.getDeclaredField("c"); + f = Main.class.getDeclaredField("c"); System.out.println(f.getChar(null)); - f = ReflectionTest.class.getDeclaredField("d"); + f = Main.class.getDeclaredField("d"); System.out.println(f.getDouble(null)); - f = ReflectionTest.class.getDeclaredField("f"); + f = Main.class.getDeclaredField("f"); System.out.println(f.getFloat(null)); - f = ReflectionTest.class.getDeclaredField("i"); + f = Main.class.getDeclaredField("i"); System.out.println(f.getInt(null)); - f = ReflectionTest.class.getDeclaredField("j"); + f = Main.class.getDeclaredField("j"); System.out.println(f.getLong(null)); - f = ReflectionTest.class.getDeclaredField("s"); + f = Main.class.getDeclaredField("s"); System.out.println(f.getShort(null)); - f = ReflectionTest.class.getDeclaredField("z"); + f = Main.class.getDeclaredField("z"); f.set(null, Boolean.valueOf(true)); - f = ReflectionTest.class.getDeclaredField("b"); + f = Main.class.getDeclaredField("b"); f.set(null, Byte.valueOf((byte) 6)); - f = ReflectionTest.class.getDeclaredField("c"); + f = Main.class.getDeclaredField("c"); f.set(null, Character.valueOf('z')); - f = ReflectionTest.class.getDeclaredField("d"); + f = Main.class.getDeclaredField("d"); f.set(null, Double.valueOf(1.3)); - f = ReflectionTest.class.getDeclaredField("f"); + f = Main.class.getDeclaredField("f"); f.set(null, Float.valueOf(1.3f)); - f = ReflectionTest.class.getDeclaredField("i"); + f = Main.class.getDeclaredField("i"); f.set(null, Integer.valueOf(30)); - f = ReflectionTest.class.getDeclaredField("j"); + f = Main.class.getDeclaredField("j"); f.set(null, Long.valueOf(62)); f.set(null, Integer.valueOf(62)); - f = ReflectionTest.class.getDeclaredField("s"); + f = Main.class.getDeclaredField("s"); f.set(null, Short.valueOf((short) 14)); - f = ReflectionTest.class.getDeclaredField("z"); + f = Main.class.getDeclaredField("z"); System.out.println(f.getBoolean(null)); - f = ReflectionTest.class.getDeclaredField("b"); + f = Main.class.getDeclaredField("b"); System.out.println(f.getByte(null)); - f = ReflectionTest.class.getDeclaredField("c"); + f = Main.class.getDeclaredField("c"); System.out.println(f.getChar(null)); - f = ReflectionTest.class.getDeclaredField("d"); + f = Main.class.getDeclaredField("d"); System.out.println(f.getDouble(null)); - f = ReflectionTest.class.getDeclaredField("f"); + f = Main.class.getDeclaredField("f"); System.out.println(f.getFloat(null)); - f = ReflectionTest.class.getDeclaredField("i"); + f = Main.class.getDeclaredField("i"); System.out.println(f.getInt(null)); - f = ReflectionTest.class.getDeclaredField("j"); + f = Main.class.getDeclaredField("j"); System.out.println(f.getLong(null)); - f = ReflectionTest.class.getDeclaredField("s"); + f = Main.class.getDeclaredField("s"); System.out.println(f.getShort(null)); try { - f = ReflectionTest.class.getDeclaredField("s"); + f = Main.class.getDeclaredField("s"); f.set(null, Integer.valueOf(14)); } catch (IllegalArgumentException expected) { expected.printStackTrace(); } - f = ReflectionTest.class.getDeclaredField("z"); + f = Main.class.getDeclaredField("z"); show(f.get(null)); - f = ReflectionTest.class.getDeclaredField("b"); + f = Main.class.getDeclaredField("b"); show(f.get(null)); - f = ReflectionTest.class.getDeclaredField("c"); + f = Main.class.getDeclaredField("c"); show(f.get(null)); - f = ReflectionTest.class.getDeclaredField("d"); + f = Main.class.getDeclaredField("d"); show(f.get(null)); - f = ReflectionTest.class.getDeclaredField("f"); + f = Main.class.getDeclaredField("f"); show(f.get(null)); - f = ReflectionTest.class.getDeclaredField("i"); + f = Main.class.getDeclaredField("i"); show(f.get(null)); - f = ReflectionTest.class.getDeclaredField("j"); + f = Main.class.getDeclaredField("j"); show(f.get(null)); - f = ReflectionTest.class.getDeclaredField("s"); + f = Main.class.getDeclaredField("s"); show(f.get(null)); /* @@ -161,10 +161,10 @@ class ReflectionTest { System.out.println(Arrays.toString(String.class.getDeclaredFields())); System.out.println(Arrays.toString(String.class.getDeclaredMethods())); - System.out.println(Arrays.toString(ReflectionTest.class.getInterfaces())); + System.out.println(Arrays.toString(Main.class.getInterfaces())); System.out.println(Arrays.toString(String.class.getInterfaces())); - System.out.println(ReflectionTest.class.getModifiers()); + System.out.println(Main.class.getModifiers()); System.out.println(String.class.getModifiers()); System.out.println(String.class.isAssignableFrom(Object.class)); @@ -175,37 +175,37 @@ class ReflectionTest { Method m; - m = ReflectionTest.class.getDeclaredMethod("IV", int.class); + m = Main.class.getDeclaredMethod("IV", int.class); System.out.println(Arrays.toString(m.getParameterTypes())); show(m.invoke(null, 4444)); System.out.println(Arrays.toString(m.getParameterTypes())); - m = ReflectionTest.class.getDeclaredMethod("IIV", int.class, int.class); + m = Main.class.getDeclaredMethod("IIV", int.class, int.class); System.out.println(Arrays.toString(m.getParameterTypes())); show(m.invoke(null, 1111, 2222)); - m = ReflectionTest.class.getDeclaredMethod("III", int.class, int.class); + m = Main.class.getDeclaredMethod("III", int.class, int.class); System.out.println(Arrays.toString(m.getParameterTypes())); show(m.invoke(null, 1111, 2222)); - m = ReflectionTest.class.getDeclaredMethod("sumArray", int[].class); + m = Main.class.getDeclaredMethod("sumArray", int[].class); System.out.println(Arrays.toString(m.getParameterTypes())); show(m.invoke(null, new int[] { 1, 2, 3, 4 })); - m = ReflectionTest.class.getDeclaredMethod("concat", String[].class); + m = Main.class.getDeclaredMethod("concat", String[].class); System.out.println(Arrays.toString(m.getParameterTypes())); show(m.invoke(null, (Object) new String[] { "h", "e", "l", "l", "o" })); - m = ReflectionTest.class.getDeclaredMethod("ZBCDFIJSV", boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class); + m = Main.class.getDeclaredMethod("ZBCDFIJSV", boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class); System.out.println(Arrays.toString(m.getParameterTypes())); show(m.invoke(null, true, (byte) 0, '1', 2, 3, 4, 5, (short) 6)); - m = ReflectionTest.class.getDeclaredMethod("ZBCDLFIJSV", boolean.class, byte.class, char.class, double.class, String.class, float.class, int.class, long.class, short.class); + m = Main.class.getDeclaredMethod("ZBCDLFIJSV", boolean.class, byte.class, char.class, double.class, String.class, float.class, int.class, long.class, short.class); System.out.println(Arrays.toString(m.getParameterTypes())); show(m.invoke(null, true, (byte) 0, '1', 2, "hello world", 3, 4, 5, (short) 6)); try { - m = ReflectionTest.class.getDeclaredMethod("thrower"); + m = Main.class.getDeclaredMethod("thrower"); System.out.println(Arrays.toString(m.getParameterTypes())); show(m.invoke(null)); System.out.println("************* should have thrown!"); |