summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2021-05-04 20:02:22 +0300
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2021-05-05 16:28:27 +0300
commit45daea19c393259297973ce99ce8717965e62224 (patch)
tree2a87a6f218c11d461e2f643bb76f08bc5d1b4445 /tests
parentafd7460affa17b5f8aac9034b1b9c3b13dd115f7 (diff)
Fix set*Field JNI template calls
The calls were trying to pass a JNIEnv* from a QJniEnvironment using conversion operator which was removed, and weren't detected since they are templates and were missing tests. This fix that and add test cases for setField() and setStaticField() calls. Pick-to: 6.1 Change-Id: I6e1e6b7f557bbc664248ad364c48d63f58b70756 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/kernel/qjniobject/testdata/src/org/qtproject/qt/android/testdata/QtJniObjectTestClass.java22
-rw-r--r--tests/auto/corelib/kernel/qjniobject/tst_qjniobject.cpp142
2 files changed, 164 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qjniobject/testdata/src/org/qtproject/qt/android/testdata/QtJniObjectTestClass.java b/tests/auto/corelib/kernel/qjniobject/testdata/src/org/qtproject/qt/android/testdata/QtJniObjectTestClass.java
index 4d6db749a5..5865391ac9 100644
--- a/tests/auto/corelib/kernel/qjniobject/testdata/src/org/qtproject/qt/android/testdata/QtJniObjectTestClass.java
+++ b/tests/auto/corelib/kernel/qjniobject/testdata/src/org/qtproject/qt/android/testdata/QtJniObjectTestClass.java
@@ -44,6 +44,28 @@ public class QtJniObjectTestClass
static final Throwable A_THROWABLE_OBJECT = new Throwable(A_STRING_OBJECT);
// --------------------------------------------------------------------------------------------
+
+ byte BYTE_VAR;
+ short SHORT_VAR;
+ int INT_VAR;
+ long LONG_VAR;
+ float FLOAT_VAR;
+ double DOUBLE_VAR;
+ boolean BOOLEAN_VAR;
+ char CHAR_VAR;
+ String STRING_OBJECT_VAR;
+
+ static byte S_BYTE_VAR;
+ static short S_SHORT_VAR;
+ static int S_INT_VAR;
+ static long S_LONG_VAR;
+ static float S_FLOAT_VAR;
+ static double S_DOUBLE_VAR;
+ static boolean S_BOOLEAN_VAR;
+ static char S_CHAR_VAR;
+ static String S_STRING_OBJECT_VAR;
+
+ // --------------------------------------------------------------------------------------------
public static void staticVoidMethod() { return; }
public static void staticVoidMethodWithArgs(int a, boolean b, char c) { return; }
diff --git a/tests/auto/corelib/kernel/qjniobject/tst_qjniobject.cpp b/tests/auto/corelib/kernel/qjniobject/tst_qjniobject.cpp
index 173f955ce7..4c0d9e1e6e 100644
--- a/tests/auto/corelib/kernel/qjniobject/tst_qjniobject.cpp
+++ b/tests/auto/corelib/kernel/qjniobject/tst_qjniobject.cpp
@@ -108,6 +108,26 @@ private slots:
void getStaticCharField();
void getBooleanField();
void getIntField();
+
+ void setIntField();
+ void setByteField();
+ void setLongField();
+ void setDoubleField();
+ void setFloatField();
+ void setShortField();
+ void setCharField();
+ void setBooleanField();
+ void setObjectField();
+ void setStaticIntField();
+ void setStaticByteField();
+ void setStaticLongField();
+ void setStaticDoubleField();
+ void setStaticFloatField();
+ void setStaticShortField();
+ void setStaticCharField();
+ void setStaticBooleanField();
+ void setStaticObjectField();
+
void templateApiCheck();
void isClassAvailable();
void fromLocalRef();
@@ -889,6 +909,128 @@ void tst_QJniObject::getIntField()
QCOMPARE(res, -1);
}
+template <typename T>
+void setField(const char *fieldName, T testValue)
+{
+ QJniObject obj(testClassName);
+ QVERIFY(obj.isValid());
+
+ obj.setField(fieldName, testValue);
+
+ T res = obj.getField<T>(fieldName);
+ QCOMPARE(res, testValue);
+}
+
+void tst_QJniObject::setIntField()
+{
+ setField("INT_VAR", 555);
+}
+
+void tst_QJniObject::setByteField()
+{
+ setField("BYTE_VAR", jbyte(555));
+}
+
+void tst_QJniObject::setLongField()
+{
+ setField("LONG_VAR", jlong(9223372036847758232L));
+}
+
+void tst_QJniObject::setDoubleField()
+{
+ setField("DOUBLE_VAR", jdouble(1.2));
+}
+
+void tst_QJniObject::setFloatField()
+{
+ setField("FLOAT_VAR", jfloat(1.2));
+}
+
+void tst_QJniObject::setShortField()
+{
+ setField("SHORT_VAR", jshort(123));
+}
+
+void tst_QJniObject::setCharField()
+{
+ setField("CHAR_VAR", jchar('A'));
+}
+
+void tst_QJniObject::setBooleanField()
+{
+ setField("BOOLEAN_VAR", jboolean(true));
+}
+
+void tst_QJniObject::setObjectField()
+{
+ QJniObject obj(testClassName);
+ QVERIFY(obj.isValid());
+
+ QJniObject testValue = QJniObject::fromString(QStringLiteral("Hello"));
+ obj.setField("STRING_OBJECT_VAR", testValue.object<jstring>());
+
+ QJniObject res = obj.getObjectField<jstring>("STRING_OBJECT_VAR");
+ QCOMPARE(res.toString(), testValue.toString());
+}
+
+template <typename T>
+void setStaticField(const char *fieldName, T testValue)
+{
+ QJniObject::setStaticField(testClassName, fieldName, testValue);
+
+ T res = QJniObject::getStaticField<T>(testClassName, fieldName);
+ QCOMPARE(res, testValue);
+}
+
+void tst_QJniObject::setStaticIntField()
+{
+ setStaticField("S_INT_VAR", 555);
+}
+
+void tst_QJniObject::setStaticByteField()
+{
+ setStaticField("S_BYTE_VAR", jbyte(555));
+}
+
+void tst_QJniObject::setStaticLongField()
+{
+ setStaticField("S_LONG_VAR", jlong(9223372036847758232L));
+}
+
+void tst_QJniObject::setStaticDoubleField()
+{
+ setStaticField("S_DOUBLE_VAR", jdouble(1.2));
+}
+
+void tst_QJniObject::setStaticFloatField()
+{
+ setStaticField("S_FLOAT_VAR", jfloat(1.2));
+}
+
+void tst_QJniObject::setStaticShortField()
+{
+ setStaticField("S_SHORT_VAR", jshort(123));
+}
+
+void tst_QJniObject::setStaticCharField()
+{
+ setStaticField("S_CHAR_VAR", jchar('A'));
+}
+
+void tst_QJniObject::setStaticBooleanField()
+{
+ setStaticField("S_BOOLEAN_VAR", jboolean(true));
+}
+
+void tst_QJniObject::setStaticObjectField()
+{
+ QJniObject testValue = QJniObject::fromString(QStringLiteral("Hello"));
+ QJniObject::setStaticField(testClassName, "S_STRING_OBJECT_VAR", testValue.object<jstring>());
+
+ QJniObject res = QJniObject::getStaticObjectField<jstring>(testClassName, "S_STRING_OBJECT_VAR");
+ QCOMPARE(res.toString(), testValue.toString());
+}
+
void tst_QJniObject::templateApiCheck()
{
QJniObject testClass(testClassName);