File indexing completed on 2023-09-24 11:39:26
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 }; 0024 0025 static const char AppName[] = "app"; 0026 static const char ProgramName[] = "ProgramName"; 0027 static const char Version[] = "Version"; 0028 static const char OrganizationDomain[] = "no.where"; 0029 static const char DesktopFileName[] = "org.kde.someapp"; 0030 0031 static const char AppName2[] = "otherapp"; 0032 static const char ProgramName2[] = "OtherProgramName"; 0033 static const char Version2[] = "OtherVersion"; 0034 static const char OrganizationDomain2[] = "other.no.where"; 0035 static const char DesktopFileName2[] = "org.kde.otherapp"; 0036 0037 void KAboutDataApplicationDataTest::testInteractionWithQApplicationData() 0038 { 0039 // init the app metadata the Qt way 0040 QCoreApplication *app = QCoreApplication::instance(); 0041 app->setApplicationName(QLatin1String(AppName)); 0042 app->setProperty("applicationDisplayName", QLatin1String(ProgramName)); 0043 app->setApplicationVersion(QLatin1String(Version)); 0044 app->setOrganizationDomain(QLatin1String(OrganizationDomain)); 0045 app->setProperty("desktopFileName", QLatin1String(DesktopFileName)); 0046 0047 // without setting before, get KAboutData::applicationData 0048 const KAboutData applicationAboutData = KAboutData::applicationData(); 0049 0050 // should be initialized with Q*Application metadata 0051 QCOMPARE(applicationAboutData.componentName(), QLatin1String(AppName)); 0052 QCOMPARE(applicationAboutData.displayName(), QLatin1String(ProgramName)); 0053 QCOMPARE(applicationAboutData.organizationDomain(), QLatin1String(OrganizationDomain)); 0054 QCOMPARE(applicationAboutData.version(), QLatin1String(Version)); 0055 QCOMPARE(applicationAboutData.desktopFileName(), QLatin1String(DesktopFileName)); 0056 0057 // now set some new KAboutData, with different values 0058 KAboutData aboutData2(QString::fromLatin1(AppName2), QString::fromLatin1(ProgramName2), QString::fromLatin1(Version2)); 0059 aboutData2.setOrganizationDomain(OrganizationDomain2); 0060 aboutData2.setDesktopFileName(QLatin1String(DesktopFileName2)); 0061 0062 KAboutData::setApplicationData(aboutData2); 0063 0064 // check that Q*Application metadata has been updated, as expected per API definition 0065 QCOMPARE(app->applicationName(), QLatin1String(AppName2)); 0066 QCOMPARE(app->property("applicationDisplayName").toString(), QLatin1String(ProgramName2)); 0067 QCOMPARE(app->organizationDomain(), QLatin1String(OrganizationDomain2)); 0068 QCOMPARE(app->applicationVersion(), QLatin1String(Version2)); 0069 QCOMPARE(app->property("desktopFileName").toString(), QLatin1String(DesktopFileName2)); 0070 0071 // and check as well KAboutData::applicationData itself 0072 const KAboutData applicationAboutData2 = KAboutData::applicationData(); 0073 0074 QCOMPARE(applicationAboutData2.componentName(), QLatin1String(AppName2)); 0075 QCOMPARE(applicationAboutData2.displayName(), QLatin1String(ProgramName2)); 0076 QCOMPARE(applicationAboutData2.organizationDomain(), QLatin1String(OrganizationDomain2)); 0077 QCOMPARE(applicationAboutData2.version(), QLatin1String(Version2)); 0078 QCOMPARE(applicationAboutData2.desktopFileName(), QLatin1String(DesktopFileName2)); 0079 } 0080 0081 QTEST_MAIN(KAboutDataApplicationDataTest) 0082 0083 #include "kaboutdataapplicationdatatest.moc"