public class JNILinkTest { static { System.loadLibrary("jnilinktest"); } public static void main(String args[]) { MethodTester m = new MethodTester(); Data1 d1 = new Data1(); Data2 d2 = new Data2(); int NUM_TESTS=4; for(int i=0;i<NUM_TESTS;i++) { try { if(m.test1(d1,d2)) System.out.println("SUCCEED: test1"); else System.out.println("FAIL: test1"); } catch(Exception E) { System.out.println("FAIL: test1 (exception)"); } } for(int i=0;i<NUM_TESTS;i++) { try { if(m.test2(d1,d2)) System.out.println("SUCCEED: test2"); else System.out.println("FAIL: test2"); } catch(Exception E) { System.out.println("FAIL: test2"); } } for(int i=0;i<NUM_TESTS;i++) { try { if(m.test3(d1,d2)) System.out.println("SUCCEED: test3"); else System.out.println("FAIL: test3"); } catch(Exception E) { System.out.println("FAIL: test3"); } } for(int i=0;i<NUM_TESTS;i++) { try { if(m.test4(d1,d2)) System.out.println("SUCCEED: test4"); else System.out.println("FAIL: test4"); } catch(Exception E) { System.out.println("FAIL: test4"); } } for(int i=0;i<NUM_TESTS;i++) { try { if(m.test5(d1,d2)) System.out.println("SUCCEED: test5"); else System.out.println("FAIL: test5"); } catch(Exception E) { System.out.println("FAIL: test5"); } } for(int i=0;i<NUM_TESTS;i++) { try { if(m.test6(d1,d2)) System.out.println("SUCCEED: test6"); else System.out.println("FAIL: test6"); } catch(Exception E) { System.out.println("FAIL: test5"); } } } } class MethodTester { // class test native boolean test1(Data1 d1, Data2 d2); // field test native boolean test2(Data1 d1, Data2 d2); // static field test native boolean test3(Data1 d1, Data2 d2); // method test native boolean test4(Data1 d1, Data2 d2); // static method test native boolean test5(Data1 d1, Data2 d2); // final method test native boolean test6(Data1 d1, Data2 d2); } class Data1 { static boolean staticVar = true; private boolean instanceVar = true; static boolean staticMethod() { return true; } boolean instanceMethod() { return true; } boolean finalMethod() { return true; } } class Data2 extends Data1 { static boolean staticVar = false; private boolean instanceVar = false; static boolean staticMethod() { return false; } boolean instanceMethod() { return false; } boolean finalMethod() { return false; } }