summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp')
-rw-r--r--tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp b/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp
index 08cf0e4831..d47a9ecd57 100644
--- a/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp
+++ b/tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp
@@ -27,8 +27,14 @@
****************************************************************************/
#include <QtCore/QJniEnvironment>
+#include <QtCore/QJniObject>
#include <QtTest/QtTest>
+static const char javaTestClass[] =
+ "org/qtproject/qt/android/testdatapackage/QtJniEnvironmentTestClass";
+
+static QString registerNativesString = QStringLiteral("Qt");
+
class tst_QJniEnvironment : public QObject
{
Q_OBJECT
@@ -36,6 +42,7 @@ class tst_QJniEnvironment : public QObject
private slots:
void jniEnv();
void javaVM();
+ void registerNativeMethods();
};
void tst_QJniEnvironment::jniEnv()
@@ -101,6 +108,29 @@ void tst_QJniEnvironment::javaVM()
QCOMPARE(env.javaVM(), vm);
}
+static void callbackFromJava(JNIEnv *env, jobject /*thiz*/, jstring value)
+{
+ registerNativesString = QJniObject(value).toString();
+}
+
+void tst_QJniEnvironment::registerNativeMethods()
+{
+ JNINativeMethod methods[] {
+ {"callbackFromJava", "(Ljava/lang/String;)V", reinterpret_cast<void *>(callbackFromJava)}
+ };
+
+ 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"));
+}
+
QTEST_MAIN(tst_QJniEnvironment)
#include "tst_qjnienvironment.moc"