aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2021-05-11 12:49:40 +0300
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2021-06-29 14:08:24 +0300
commitae24e41ad4da78b029fd42ea317e4d2be73b015e (patch)
tree3f2d8c44dbf5a3eb666a7782bb5c1dfd62481c8e /tests/auto
parentede82024b08842e9599b9bdbd00b7498601a921f (diff)
Remove QtAndroidExtras module and add note about its state in Qt 6HEADdev
The JNI utilities (i.e. QJniObject, QJniEnvironment) are already under qtbase as public APIs. Permission handling is now under QCoreApplication::{check,request}Permission and QPermission namespace. Some of the QtAndroid namespace functions are now under QNativeInterface's QAndroidApplication, this includes: * sdkVersion() * hideSplashScreen() * context() and isActivityContext() * runOnAndroidMainThread() The remaining APIs are now moved as private APIs under qtbase ee05af296f65e240f64db6470cdddafbddbf2fa3. That is until we add new cross-platform APIs to replace their functionalities like Intents handling, starting activites and working with Services. Task-number: QTBUG-83251 Task-number: QTBUG-84382 Pick-to: 6.2 Change-Id: Id077f8cbbe223a987916f737fad6088fb58e470d Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/CMakeLists.txt6
-rw-r--r--tests/auto/cmake/CMakeLists.txt14
-rw-r--r--tests/auto/qandroidfunctions/CMakeLists.txt13
-rw-r--r--tests/auto/qandroidfunctions/tst_qandroidfunctions.cpp105
-rw-r--r--tests/auto/qandroidjnienvironment/CMakeLists.txt14
-rw-r--r--tests/auto/qandroidjnienvironment/tst_qandroidjnienvironment.cpp90
-rw-r--r--tests/auto/qandroidjniobject/CMakeLists.txt22
-rw-r--r--tests/auto/qandroidjniobject/testdata/src/org/qtproject/qt/android/testdata/QtAndroidJniObjectTestClass.java177
-rw-r--r--tests/auto/qandroidjniobject/tst_qandroidjniobject.cpp1055
9 files changed, 0 insertions, 1496 deletions
diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt
deleted file mode 100644
index b9cb400..0000000
--- a/tests/auto/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-# Generated from auto.pro.
-
-#add_subdirectory(cmake) # special case
-add_subdirectory(qandroidjnienvironment)
-add_subdirectory(qandroidjniobject)
-add_subdirectory(qandroidfunctions)
diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt
deleted file mode 100644
index a786745..0000000
--- a/tests/auto/cmake/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-
-cmake_minimum_required(VERSION 2.8)
-
-project(qmake_cmake_files)
-
-enable_testing()
-
-find_package(Qt5Core REQUIRED)
-
-include("${_Qt5CTestMacros}")
-
-test_module_includes(
- AndroidExtras QAndroidJniObject
-)
diff --git a/tests/auto/qandroidfunctions/CMakeLists.txt b/tests/auto/qandroidfunctions/CMakeLists.txt
deleted file mode 100644
index ae983db..0000000
--- a/tests/auto/qandroidfunctions/CMakeLists.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-# Generated from qandroidfunctions.pro.
-
-#####################################################################
-## tst_qandroidfunctions Test:
-#####################################################################
-
-qt_internal_add_test(tst_qandroidfunctions
- SOURCES
- tst_qandroidfunctions.cpp
- PUBLIC_LIBRARIES
- Qt::AndroidExtras
- Qt::Gui
-)
diff --git a/tests/auto/qandroidfunctions/tst_qandroidfunctions.cpp b/tests/auto/qandroidfunctions/tst_qandroidfunctions.cpp
deleted file mode 100644
index f6bfc2b..0000000
--- a/tests/auto/qandroidfunctions/tst_qandroidfunctions.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QtAndroidExtras/QtAndroid>
-
-class tst_QAndroidFunctions : public QObject
-{
- Q_OBJECT
-private slots:
- void testAndroidSdkVersion();
- void testAndroidActivity();
- void testRunOnAndroidThread();
-};
-
-void tst_QAndroidFunctions::testAndroidSdkVersion()
-{
- QVERIFY(QtAndroid::androidSdkVersion() > 0);
-}
-
-void tst_QAndroidFunctions::testAndroidActivity()
-{
- QAndroidJniObject activity = QtAndroid::androidActivity();
- QVERIFY(activity.isValid());
- QVERIFY(activity.callMethod<jboolean>("isTaskRoot"));
-}
-
-void tst_QAndroidFunctions::testRunOnAndroidThread()
-{
- int a = 0;
-
- // test async operation
- QtAndroid::runOnAndroidThread([&a]{
- a = 1;
- });
- QTRY_COMPARE(a, 1); // wait for async op. to finish
-
- // test sync operation
- QtAndroid::runOnAndroidThreadSync([&a]{
- a = 2;
- });
- QCOMPARE(a, 2);
-
- // test async/async lock
- QtAndroid::runOnAndroidThread([&a]{
- QtAndroid::runOnAndroidThread([&a]{
- a = 3;
- });
- });
- QTRY_COMPARE(a, 3); // wait for async op. to finish
-
- // test async/sync lock
- QtAndroid::runOnAndroidThread([&a]{
- QtAndroid::runOnAndroidThreadSync([&a]{
- a = 5;
- });
- });
- QTRY_COMPARE(a, 5);
-
- // test sync/sync lock
- QtAndroid::runOnAndroidThreadSync([&a]{
- QtAndroid::runOnAndroidThreadSync([&a]{
- a = 4;
- });
- });
- QCOMPARE(a, 4);
-
-
- // test sync/async lock
- QtAndroid::runOnAndroidThreadSync([&a]{
- QtAndroid::runOnAndroidThread([&a]{
- a = 6;
- });
- });
- QCOMPARE(a, 6);
-}
-
-QTEST_APPLESS_MAIN(tst_QAndroidFunctions)
-
-#include "tst_qandroidfunctions.moc"
diff --git a/tests/auto/qandroidjnienvironment/CMakeLists.txt b/tests/auto/qandroidjnienvironment/CMakeLists.txt
deleted file mode 100644
index 56dd64f..0000000
--- a/tests/auto/qandroidjnienvironment/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-# Generated from qandroidjnienvironment.pro.
-
-#####################################################################
-## tst_qandroidjnienvironment Test:
-#####################################################################
-
-qt_internal_add_test(tst_qandroidjnienvironment
- SOURCES
- tst_qandroidjnienvironment.cpp
- PUBLIC_LIBRARIES
- Qt::AndroidExtras
- Qt::CorePrivate
- Qt::Gui
-)
diff --git a/tests/auto/qandroidjnienvironment/tst_qandroidjnienvironment.cpp b/tests/auto/qandroidjnienvironment/tst_qandroidjnienvironment.cpp
deleted file mode 100644
index 3aa2033..0000000
--- a/tests/auto/qandroidjnienvironment/tst_qandroidjnienvironment.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QtAndroidExtras/QAndroidJniEnvironment>
-#include <QtCore/private/qjnihelpers_p.h>
-
-class tst_QAndroidJniEnvironment : public QObject
-{
- Q_OBJECT
-
-private slots:
- void jniEnv();
- void javaVM();
-};
-
-void tst_QAndroidJniEnvironment::jniEnv()
-{
- JavaVM *javaVM = QtAndroidPrivate::javaVM();
- QVERIFY(javaVM);
-
- {
- QAndroidJniEnvironment env;
-
- // JNI environment should now be attached to the current thread
- JNIEnv *jni = 0;
- QCOMPARE(javaVM->GetEnv((void**)&jni, JNI_VERSION_1_6), JNI_OK);
-
- JNIEnv *e = env;
- QVERIFY(e);
-
- QCOMPARE(env->GetVersion(), JNI_VERSION_1_6);
-
- // try to find an existing class
- QVERIFY(env->FindClass("java/lang/Object"));
- QVERIFY(!env->ExceptionCheck());
-
- // try to find a nonexistent class
- QVERIFY(!env->FindClass("this/doesnt/Exist"));
- QVERIFY(env->ExceptionCheck());
- env->ExceptionClear();
- }
-
- // The env does not detach automatically, even if it goes out of scope. The only way it can
- // be detached is if it's done explicitly, or if the thread we attached to gets killed (TLS clean-up).
- JNIEnv *jni = nullptr;
- QCOMPARE(javaVM->GetEnv((void**)&jni, JNI_VERSION_1_6), JNI_OK);
-}
-
-void tst_QAndroidJniEnvironment::javaVM()
-{
- JavaVM *javaVM = QtAndroidPrivate::javaVM();
- QVERIFY(javaVM);
-
- QAndroidJniEnvironment env;
- QCOMPARE(env.javaVM(), javaVM);
-
- JavaVM *vm = 0;
- QCOMPARE(env->GetJavaVM(&vm), JNI_OK);
- QCOMPARE(env.javaVM(), vm);
-}
-
-QTEST_APPLESS_MAIN(tst_QAndroidJniEnvironment)
-
-#include "tst_qandroidjnienvironment.moc"
diff --git a/tests/auto/qandroidjniobject/CMakeLists.txt b/tests/auto/qandroidjniobject/CMakeLists.txt
deleted file mode 100644
index e1dd052..0000000
--- a/tests/auto/qandroidjniobject/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-# Generated from qandroidjniobject.pro.
-
-#####################################################################
-## tst_qandroidjniobject Test:
-#####################################################################
-
-qt_internal_add_test(tst_qandroidjniobject
- SOURCES
- tst_qandroidjniobject.cpp
- PUBLIC_LIBRARIES
- Qt::AndroidExtras
- Qt::Gui
-)
-
-if(ANDROID)
- set_property(TARGET tst_qandroidjniobject APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
- ${CMAKE_CURRENT_SOURCE_DIR}/testdata
- )
-endif()
-
-#### Keys ignored in scope 1:.:.:qandroidjniobject.pro:<TRUE>:
-# OTHER_FILES = "testdata/src/org/qtproject/qt/android/testdata/QtAndroidJniObjectTestClass.java"
diff --git a/tests/auto/qandroidjniobject/testdata/src/org/qtproject/qt/android/testdata/QtAndroidJniObjectTestClass.java b/tests/auto/qandroidjniobject/testdata/src/org/qtproject/qt/android/testdata/QtAndroidJniObjectTestClass.java
deleted file mode 100644
index d2799b0..0000000
--- a/tests/auto/qandroidjniobject/testdata/src/org/qtproject/qt/android/testdata/QtAndroidJniObjectTestClass.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-package org.qtproject.qt.android.testdatapackage;
-
-public class QtAndroidJniObjectTestClass
-{
- static final byte A_BYTE_VALUE = 127;
- static final short A_SHORT_VALUE = 32767;
- static final int A_INT_VALUE = 060701;
- static final long A_LONG_VALUE = 060701;
- static final float A_FLOAT_VALUE = 1.0f;
- static final double A_DOUBLE_VALUE = 1.0;
- static final boolean A_BOOLEAN_VALUE = true;
- static final char A_CHAR_VALUE = 'Q';
- static final String A_STRING_OBJECT = "TEST_DATA_STRING";
- static final Class A_CLASS_OBJECT = QtAndroidJniObjectTestClass.class;
- static final Object A_OBJECT_OBJECT = new QtAndroidJniObjectTestClass();
- static final Throwable A_THROWABLE_OBJECT = new Throwable(A_STRING_OBJECT);
-
- // --------------------------------------------------------------------------------------------
- public static void staticVoidMethod() { return; }
- public static void staticVoidMethodWithArgs(int a, boolean b, char c) { return; }
-
- public void voidMethod() { return; }
- public void voidMethodWithArgs(int a, boolean b, char c) { return; }
-
- // --------------------------------------------------------------------------------------------
- public static boolean staticBooleanMethod() { return A_BOOLEAN_VALUE; }
- public static boolean staticBooleanMethodWithArgs(boolean a, boolean b, boolean c)
- { return staticBooleanMethod(); }
-
- public boolean booleanMethod() { return staticBooleanMethod(); }
- public boolean booleanMethodWithArgs(boolean a, boolean b, boolean c)
- { return staticBooleanMethodWithArgs(a, b, c); }
-
- // --------------------------------------------------------------------------------------------
- public static byte staticByteMethod() { return A_BYTE_VALUE; }
- public static byte staticByteMethodWithArgs(byte a, byte b, byte c) { return staticByteMethod(); }
-
- public byte byteMethod() { return staticByteMethod(); }
- public byte byteMethodWithArgs(byte a, byte b, byte c)
- { return staticByteMethodWithArgs(a, b, c); }
-
- // --------------------------------------------------------------------------------------------
- public static char staticCharMethod() { return A_CHAR_VALUE; }
- public static char staticCharMethodWithArgs(char a, char b, char c) { return staticCharMethod(); }
-
- public char charMethod() { return staticCharMethod(); }
- public char charMethodWithArgs(char a, char b, char c)
- { return staticCharMethodWithArgs(a, b, c); }
-
- // --------------------------------------------------------------------------------------------
- public static short staticShortMethod() { return A_SHORT_VALUE; }
- public static short staticShortMethodWithArgs(short a, short b, short c) { return staticShortMethod(); }
-
- public short shortMethod() { return staticShortMethod(); }
- public short shortMethodWithArgs(short a, short b, short c)
- { return staticShortMethodWithArgs(a, b, c); }
-
- // --------------------------------------------------------------------------------------------
- public static int staticIntMethod() { return A_INT_VALUE; }
- public static int staticIntMethodWithArgs(int a, int b, int c) { return staticIntMethod(); }
-
- public int intMethod() { return staticIntMethod(); }
- public int intMethodWithArgs(int a, int b, int c) { return staticIntMethodWithArgs(a, b, c); }
-
- // --------------------------------------------------------------------------------------------
- public static long staticLongMethod() { return A_LONG_VALUE; }
- public static long staticLongMethodWithArgs(long a, long b, long c) { return staticLongMethod(); }
-
- public long longMethod() { return staticLongMethod(); }
- public long longMethodWithArgs(long a, long b, long c)
- { return staticLongMethodWithArgs(a, b, c); }
-
- // --------------------------------------------------------------------------------------------
- public static float staticFloatMethod() { return A_FLOAT_VALUE; }
- public static float staticFloatMethodWithArgs(float a, float b, float c) { return staticFloatMethod(); }
-
- public float floatMethod() { return staticFloatMethod(); }
- public float floatMethodWithArgs(float a, float b, float c)
- { return staticFloatMethodWithArgs(a, b, c); }
-
- // --------------------------------------------------------------------------------------------
- public static double staticDoubleMethod() { return A_DOUBLE_VALUE; }
- public static double staticDoubleMethodWithArgs(double a, double b, double c)
- { return staticDoubleMethod(); }
-
- public double doubleMethod() { return staticDoubleMethod(); }
- public double doubleMethodWithArgs(double a, double b, double c)
- { return staticDoubleMethodWithArgs(a, b, c); }
-
- // --------------------------------------------------------------------------------------------
- public static Object staticObjectMethod() { return A_OBJECT_OBJECT; }
- public Object objectMethod() { return staticObjectMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static Class staticClassMethod() { return A_CLASS_OBJECT; }
- public Class classMethod() { return staticClassMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static String staticStringMethod() { return A_STRING_OBJECT; }
- public String stringMethod() { return staticStringMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static Throwable staticThrowableMethod() { return A_THROWABLE_OBJECT; }
- public Throwable throwableMethod() { return staticThrowableMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static Object[] staticObjectArrayMethod()
- { Object[] array = { new Object(), new Object(), new Object() }; return array; }
- public Object[] objectArrayMethod() { return staticObjectArrayMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static boolean[] staticBooleanArrayMethod()
- { boolean[] array = { true, true, true }; return array; }
- public boolean[] booleanArrayMethod() { return staticBooleanArrayMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static byte[] staticByteArrayMethod()
- { byte[] array = { 'a', 'b', 'c' }; return array; }
- public byte[] byteArrayMethod() { return staticByteArrayMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static char[] staticCharArrayMethod()
- { char[] array = { 'a', 'b', 'c' }; return array; }
- public char[] charArrayMethod() { return staticCharArrayMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static short[] staticShortArrayMethod() { short[] array = { 3, 2, 1 }; return array; }
- public short[] shortArrayMethod() { return staticShortArrayMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static int[] staticIntArrayMethod() { int[] array = { 3, 2, 1 }; return array; }
- public int[] intArrayMethod() { return staticIntArrayMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static long[] staticLongArrayMethod()
- { long[] array = { 3, 2, 1 }; return array; }
- public long[] longArrayMethod() { return staticLongArrayMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static float[] staticFloatArrayMethod()
- { float[] array = { 1.0f, 2.0f, 3.0f }; return array; }
- public float[] floatArrayMethod() { return staticFloatArrayMethod(); }
-
- // --------------------------------------------------------------------------------------------
- public static double[] staticDoubleArrayMethod()
- { double[] array = { 3.0, 2.0, 1.0 }; return array; }
- public double[] doubleArrayMethod() { return staticDoubleArrayMethod(); }
-}
-
diff --git a/tests/auto/qandroidjniobject/tst_qandroidjniobject.cpp b/tests/auto/qandroidjniobject/tst_qandroidjniobject.cpp
deleted file mode 100644
index 5de8537..0000000
--- a/tests/auto/qandroidjniobject/tst_qandroidjniobject.cpp
+++ /dev/null
@@ -1,1055 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QString>
-#include <QtTest>
-#include <QtAndroidExtras/QAndroidJniObject>
-#include <QtAndroidExtras/QAndroidJniEnvironment>
-
-static const char testClassName[] = "org/qtproject/qt/android/testdatapackage/QtAndroidJniObjectTestClass";
-
-static const jbyte A_BYTE_VALUE = 127;
-static const jshort A_SHORT_VALUE = 32767;
-static const jint A_INT_VALUE = 060701;
-static const jlong A_LONG_VALUE = 060701;
-static const jfloat A_FLOAT_VALUE = 1.0;
-static const jdouble A_DOUBLE_VALUE = 1.0;
-static const jboolean A_BOOLEAN_VALUE = true;
-static const jchar A_CHAR_VALUE = 'Q';
-
-static QString A_STRING_OBJECT()
-{
- return QStringLiteral("TEST_DATA_STRING");
-}
-
-class tst_QAndroidJniObject : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QAndroidJniObject();
-
-private slots:
- void initTestCase();
-
- void ctor();
- void callMethodTest();
- void callObjectMethodTest();
- void stringConvertionTest();
- void compareOperatorTests();
- void callStaticObjectMethodClassName();
- void callStaticObjectMethod();
- void callStaticBooleanMethodClassName();
- void callStaticBooleanMethod();
- void callStaticCharMethodClassName();
- void callStaticCharMethod();
- void callStaticIntMethodClassName();
- void callStaticIntMethod();
- void callStaticByteMethodClassName();
- void callStaticByteMethod();
- void callStaticDoubleMethodClassName();
- void callStaticDoubleMethod();
- void callStaticFloatMethodClassName();
- void callStaticFloatMethod();
- void callStaticLongMethodClassName();
- void callStaticLongMethod();
- void callStaticShortMethodClassName();
- void callStaticShortMethod();
- void getStaticObjectFieldClassName();
- void getStaticObjectField();
- void getStaticIntFieldClassName();
- void getStaticIntField();
- void getStaticByteFieldClassName();
- void getStaticByteField();
- void getStaticLongFieldClassName();
- void getStaticLongField();
- void getStaticDoubleFieldClassName();
- void getStaticDoubleField();
- void getStaticFloatFieldClassName();
- void getStaticFloatField();
- void getStaticShortFieldClassName();
- void getStaticShortField();
- void getStaticCharFieldClassName();
- void getStaticCharField();
- void getBooleanField();
- void getIntField();
- void templateApiCheck();
- void isClassAvailable();
- void fromLocalRef();
-
- void cleanupTestCase();
-};
-
-tst_QAndroidJniObject::tst_QAndroidJniObject()
-{
-}
-
-void tst_QAndroidJniObject::initTestCase()
-{
-}
-
-void tst_QAndroidJniObject::cleanupTestCase()
-{
-}
-
-void tst_QAndroidJniObject::ctor()
-{
- {
- QAndroidJniObject object;
- QVERIFY(!object.isValid());
- }
-
- {
- QAndroidJniObject object("java/lang/String");
- QVERIFY(object.isValid());
- }
-
- {
- QAndroidJniObject string = QAndroidJniObject::fromString(QLatin1String("Hello, Java"));
- QAndroidJniObject object("java/lang/String", "(Ljava/lang/String;)V", string.object<jstring>());
- QVERIFY(object.isValid());
- QCOMPARE(string.toString(), object.toString());
- }
-
- {
- QAndroidJniEnvironment env;
- jclass javaStringClass = env->FindClass("java/lang/String");
- QAndroidJniObject string(javaStringClass);
- QVERIFY(string.isValid());
- }
-
- {
- QAndroidJniEnvironment env;
- const QString qString = QLatin1String("Hello, Java");
- jclass javaStringClass = env->FindClass("java/lang/String");
- QAndroidJniObject string = QAndroidJniObject::fromString(qString);
- QAndroidJniObject stringCpy(javaStringClass, "(Ljava/lang/String;)V", string.object<jstring>());
- QVERIFY(stringCpy.isValid());
- QCOMPARE(qString, stringCpy.toString());
- }
-}
-
-void tst_QAndroidJniObject::callMethodTest()
-{
- {
- QAndroidJniObject jString1 = QAndroidJniObject::fromString(QLatin1String("Hello, Java"));
- QAndroidJniObject jString2 = QAndroidJniObject::fromString(QLatin1String("hELLO, jAVA"));
- QVERIFY(jString1 != jString2);
-
- const jboolean isEmpty = jString1.callMethod<jboolean>("isEmpty");
- QVERIFY(!isEmpty);
-
- const jint ret = jString1.callMethod<jint>("compareToIgnoreCase",
- "(Ljava/lang/String;)I",
- jString2.object<jstring>());
- QVERIFY(0 == ret);
- }
-
- {
- jlong jLong = 100;
- QAndroidJniObject longObject("java/lang/Long", "(J)V", jLong);
- jlong ret = longObject.callMethod<jlong>("longValue");
- QCOMPARE(ret, jLong);
- }
-}
-
-void tst_QAndroidJniObject::callObjectMethodTest()
-{
- const QString qString = QLatin1String("Hello, Java");
- QAndroidJniObject jString = QAndroidJniObject::fromString(qString);
- const QString qStringRet = jString.callObjectMethod<jstring>("toUpperCase").toString();
- QCOMPARE(qString.toUpper(), qStringRet);
-
- QAndroidJniObject subString = jString.callObjectMethod("substring",
- "(II)Ljava/lang/String;",
- 0, 4);
- QCOMPARE(subString.toString(), qString.mid(0, 4));
-}
-
-void tst_QAndroidJniObject::stringConvertionTest()
-{
- const QString qString(QLatin1String("Hello, Java"));
- QAndroidJniObject jString = QAndroidJniObject::fromString(qString);
- QVERIFY(jString.isValid());
- QString qStringRet = jString.toString();
- QCOMPARE(qString, qStringRet);
-}
-
-void tst_QAndroidJniObject::compareOperatorTests()
-{
- QString str("hello!");
- QAndroidJniObject stringObject = QAndroidJniObject::fromString(str);
-
- jobject obj = stringObject.object();
- jobject jobj = stringObject.object<jobject>();
- jstring jsobj = stringObject.object<jstring>();
-
- QVERIFY(obj == stringObject);
- QVERIFY(jobj == stringObject);
- QVERIFY(stringObject == jobj);
- QVERIFY(jsobj == stringObject);
- QVERIFY(stringObject == jsobj);
-
- QAndroidJniObject stringObject3 = stringObject.object<jstring>();
- QVERIFY(stringObject3 == stringObject);
-
- QAndroidJniObject stringObject2 = QAndroidJniObject::fromString(str);
- QVERIFY(stringObject != stringObject2);
-
- jstring jstrobj = 0;
- QAndroidJniObject invalidStringObject;
- QVERIFY(invalidStringObject == jstrobj);
-
- QVERIFY(jstrobj != stringObject);
- QVERIFY(stringObject != jstrobj);
- QVERIFY(!invalidStringObject.isValid());
-}
-
-void tst_QAndroidJniObject::callStaticObjectMethodClassName()
-{
- QAndroidJniObject formatString = QAndroidJniObject::fromString(QLatin1String("test format"));
- QVERIFY(formatString.isValid());
-
- QVERIFY(QAndroidJniObject::isClassAvailable("java/lang/String"));
- QAndroidJniObject returnValue = QAndroidJniObject::callStaticObjectMethod("java/lang/String",
- "format",
- "(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;",
- formatString.object<jstring>(),
- jobjectArray(0));
- QVERIFY(returnValue.isValid());
-
- QString returnedString = returnValue.toString();
-
- QCOMPARE(returnedString, QString::fromLatin1("test format"));
-}
-
-void tst_QAndroidJniObject::callStaticObjectMethod()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/String");
- QVERIFY(cls != 0);
-
- QAndroidJniObject formatString = QAndroidJniObject::fromString(QLatin1String("test format"));
- QVERIFY(formatString.isValid());
-
- QAndroidJniObject returnValue = QAndroidJniObject::callStaticObjectMethod(cls,
- "format",
- "(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;",
- formatString.object<jstring>(),
- jobjectArray(0));
- QVERIFY(returnValue.isValid());
-
- QString returnedString = returnValue.toString();
-
- QCOMPARE(returnedString, QString::fromLatin1("test format"));
-}
-
-void tst_QAndroidJniObject::callStaticBooleanMethod()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Boolean");
- QVERIFY(cls != 0);
-
- {
- QAndroidJniObject parameter = QAndroidJniObject::fromString("true");
- QVERIFY(parameter.isValid());
-
- jboolean b = QAndroidJniObject::callStaticMethod<jboolean>(cls,
- "parseBoolean",
- "(Ljava/lang/String;)Z",
- parameter.object<jstring>());
- QVERIFY(b);
- }
-
- {
- QAndroidJniObject parameter = QAndroidJniObject::fromString("false");
- QVERIFY(parameter.isValid());
-
- jboolean b = QAndroidJniObject::callStaticMethod<jboolean>(cls,
- "parseBoolean",
- "(Ljava/lang/String;)Z",
- parameter.object<jstring>());
- QVERIFY(!b);
- }
-}
-
-void tst_QAndroidJniObject::callStaticBooleanMethodClassName()
-{
- {
- QAndroidJniObject parameter = QAndroidJniObject::fromString("true");
- QVERIFY(parameter.isValid());
-
- jboolean b = QAndroidJniObject::callStaticMethod<jboolean>("java/lang/Boolean",
- "parseBoolean",
- "(Ljava/lang/String;)Z",
- parameter.object<jstring>());
- QVERIFY(b);
- }
-
- {
- QAndroidJniObject parameter = QAndroidJniObject::fromString("false");
- QVERIFY(parameter.isValid());
-
- jboolean b = QAndroidJniObject::callStaticMethod<jboolean>("java/lang/Boolean",
- "parseBoolean",
- "(Ljava/lang/String;)Z",
- parameter.object<jstring>());
- QVERIFY(!b);
- }
-}
-
-void tst_QAndroidJniObject::callStaticByteMethodClassName()
-{
- QString number = QString::number(123);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jbyte returnValue = QAndroidJniObject::callStaticMethod<jbyte>("java/lang/Byte",
- "parseByte",
- "(Ljava/lang/String;)B",
- parameter.object<jstring>());
- QCOMPARE(returnValue, jbyte(number.toInt()));
-}
-
-void tst_QAndroidJniObject::callStaticByteMethod()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Byte");
- QVERIFY(cls != 0);
-
- QString number = QString::number(123);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jbyte returnValue = QAndroidJniObject::callStaticMethod<jbyte>(cls,
- "parseByte",
- "(Ljava/lang/String;)B",
- parameter.object<jstring>());
- QCOMPARE(returnValue, jbyte(number.toInt()));
-}
-
-void tst_QAndroidJniObject::callStaticIntMethodClassName()
-{
- QString number = QString::number(123);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jint returnValue = QAndroidJniObject::callStaticMethod<jint>("java/lang/Integer",
- "parseInt",
- "(Ljava/lang/String;)I",
- parameter.object<jstring>());
- QCOMPARE(returnValue, number.toInt());
-}
-
-
-void tst_QAndroidJniObject::callStaticIntMethod()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Integer");
- QVERIFY(cls != 0);
-
- QString number = QString::number(123);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jint returnValue = QAndroidJniObject::callStaticMethod<jint>(cls,
- "parseInt",
- "(Ljava/lang/String;)I",
- parameter.object<jstring>());
- QCOMPARE(returnValue, number.toInt());
-}
-
-void tst_QAndroidJniObject::callStaticCharMethodClassName()
-{
- jchar returnValue = QAndroidJniObject::callStaticMethod<jchar>("java/lang/Character",
- "toUpperCase",
- "(C)C",
- jchar('a'));
- QCOMPARE(returnValue, jchar('A'));
-}
-
-
-void tst_QAndroidJniObject::callStaticCharMethod()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Character");
- QVERIFY(cls != 0);
-
- jchar returnValue = QAndroidJniObject::callStaticMethod<jchar>(cls,
- "toUpperCase",
- "(C)C",
- jchar('a'));
- QCOMPARE(returnValue, jchar('A'));
-}
-
-void tst_QAndroidJniObject::callStaticDoubleMethodClassName ()
-{
- QString number = QString::number(123.45);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jdouble returnValue = QAndroidJniObject::callStaticMethod<jdouble>("java/lang/Double",
- "parseDouble",
- "(Ljava/lang/String;)D",
- parameter.object<jstring>());
- QCOMPARE(returnValue, number.toDouble());
-}
-
-
-void tst_QAndroidJniObject::callStaticDoubleMethod()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Double");
- QVERIFY(cls != 0);
-
- QString number = QString::number(123.45);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jdouble returnValue = QAndroidJniObject::callStaticMethod<jdouble>(cls,
- "parseDouble",
- "(Ljava/lang/String;)D",
- parameter.object<jstring>());
- QCOMPARE(returnValue, number.toDouble());
-}
-
-void tst_QAndroidJniObject::callStaticFloatMethodClassName()
-{
- QString number = QString::number(123.45);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jfloat returnValue = QAndroidJniObject::callStaticMethod<jfloat>("java/lang/Float",
- "parseFloat",
- "(Ljava/lang/String;)F",
- parameter.object<jstring>());
- QCOMPARE(returnValue, number.toFloat());
-}
-
-
-void tst_QAndroidJniObject::callStaticFloatMethod()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Float");
- QVERIFY(cls != 0);
-
- QString number = QString::number(123.45);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jfloat returnValue = QAndroidJniObject::callStaticMethod<jfloat>(cls,
- "parseFloat",
- "(Ljava/lang/String;)F",
- parameter.object<jstring>());
- QCOMPARE(returnValue, number.toFloat());
-}
-
-void tst_QAndroidJniObject::callStaticShortMethodClassName()
-{
- QString number = QString::number(123);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jshort returnValue = QAndroidJniObject::callStaticMethod<jshort>("java/lang/Short",
- "parseShort",
- "(Ljava/lang/String;)S",
- parameter.object<jstring>());
- QCOMPARE(returnValue, number.toShort());
-}
-
-
-void tst_QAndroidJniObject::callStaticShortMethod()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Short");
- QVERIFY(cls != 0);
-
- QString number = QString::number(123);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jshort returnValue = QAndroidJniObject::callStaticMethod<jshort>(cls,
- "parseShort",
- "(Ljava/lang/String;)S",
- parameter.object<jstring>());
- QCOMPARE(returnValue, number.toShort());
-}
-
-void tst_QAndroidJniObject::callStaticLongMethodClassName()
-{
- QString number = QString::number(123);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jlong returnValue = QAndroidJniObject::callStaticMethod<jlong>("java/lang/Long",
- "parseLong",
- "(Ljava/lang/String;)J",
- parameter.object<jstring>());
- QCOMPARE(returnValue, jlong(number.toLong()));
-}
-
-void tst_QAndroidJniObject::callStaticLongMethod()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Long");
- QVERIFY(cls != 0);
-
- QString number = QString::number(123);
- QAndroidJniObject parameter = QAndroidJniObject::fromString(number);
-
- jlong returnValue = QAndroidJniObject::callStaticMethod<jlong>(cls,
- "parseLong",
- "(Ljava/lang/String;)J",
- parameter.object<jstring>());
- QCOMPARE(returnValue, jlong(number.toLong()));
-}
-
-void tst_QAndroidJniObject::getStaticObjectFieldClassName()
-{
- {
- QAndroidJniObject boolObject = QAndroidJniObject::getStaticObjectField<jobject>("java/lang/Boolean",
- "FALSE",
- "Ljava/lang/Boolean;");
- QVERIFY(boolObject.isValid());
-
- jboolean booleanValue = boolObject.callMethod<jboolean>("booleanValue");
- QVERIFY(!booleanValue);
- }
-
- {
- QAndroidJniObject boolObject = QAndroidJniObject::getStaticObjectField<jobject>("java/lang/Boolean",
- "TRUE",
- "Ljava/lang/Boolean;");
- QVERIFY(boolObject.isValid());
-
- jboolean booleanValue = boolObject.callMethod<jboolean>("booleanValue");
- QVERIFY(booleanValue);
- }
-
- {
- QAndroidJniObject boolObject = QAndroidJniObject::getStaticObjectField("java/lang/Boolean",
- "FALSE",
- "Ljava/lang/Boolean;");
- QVERIFY(boolObject.isValid());
- jboolean booleanValue = boolObject.callMethod<jboolean>("booleanValue");
- QVERIFY(!booleanValue);
- }
-}
-
-void tst_QAndroidJniObject::getStaticObjectField()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Boolean");
- QVERIFY(cls != 0);
-
- {
- QAndroidJniObject boolObject = QAndroidJniObject::getStaticObjectField<jobject>(cls,
- "FALSE",
- "Ljava/lang/Boolean;");
- QVERIFY(boolObject.isValid());
-
- jboolean booleanValue = boolObject.callMethod<jboolean>("booleanValue");
- QVERIFY(!booleanValue);
- }
-
- {
- QAndroidJniObject boolObject = QAndroidJniObject::getStaticObjectField<jobject>(cls,
- "TRUE",
- "Ljava/lang/Boolean;");
- QVERIFY(boolObject.isValid());
-
- jboolean booleanValue = boolObject.callMethod<jboolean>("booleanValue");
- QVERIFY(booleanValue);
- }
-
- {
- QAndroidJniObject boolObject = QAndroidJniObject::getStaticObjectField(cls,
- "FALSE",
- "Ljava/lang/Boolean;");
- QVERIFY(boolObject.isValid());
-
- jboolean booleanValue = boolObject.callMethod<jboolean>("booleanValue");
- QVERIFY(!booleanValue);
- }
-}
-
-void tst_QAndroidJniObject::getStaticIntFieldClassName()
-{
- jint i = QAndroidJniObject::getStaticField<jint>("java/lang/Double", "SIZE");
- QCOMPARE(i, 64);
-}
-
-void tst_QAndroidJniObject::getStaticIntField()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Double");
- QVERIFY(cls != 0);
-
- jint i = QAndroidJniObject::getStaticField<jint>(cls, "SIZE");
- QCOMPARE(i, 64);
-}
-
-void tst_QAndroidJniObject::getStaticByteFieldClassName()
-{
- jbyte i = QAndroidJniObject::getStaticField<jbyte>("java/lang/Byte", "MAX_VALUE");
- QCOMPARE(i, jbyte(127));
-}
-
-void tst_QAndroidJniObject::getStaticByteField()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Byte");
- QVERIFY(cls != 0);
-
- jbyte i = QAndroidJniObject::getStaticField<jbyte>(cls, "MAX_VALUE");
- QCOMPARE(i, jbyte(127));
-}
-
-void tst_QAndroidJniObject::getStaticLongFieldClassName()
-{
- jlong i = QAndroidJniObject::getStaticField<jlong>("java/lang/Long", "MAX_VALUE");
- QCOMPARE(i, jlong(9223372036854775807L));
-}
-
-void tst_QAndroidJniObject::getStaticLongField()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Long");
- QVERIFY(cls != 0);
-
- jlong i = QAndroidJniObject::getStaticField<jlong>(cls, "MAX_VALUE");
- QCOMPARE(i, jlong(9223372036854775807L));
-}
-
-void tst_QAndroidJniObject::getStaticDoubleFieldClassName()
-{
- jdouble i = QAndroidJniObject::getStaticField<jdouble>("java/lang/Double", "NaN");
- jlong *k = reinterpret_cast<jlong*>(&i);
- QCOMPARE(*k, jlong(0x7ff8000000000000L));
-}
-
-void tst_QAndroidJniObject::getStaticDoubleField()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Double");
- QVERIFY(cls != 0);
-
- jdouble i = QAndroidJniObject::getStaticField<jdouble>(cls, "NaN");
- jlong *k = reinterpret_cast<jlong*>(&i);
- QCOMPARE(*k, jlong(0x7ff8000000000000L));
-}
-
-void tst_QAndroidJniObject::getStaticFloatFieldClassName()
-{
- jfloat i = QAndroidJniObject::getStaticField<jfloat>("java/lang/Float", "NaN");
- unsigned *k = reinterpret_cast<unsigned*>(&i);
- QCOMPARE(*k, unsigned(0x7fc00000));
-}
-
-void tst_QAndroidJniObject::getStaticFloatField()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Float");
- QVERIFY(cls != 0);
-
- jfloat i = QAndroidJniObject::getStaticField<jfloat>(cls, "NaN");
- unsigned *k = reinterpret_cast<unsigned*>(&i);
- QCOMPARE(*k, unsigned(0x7fc00000));
-}
-
-void tst_QAndroidJniObject::getStaticShortFieldClassName()
-{
- jshort i = QAndroidJniObject::getStaticField<jshort>("java/lang/Short", "MAX_VALUE");
- QCOMPARE(i, jshort(32767));
-}
-
-void tst_QAndroidJniObject::getStaticShortField()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Short");
- QVERIFY(cls != 0);
-
- jshort i = QAndroidJniObject::getStaticField<jshort>(cls, "MAX_VALUE");
- QCOMPARE(i, jshort(32767));
-}
-
-void tst_QAndroidJniObject::getStaticCharFieldClassName()
-{
- jchar i = QAndroidJniObject::getStaticField<jchar>("java/lang/Character", "MAX_VALUE");
- QCOMPARE(i, jchar(0xffff));
-}
-
-void tst_QAndroidJniObject::getStaticCharField()
-{
- QAndroidJniEnvironment env;
- jclass cls = env->FindClass("java/lang/Character");
- QVERIFY(cls != 0);
-
- jchar i = QAndroidJniObject::getStaticField<jchar>(cls, "MAX_VALUE");
- QCOMPARE(i, jchar(0xffff));
-}
-
-
-void tst_QAndroidJniObject::getBooleanField()
-{
- QAndroidJniObject obj("org/qtproject/qt/android/QtActivityDelegate");
-
- QVERIFY(obj.isValid());
- QVERIFY(!obj.getField<jboolean>("m_fullScreen"));
-}
-
-void tst_QAndroidJniObject::getIntField()
-{
- QAndroidJniObject obj("org/qtproject/qt/android/QtActivityDelegate");
-
- QVERIFY(obj.isValid());
- jint res = obj.getField<jint>("m_currentRotation");
- QCOMPARE(res, -1);
-}
-
-void tst_QAndroidJniObject::templateApiCheck()
-{
- QAndroidJniObject testClass(testClassName);
- QVERIFY(testClass.isValid());
-
- // void ---------------------------------------------------------------------------------------
- QAndroidJniObject::callStaticMethod<void>(testClassName, "staticVoidMethod");
- QAndroidJniObject::callStaticMethod<void>(testClassName,
- "staticVoidMethodWithArgs",
- "(IZC)V",
- 1,
- true,
- 'c');
-
- testClass.callMethod<void>("voidMethod");
- testClass.callMethod<void>("voidMethodWithArgs", "(IZC)V", 1, true, 'c');
-
- // jboolean -----------------------------------------------------------------------------------
- QVERIFY(QAndroidJniObject::callStaticMethod<jboolean>(testClassName, "staticBooleanMethod"));
- QVERIFY(QAndroidJniObject::callStaticMethod<jboolean>(testClassName,
- "staticBooleanMethodWithArgs",
- "(ZZZ)Z",
- true,
- true,
- true));
-
- QVERIFY(testClass.callMethod<jboolean>("booleanMethod"));
- QVERIFY(testClass.callMethod<jboolean>("booleanMethodWithArgs",
- "(ZZZ)Z",
- true,
- true,
- true));
-
- // jbyte --------------------------------------------------------------------------------------
- QVERIFY(QAndroidJniObject::callStaticMethod<jbyte>(testClassName,
- "staticByteMethod") == A_BYTE_VALUE);
- QVERIFY(QAndroidJniObject::callStaticMethod<jbyte>(testClassName,
- "staticByteMethodWithArgs",
- "(BBB)B",
- 1,
- 1,
- 1) == A_BYTE_VALUE);
-
- QVERIFY(testClass.callMethod<jbyte>("byteMethod") == A_BYTE_VALUE);
- QVERIFY(testClass.callMethod<jbyte>("byteMethodWithArgs", "(BBB)B", 1, 1, 1) == A_BYTE_VALUE);
-
- // jchar --------------------------------------------------------------------------------------
- QVERIFY(QAndroidJniObject::callStaticMethod<jchar>(testClassName,
- "staticCharMethod") == A_CHAR_VALUE);
- QVERIFY(QAndroidJniObject::callStaticMethod<jchar>(testClassName,
- "staticCharMethodWithArgs",
- "(CCC)C",
- jchar(1),
- jchar(1),
- jchar(1)) == A_CHAR_VALUE);
-
- QVERIFY(testClass.callMethod<jchar>("charMethod") == A_CHAR_VALUE);
- QVERIFY(testClass.callMethod<jchar>("charMethodWithArgs",
- "(CCC)C",
- jchar(1),
- jchar(1),
- jchar(1)) == A_CHAR_VALUE);
-
- // jshort -------------------------------------------------------------------------------------
- QVERIFY(QAndroidJniObject::callStaticMethod<jshort>(testClassName,
- "staticShortMethod") == A_SHORT_VALUE);
- QVERIFY(QAndroidJniObject::callStaticMethod<jshort>(testClassName,
- "staticShortMethodWithArgs",
- "(SSS)S",
- jshort(1),
- jshort(1),
- jshort(1)) == A_SHORT_VALUE);
-
- QVERIFY(testClass.callMethod<jshort>("shortMethod") == A_SHORT_VALUE);
- QVERIFY(testClass.callMethod<jshort>("shortMethodWithArgs",
- "(SSS)S",
- jshort(1),
- jshort(1),
- jshort(1)) == A_SHORT_VALUE);
-
- // jint ---------------------------------------------------------------------------------------
- QVERIFY(QAndroidJniObject::callStaticMethod<jint>(testClassName,
- "staticIntMethod") == A_INT_VALUE);
- QVERIFY(QAndroidJniObject::callStaticMethod<jint>(testClassName,
- "staticIntMethodWithArgs",
- "(III)I",
- jint(1),
- jint(1),
- jint(1)) == A_INT_VALUE);
-
- QVERIFY(testClass.callMethod<jint>("intMethod") == A_INT_VALUE);
- QVERIFY(testClass.callMethod<jint>("intMethodWithArgs",
- "(III)I",
- jint(1),
- jint(1),
- jint(1)) == A_INT_VALUE);
-
- // jlong --------------------------------------------------------------------------------------
- QVERIFY(QAndroidJniObject::callStaticMethod<jlong>(testClassName,
- "staticLongMethod") == A_LONG_VALUE);
- QVERIFY(QAndroidJniObject::callStaticMethod<jlong>(testClassName,
- "staticLongMethodWithArgs",
- "(JJJ)J",
- jlong(1),
- jlong(1),
- jlong(1)) == A_LONG_VALUE);
-
- QVERIFY(testClass.callMethod<jlong>("longMethod") == A_LONG_VALUE);
- QVERIFY(testClass.callMethod<jlong>("longMethodWithArgs",
- "(JJJ)J",
- jlong(1),
- jlong(1),
- jlong(1)) == A_LONG_VALUE);
-
- // jfloat -------------------------------------------------------------------------------------
- QVERIFY(QAndroidJniObject::callStaticMethod<jfloat>(testClassName,
- "staticFloatMethod") == A_FLOAT_VALUE);
- QVERIFY(QAndroidJniObject::callStaticMethod<jfloat>(testClassName,
- "staticFloatMethodWithArgs",
- "(FFF)F",
- jfloat(1.1),
- jfloat(1.1),
- jfloat(1.1)) == A_FLOAT_VALUE);
-
- QVERIFY(testClass.callMethod<jfloat>("floatMethod") == A_FLOAT_VALUE);
- QVERIFY(testClass.callMethod<jfloat>("floatMethodWithArgs",
- "(FFF)F",
- jfloat(1.1),
- jfloat(1.1),
- jfloat(1.1)) == A_FLOAT_VALUE);
-
- // jdouble ------------------------------------------------------------------------------------
- QVERIFY(QAndroidJniObject::callStaticMethod<jdouble>(testClassName,
- "staticDoubleMethod") == A_DOUBLE_VALUE);
- QVERIFY(QAndroidJniObject::callStaticMethod<jdouble>(testClassName,
- "staticDoubleMethodWithArgs",
- "(DDD)D",
- jdouble(1.1),
- jdouble(1.1),
- jdouble(1.1)) == A_DOUBLE_VALUE);
-
- QVERIFY(testClass.callMethod<jdouble>("doubleMethod") == A_DOUBLE_VALUE);
- QVERIFY(testClass.callMethod<jdouble>("doubleMethodWithArgs",
- "(DDD)D",
- jdouble(1.1),
- jdouble(1.1),
- jdouble(1.1)) == A_DOUBLE_VALUE);
-
- // jobject ------------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jobject>(testClassName,
- "staticObjectMethod");
- QVERIFY(res.isValid());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jobject>("objectMethod");
- QVERIFY(res.isValid());
- }
-
- // jclass -------------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jclass>(testClassName,
- "staticClassMethod");
- QVERIFY(res.isValid());
- QAndroidJniEnvironment env;
- QVERIFY(env->IsInstanceOf(testClass.object(), res.object<jclass>()));
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jclass>("classMethod");
- QVERIFY(res.isValid());
- QAndroidJniEnvironment env;
- QVERIFY(env->IsInstanceOf(testClass.object(), res.object<jclass>()));
- }
- // jstring ------------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jstring>(testClassName,
- "staticStringMethod");
- QVERIFY(res.isValid());
- QVERIFY(res.toString() == A_STRING_OBJECT());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jstring>("stringMethod");
- QVERIFY(res.isValid());
- QVERIFY(res.toString() == A_STRING_OBJECT());
-
- }
- // jthrowable ---------------------------------------------------------------------------------
- {
- // The Throwable object the same message (see: "getMessage()") as A_STRING_OBJECT
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jthrowable>(testClassName,
- "staticThrowableMethod");
- QVERIFY(res.isValid());
- QVERIFY(res.callObjectMethod<jstring>("getMessage").toString() == A_STRING_OBJECT());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jthrowable>("throwableMethod");
- QVERIFY(res.isValid());
- QVERIFY(res.callObjectMethod<jstring>("getMessage").toString() == A_STRING_OBJECT());
- }
-
- // jobjectArray -------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jobjectArray>(testClassName,
- "staticObjectArrayMethod");
- QVERIFY(res.isValid());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jobjectArray>("objectArrayMethod");
- QVERIFY(res.isValid());
- }
-
- // jbooleanArray ------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jbooleanArray>(testClassName,
- "staticBooleanArrayMethod");
- QVERIFY(res.isValid());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jbooleanArray>("booleanArrayMethod");
- QVERIFY(res.isValid());
- }
-
- // jbyteArray ---------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jbyteArray>(testClassName,
- "staticByteArrayMethod");
- QVERIFY(res.isValid());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jbyteArray>("byteArrayMethod");
- QVERIFY(res.isValid());
- }
-
- // jcharArray ---------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jcharArray>(testClassName,
- "staticCharArrayMethod");
- QVERIFY(res.isValid());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jcharArray>("charArrayMethod");
- QVERIFY(res.isValid());
- }
-
- // jshortArray --------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jshortArray>(testClassName,
- "staticShortArrayMethod");
- QVERIFY(res.isValid());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jshortArray>("shortArrayMethod");
- QVERIFY(res.isValid());
- }
-
- // jintArray ----------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jintArray>(testClassName,
- "staticIntArrayMethod");
- QVERIFY(res.isValid());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jintArray>("intArrayMethod");
- QVERIFY(res.isValid());
- }
-
- // jlongArray ---------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jlongArray>(testClassName,
- "staticLongArrayMethod");
- QVERIFY(res.isValid());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jlongArray>("longArrayMethod");
- QVERIFY(res.isValid());
- }
-
- // jfloatArray --------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jfloatArray>(testClassName,
- "staticFloatArrayMethod");
- QVERIFY(res.isValid());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jfloatArray>("floatArrayMethod");
- QVERIFY(res.isValid());
- }
-
- // jdoubleArray -------------------------------------------------------------------------------
- {
- QAndroidJniObject res = QAndroidJniObject::callStaticObjectMethod<jdoubleArray>(testClassName,
- "staticDoubleArrayMethod");
- QVERIFY(res.isValid());
- }
-
- {
- QAndroidJniObject res = testClass.callObjectMethod<jdoubleArray>("doubleArrayMethod");
- QVERIFY(res.isValid());
- }
-
-}
-
-void tst_QAndroidJniObject::isClassAvailable()
-{
- QVERIFY(QAndroidJniObject::isClassAvailable("java/lang/String"));
- QVERIFY(!QAndroidJniObject::isClassAvailable("class/not/Available"));
- QVERIFY(QAndroidJniObject::isClassAvailable("org/qtproject/qt/android/QtActivityDelegate"));
-}
-
-void tst_QAndroidJniObject::fromLocalRef()
-{
- const int limit = 512 + 1;
- QAndroidJniEnvironment env;
- for (int i = 0; i != limit; ++i)
- QAndroidJniObject o = QAndroidJniObject::fromLocalRef(env->FindClass("java/lang/String"));
-}
-
-QTEST_APPLESS_MAIN(tst_QAndroidJniObject)
-
-#include "tst_qandroidjniobject.moc"