public class TestJNIGetFieldID {
  static {System.loadLibrary("TestJNIGetFieldID");}

  static class A {
    public static int s = 1;
    public int a = 0;
  }

  static interface I {
    public static final int f = 1;
  }

  static class B extends A implements I {
    public int a = 1;
  }

  public static void main(String[] args) {

    try {
      if (getInstanceFieldA(new B()) == 1) {
        System.out.println("instance_a: pass");
      } else {
        System.out.println("instance_a: fail");
      }
    } catch(Throwable e) {
      System.out.println("instance_a: fail");
    }

    try {
      if (getStaticFieldS(B.class) == 1) {
         System.out.println("static_s: pass");
      } else {
        System.out.println("static_s: fail");
      }
    } catch(Throwable e) {
      System.out.println("static_s: fail");
    }

    try {
      if (getStaticFinalF(B.class) == 1) {
        System.out.println("static_f: pass");
      } else {
        System.out.println("static_f: fail");
      }
    } catch(Throwable e) {
      System.out.println("static_f: fail");
    }
  }

  private static native int getInstanceFieldA(B b);
  private static native int getStaticFieldS(Class c);
  private static native int getStaticFinalF(Class c);
}

