File indexing completed on 2024-05-12 04:44:25
0001 // SPDX-FileCopyrightText: Lukas Sommer <sommerluk@gmail.com> 0002 // SPDX-License-Identifier: BSD-2-Clause OR MIT 0003 0004 // First included header is the public header of the class we are testing; 0005 // this forces the header to be self-contained. 0006 #include "initializetranslation.h" 0007 0008 #include "colordialog.h" 0009 #include "rgbcolorspacefactory.h" 0010 #include <qcoreapplication.h> 0011 #include <qglobal.h> 0012 #include <qlocale.h> 0013 #include <qobject.h> 0014 #include <qstringliteral.h> 0015 #include <qtest.h> 0016 #include <qtestcase.h> 0017 0018 #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) 0019 #include <qcontainerfwd.h> 0020 #include <qlist.h> 0021 #include <qstring.h> 0022 #include <qtmetamacros.h> 0023 #else 0024 #include <qobjectdefs.h> 0025 #include <qstring.h> 0026 #include <qstringlist.h> 0027 #endif 0028 0029 namespace PerceptualColor 0030 { 0031 0032 class TestInitializeTranslation : public QObject 0033 { 0034 Q_OBJECT 0035 0036 public: 0037 explicit TestInitializeTranslation(QObject *parent = nullptr) 0038 : QObject(parent) 0039 { 0040 } 0041 0042 private Q_SLOTS: 0043 void initTestCase() 0044 { 0045 // Called before the first test function is executed 0046 } 0047 0048 void cleanupTestCase() 0049 { 0050 // Called after the last test function was executed 0051 } 0052 0053 void init() 0054 { 0055 // Called before each test function is executed 0056 } 0057 0058 void cleanup() 0059 { 0060 // Called after every test function 0061 } 0062 0063 // NOTE This MUST be the very first test, so that still 0064 // PerceptualColor::initializeTranslation() has never been called before. 0065 void testIfTranslationIsActuallyLoaded() 0066 { 0067 auto m_srgbBuildinColorSpace = RgbColorSpaceFactory::createSrgb(); 0068 0069 QLocale::setDefault(QLocale(QStringLiteral("nl"))); 0070 PerceptualColor::initializeTranslation(QCoreApplication::instance(), // 0071 QLocale().uiLanguages()); 0072 PerceptualColor::ColorDialog test1(m_srgbBuildinColorSpace); 0073 // Test if the window title is translated. 0074 QCOMPARE(test1.windowTitle(), QStringLiteral("Kleur selecteren")); 0075 0076 // Try another language 0077 QLocale::setDefault(QLocale(QStringLiteral("es"))); 0078 PerceptualColor::initializeTranslation(QCoreApplication::instance(), // 0079 QLocale().uiLanguages()); 0080 PerceptualColor::ColorDialog test2(m_srgbBuildinColorSpace); 0081 // Test if the window title is translated. 0082 QCOMPARE(test2.windowTitle(), QStringLiteral("Seleccionar color")); 0083 0084 // try if capital language codes work 0085 QLocale::setDefault(QLocale(QStringLiteral("CA"))); 0086 PerceptualColor::initializeTranslation( // 0087 QCoreApplication::instance(), // 0088 QStringList(QStringLiteral("CA"))); 0089 PerceptualColor::ColorDialog test3(m_srgbBuildinColorSpace); 0090 // Test if the window title is translated. 0091 QCOMPARE(test3.windowTitle(), // 0092 QStringLiteral("Selecció de color")); 0093 0094 // Test if removing all translations works 0095 QLocale::setDefault(QLocale(QString())); 0096 PerceptualColor::initializeTranslation(QCoreApplication::instance(), // 0097 QStringList(QString())); 0098 PerceptualColor::ColorDialog test4(m_srgbBuildinColorSpace); 0099 // Test if the window title is actually not translated. 0100 QCOMPARE(test4.windowTitle(), QStringLiteral("Select color")); 0101 } 0102 0103 void testInitializeDoesNotCrash() 0104 { 0105 PerceptualColor::initializeTranslation(QCoreApplication::instance(), // 0106 QLocale().uiLanguages()); 0107 } 0108 0109 void testInitializeDoesNotCrashOnSuccessiveCalls() 0110 { 0111 PerceptualColor::initializeTranslation(QCoreApplication::instance(), // 0112 QLocale().uiLanguages()); 0113 PerceptualColor::initializeTranslation(QCoreApplication::instance(), // 0114 QLocale().uiLanguages()); 0115 PerceptualColor::initializeTranslation(QCoreApplication::instance(), // 0116 QLocale().uiLanguages()); 0117 PerceptualColor::initializeTranslation(QCoreApplication::instance(), // 0118 QLocale().uiLanguages()); 0119 PerceptualColor::initializeTranslation(QCoreApplication::instance(), // 0120 QLocale().uiLanguages()); 0121 } 0122 }; 0123 0124 } // namespace PerceptualColor 0125 0126 QTEST_MAIN(PerceptualColor::TestInitializeTranslation) 0127 0128 // The following “include” is necessary because we do not use a header file: 0129 #include "testinitializetranslation.moc"