File indexing completed on 2024-03-24 15:32:40

0001 /*
0002     SPDX-FileCopyrightText: 2022 Ahmad Samir <a.samirh78@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include <KCountry>
0008 #include <KCountrySubdivision>
0009 
0010 #include <QObject>
0011 #include <QStandardPaths>
0012 #include <QTest>
0013 
0014 class KCatalogTest : public QObject
0015 {
0016     Q_OBJECT
0017 private Q_SLOTS:
0018     void initTestCase()
0019     {
0020         QStandardPaths::setTestModeEnabled(true);
0021     }
0022     void testLookup()
0023     {
0024         QByteArray language = "fr_CH";
0025         for (int i = 0; i < 15; ++i) {
0026             language += ":fr_CH";
0027         }
0028         const int len = language.size();
0029         QVERIFY(len > 64);
0030 
0031         // Set LANGUAGE env var to a very long string
0032         qputenv("LANGUAGE", language);
0033         const QByteArray before = qgetenv("LANGUAGE");
0034         QCOMPARE(before.size(), len);
0035 
0036         // This goes through KCatalog::translate(), which will get the value of the
0037         // LANGUAGE env var and copy it to to a char[64] array
0038         auto c = KCountry::fromAlpha2(u"NZ");
0039         QVERIFY(c.isValid());
0040         QCOMPARE(c.name(), QStringLiteral("Nouvelle-ZĂ©lande"));
0041 
0042         QByteArray after = qgetenv("LANGUAGE");
0043         // LANGUAGE env var value was truncated
0044         QCOMPARE(after.size(), 64 - strlen("LANGUAGE=") - 1);
0045     }
0046 };
0047 
0048 QTEST_GUILESS_MAIN(KCatalogTest)
0049 
0050 #include "kcatalogtest.moc"