File indexing completed on 2024-05-12 05:13:45
0001 /* 0002 SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "kandroidextras/androidtypes.h" 0008 #include "kandroidextras/jnisignature.h" 0009 #include "kandroidextras/javatypes.h" 0010 0011 #include <QtTest/qtest.h> 0012 0013 using namespace KAndroidExtras; 0014 0015 class JniSignatureTest : public QObject 0016 { 0017 Q_OBJECT 0018 private Q_SLOTS: 0019 void testSignature() 0020 { 0021 QCOMPARE((const char*)Jni::signature<bool>(), "Z"); 0022 QCOMPARE((const char*)Jni::signature<bool()>(), "()Z"); 0023 QCOMPARE((const char*)Jni::signature<void(float[])>(), "([F)V"); 0024 QCOMPARE((const char*)Jni::signature<void(java::lang::String)>(), "(Ljava/lang/String;)V"); 0025 QCOMPARE((const char*)Jni::signature<java::lang::String()>(), "()Ljava/lang/String;"); 0026 QCOMPARE((const char*)Jni::signature<android::content::Intent(java::lang::String, bool[])>(), "(Ljava/lang/String;[Z)Landroid/content/Intent;"); 0027 QCOMPARE((const char*)Jni::signature<android::database::Cursor(android::net::Uri, java::lang::String[], java::lang::String, java::lang::String[], java::lang::String)>(), "(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"); 0028 0029 // Jni::signature<java::lang::String[]()>() would be invalid C++, so we need alternatives for array returns 0030 QCOMPARE((const char*)Jni::signature<java::lang::String*()>(), "()[Ljava/lang/String;"); 0031 QCOMPARE((const char*)Jni::signature<Jni::Array<java::lang::String>()>(), "()[Ljava/lang/String;"); 0032 0033 QCOMPARE((const char*)Jni::signature<jlong()>(), "()J"); 0034 } 0035 0036 void testTypeName() 0037 { 0038 QCOMPARE((const char*)Jni::typeName<android::provider::OpenableColumns>(), "android/provider/OpenableColumns"); 0039 QCOMPARE((const char*)Jni::typeName<android::Manifest_permission>(), "android/Manifest$permission"); 0040 } 0041 0042 void testImplementationDetails() 0043 { 0044 static_assert(Internal::static_strlen("Hello!") == 6, ""); 0045 QCOMPARE(java::lang::String::jniName(), "java/lang/String"); 0046 QCOMPARE(((const char*)Internal::staticStringFromJniType<java::lang::String, std::make_index_sequence<16>>::value()), "java/lang/String"); 0047 } 0048 }; 0049 0050 QTEST_GUILESS_MAIN(JniSignatureTest) 0051 0052 #include "jnisignaturetest.moc"