Warning, file /frameworks/kcoreaddons/autotests/kaboutdataapplicationdatatest.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2016 Friedrich W. H. Kossebau <kossebau@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 // test object 0008 #include <kaboutdata.h> 0009 // Qt 0010 #include <QObject> 0011 #include <QTest> 0012 0013 // Separate test for reading & setting applicationData 0014 // to ensure a separate process where no other test case has 0015 // directly or indirectly called KAboutData::setApplicationData before 0016 // and thus created the global KAboutData object 0017 class KAboutDataApplicationDataTest : public QObject 0018 { 0019 Q_OBJECT 0020 0021 private Q_SLOTS: 0022 void testInteractionWithQApplicationData(); 0023 #if KCOREADDONS_BUILD_DEPRECATED_SINCE(5, 76) 0024 void testRegisterPluginData(); 0025 #endif 0026 }; 0027 0028 static const char AppName[] = "app"; 0029 static const char ProgramName[] = "ProgramName"; 0030 static const char Version[] = "Version"; 0031 static const char OrganizationDomain[] = "no.where"; 0032 static const char DesktopFileName[] = "org.kde.someapp"; 0033 0034 static const char AppName2[] = "otherapp"; 0035 static const char ProgramName2[] = "OtherProgramName"; 0036 static const char Version2[] = "OtherVersion"; 0037 static const char OrganizationDomain2[] = "other.no.where"; 0038 static const char DesktopFileName2[] = "org.kde.otherapp"; 0039 0040 void KAboutDataApplicationDataTest::testInteractionWithQApplicationData() 0041 { 0042 // init the app metadata the Qt way 0043 QCoreApplication *app = QCoreApplication::instance(); 0044 app->setApplicationName(QLatin1String(AppName)); 0045 app->setProperty("applicationDisplayName", QLatin1String(ProgramName)); 0046 app->setApplicationVersion(QLatin1String(Version)); 0047 app->setOrganizationDomain(QLatin1String(OrganizationDomain)); 0048 app->setProperty("desktopFileName", QLatin1String(DesktopFileName)); 0049 0050 // without setting before, get KAboutData::applicationData 0051 const KAboutData applicationAboutData = KAboutData::applicationData(); 0052 0053 // should be initialized with Q*Application metadata 0054 QCOMPARE(applicationAboutData.componentName(), QLatin1String(AppName)); 0055 QCOMPARE(applicationAboutData.displayName(), QLatin1String(ProgramName)); 0056 QCOMPARE(applicationAboutData.organizationDomain(), QLatin1String(OrganizationDomain)); 0057 QCOMPARE(applicationAboutData.version(), QLatin1String(Version)); 0058 QCOMPARE(applicationAboutData.desktopFileName(), QLatin1String(DesktopFileName)); 0059 0060 // now set some new KAboutData, with different values 0061 KAboutData aboutData2(QString::fromLatin1(AppName2), QString::fromLatin1(ProgramName2), QString::fromLatin1(Version2)); 0062 aboutData2.setOrganizationDomain(OrganizationDomain2); 0063 aboutData2.setDesktopFileName(QLatin1String(DesktopFileName2)); 0064 0065 KAboutData::setApplicationData(aboutData2); 0066 0067 // check that Q*Application metadata has been updated, as expected per API definition 0068 QCOMPARE(app->applicationName(), QLatin1String(AppName2)); 0069 QCOMPARE(app->property("applicationDisplayName").toString(), QLatin1String(ProgramName2)); 0070 QCOMPARE(app->organizationDomain(), QLatin1String(OrganizationDomain2)); 0071 QCOMPARE(app->applicationVersion(), QLatin1String(Version2)); 0072 QCOMPARE(app->property("desktopFileName").toString(), QLatin1String(DesktopFileName2)); 0073 0074 // and check as well KAboutData::applicationData itself 0075 const KAboutData applicationAboutData2 = KAboutData::applicationData(); 0076 0077 QCOMPARE(applicationAboutData2.componentName(), QLatin1String(AppName2)); 0078 QCOMPARE(applicationAboutData2.displayName(), QLatin1String(ProgramName2)); 0079 QCOMPARE(applicationAboutData2.organizationDomain(), QLatin1String(OrganizationDomain2)); 0080 QCOMPARE(applicationAboutData2.version(), QLatin1String(Version2)); 0081 QCOMPARE(applicationAboutData2.desktopFileName(), QLatin1String(DesktopFileName2)); 0082 } 0083 0084 #if KCOREADDONS_BUILD_DEPRECATED_SINCE(5, 76) 0085 void KAboutDataApplicationDataTest::testRegisterPluginData() 0086 { 0087 for (const auto &name : {QStringLiteral("foo"), QStringLiteral("bar")}) { 0088 QVERIFY(!KAboutData::pluginData(name)); 0089 KAboutData::registerPluginData(KAboutData(name)); 0090 0091 auto v1 = KAboutData::pluginData(name); 0092 QVERIFY(v1); 0093 QCOMPARE(v1->componentName(), name); 0094 0095 // re-registering will overwrite and not trigger memory leaks (check LSAN) 0096 KAboutData::registerPluginData(KAboutData(name)); 0097 0098 // the pointer staid the same, as QHash is node based 0099 QCOMPARE(KAboutData::pluginData(name), v1); 0100 } 0101 } 0102 #endif 0103 0104 QTEST_MAIN(KAboutDataApplicationDataTest) 0105 0106 #include "kaboutdataapplicationdatatest.moc"