summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r--tests/auto/corelib/kernel/qjnienvironment/testdata/src/org/qtproject/qt/android/testdata/QtJniEnvironmentTestClass.java10
-rw-r--r--tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp50
2 files changed, 48 insertions, 12 deletions
diff --git a/tests/auto/corelib/kernel/qjnienvironment/testdata/src/org/qtproject/qt/android/testdata/QtJniEnvironmentTestClass.java b/tests/auto/corelib/kernel/qjnienvironment/testdata/src/org/qtproject/qt/android/testdata/QtJniEnvironmentTestClass.java
index 7bf6a7455a..411bd1501d 100644
--- a/tests/auto/corelib/kernel/qjnienvironment/testdata/src/org/qtproject/qt/android/testdata/QtJniEnvironmentTestClass.java
+++ b/tests/auto/corelib/kernel/qjnienvironment/testdata/src/org/qtproject/qt/android/testdata/QtJniEnvironmentTestClass.java
@@ -49,3 +49,13 @@ public class QtJniEnvironmentTestClass
}
}
+class QtJniEnvironmentTestClassNoCtor
+{
+ private static native void callbackFromJavaNoCtor(String message);
+
+ public static void appendJavaToString(String message)
+ {
+ callbackFromJavaNoCtor("From Java (no ctor): " + message);
+ }
+}
+
diff --git a/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp b/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp
index 079de48948..8cf207fc3a 100644
--- a/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp
+++ b/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp
@@ -34,6 +34,8 @@
static const char javaTestClass[] =
"org/qtproject/qt/android/testdatapackage/QtJniEnvironmentTestClass";
+static const char javaTestClassNoCtor[] =
+ "org/qtproject/qt/android/testdatapackage/QtJniEnvironmentTestClassNoCtor";
static QString registerNativesString = QStringLiteral("Qt");
static int registerNativeInteger = 0;
@@ -122,22 +124,46 @@ static void callbackFromJava(JNIEnv *env, jobject /*thiz*/, jstring value)
registerNativesString = QJniObject(value).toString();
}
-void tst_QJniEnvironment::registerNativeMethods()
+static void callbackFromJavaNoCtor(JNIEnv *env, jobject /*thiz*/, jstring value)
{
- const JNINativeMethod methods[] {
- {"callbackFromJava", "(Ljava/lang/String;)V", reinterpret_cast<void *>(callbackFromJava)}
- };
+ Q_UNUSED(env)
+ registerNativesString = QJniObject(value).toString();
+}
+void tst_QJniEnvironment::registerNativeMethods()
+{
+ QJniObject QtString = QJniObject::fromString(registerNativesString);
QJniEnvironment env;
- QVERIFY(env.registerNativeMethods(javaTestClass, methods, 1));
- QJniObject QtString = QJniObject::fromString(registerNativesString);
- QJniObject::callStaticMethod<void>(javaTestClass,
- "appendJavaToString",
- "(Ljava/lang/String;)V",
- QtString.object<jstring>());
- QTest::qWait(200);
- QVERIFY(registerNativesString == QStringLiteral("From Java: Qt"));
+ {
+ const JNINativeMethod methods[] {
+ {"callbackFromJava", "(Ljava/lang/String;)V", reinterpret_cast<void *>(callbackFromJava)}
+ };
+
+ QVERIFY(env.registerNativeMethods(javaTestClass, methods, 1));
+
+ QJniObject::callStaticMethod<void>(javaTestClass,
+ "appendJavaToString",
+ "(Ljava/lang/String;)V",
+ QtString.object<jstring>());
+ QTest::qWait(200);
+ QVERIFY(registerNativesString == QStringLiteral("From Java: Qt"));
+ }
+
+ // No default constructor in class
+ {
+ const JNINativeMethod methods[] {{"callbackFromJavaNoCtor", "(Ljava/lang/String;)V",
+ reinterpret_cast<void *>(callbackFromJavaNoCtor)}};
+
+ QVERIFY(env.registerNativeMethods(javaTestClassNoCtor, methods, 1));
+
+ QJniObject::callStaticMethod<void>(javaTestClassNoCtor,
+ "appendJavaToString",
+ "(Ljava/lang/String;)V",
+ QtString.object<jstring>());
+ QTest::qWait(200);
+ QVERIFY(registerNativesString == QStringLiteral("From Java (no ctor): Qt"));
+ }
}
static void intCallbackFromJava(JNIEnv *env, jobject /*thiz*/, jint value)