diff options
Diffstat (limited to 'tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp')
-rw-r--r-- | tests/auto/corelib/kernel/qjnienvironment/tst_qjnienvironment.cpp | 30 |
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" |