#include #include JNIEXPORT jint JNICALL Java_calls_docall (JNIEnv *env, jobject _this) { jmethodID method; jclass klass, super; jbyte b; jshort s; jchar c; jint i; jlong l; jfloat f; jdouble d; jvalue val; jint fails = 0; klass = (*env)->GetObjectClass (env, _this); super = (*env)->GetSuperclass (env, klass); method = (*env)->GetMethodID (env, klass, "byte_f", "()B"); b = (*env)->CallByteMethod (env, _this, method); if (b != 23) ++fails; method = (*env)->GetMethodID (env, klass, "char_f", "(I)C"); val.i = 10; c = (*env)->CallCharMethodA (env, _this, method, &val); if (c != ('a' + 10)) ++fails; method = (*env)->GetMethodID (env, super, "int_f", "()I"); i = (*env)->CallNonvirtualIntMethod (env, _this, super, method); if (i != 27) ++fails; i = (*env)->CallIntMethod (env, _this, method); if (i != 1023) ++fails; method = (*env)->GetStaticMethodID (env, klass, "long_f", "(J)J"); l = (*env)->CallStaticLongMethod (env, klass, method, (jlong) 10); if (l != 2033) ++fails; method = (*env)->GetStaticMethodID (env, klass, "longpb_f", "(BJBJBJ)J"); l = (*env)->CallStaticLongMethod (env, klass, method, (jbyte) 13, (jlong) 3, (jbyte) 13, (jlong) 3, (jbyte) 13, (jlong) 4); if (l != 3033) ++fails; method = (*env)->GetMethodID (env, klass, "void_f", "()V"); (*env)->CallVoidMethod (env, _this, method); method = (*env)->GetStaticMethodID (env, klass, "short_f", "()S"); s = (*env)->CallStaticShortMethod (env, klass, method); if (s != 2) ++fails; method = (*env)->GetMethodID (env, klass, "double_f", "()D"); d = (*env)->CallDoubleMethod (env, _this, method); if (d != -1.0) ++fails; method = (*env)->GetMethodID (env, klass, "float_f", "()F"); f = (*env)->CallFloatMethod (env, _this, method); if (f != 1.0) ++fails; return fails; }