blob: d53cf5e5645e444c488125f8724f6f7afbff62a2 [file] [log] [blame]
Brian Carlstromce888532013-10-10 00:32:58 -07001/*
2 * Copyright (C) 2013 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Jeff Hao201803f2013-11-20 18:11:39 -080017import java.lang.reflect.Method;
18
Brian Carlstromce888532013-10-10 00:32:58 -070019class JniTest {
20 public static void main(String[] args) {
21 System.loadLibrary("arttest");
22 testFindClassOnAttachedNativeThread();
Jeff Hao62509b62013-12-10 17:44:56 -080023 testFindFieldOnAttachedNativeThread();
Brian Carlstrom67fe2b42013-10-15 18:51:42 -070024 testCallStaticVoidMethodOnSubClass();
Jeff Hao201803f2013-11-20 18:11:39 -080025 testGetMirandaMethod();
Narayan Kamathef809d02013-12-19 17:52:47 +000026 testZeroLengthByteBuffers();
Brian Carlstromce888532013-10-10 00:32:58 -070027 }
28
29 private static native void testFindClassOnAttachedNativeThread();
Brian Carlstrom67fe2b42013-10-15 18:51:42 -070030
Jeff Hao62509b62013-12-10 17:44:56 -080031 private static boolean testFindFieldOnAttachedNativeThreadField;
32
33 private static void testFindFieldOnAttachedNativeThread() {
34 testFindFieldOnAttachedNativeThreadNative();
35 if (!testFindFieldOnAttachedNativeThreadField) {
36 throw new AssertionError();
37 }
38 }
39
40 private static native void testFindFieldOnAttachedNativeThreadNative();
41
Brian Carlstrom67fe2b42013-10-15 18:51:42 -070042 private static void testCallStaticVoidMethodOnSubClass() {
43 testCallStaticVoidMethodOnSubClassNative();
44 if (!testCallStaticVoidMethodOnSubClass_SuperClass.executed) {
45 throw new AssertionError();
46 }
47 }
48
49 private static native void testCallStaticVoidMethodOnSubClassNative();
50
51 private static class testCallStaticVoidMethodOnSubClass_SuperClass {
52 private static boolean executed = false;
53 private static void execute() {
54 executed = true;
55 }
56 }
57
58 private static class testCallStaticVoidMethodOnSubClass_SubClass
59 extends testCallStaticVoidMethodOnSubClass_SuperClass {
60 }
Jeff Hao201803f2013-11-20 18:11:39 -080061
62 private static native Method testGetMirandaMethodNative();
63
64 private static void testGetMirandaMethod() {
65 Method m = testGetMirandaMethodNative();
66 if (m.getDeclaringClass() != testGetMirandaMethod_MirandaInterface.class) {
67 throw new AssertionError();
68 }
69 }
70
Narayan Kamathef809d02013-12-19 17:52:47 +000071 private static native void testZeroLengthByteBuffers();
72
Jeff Hao201803f2013-11-20 18:11:39 -080073 private static abstract class testGetMirandaMethod_MirandaAbstract implements testGetMirandaMethod_MirandaInterface {
74 public boolean inAbstract() {
75 return true;
76 }
77 }
78
79 private static interface testGetMirandaMethod_MirandaInterface {
80 public boolean inInterface();
81 }
Brian Carlstromce888532013-10-10 00:32:58 -070082}