File indexing completed on 2024-04-21 03:53:37

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"