File indexing completed on 2024-04-21 07:39:41

0001 /*
0002     SPDX-FileCopyrightText: 2011 Romain Perier <bambi@kubuntu.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "kcharsetstest.h"
0008 
0009 #include "kcharsets_p.h"
0010 #include <QDebug>
0011 #include <QString>
0012 #include <QTest>
0013 #include <kcharsets.h>
0014 
0015 static bool encodingNameHasADescription(const QString &encodingName, const QStringList &descriptions)
0016 {
0017     return std::any_of(descriptions.cbegin(), descriptions.cend(), [&encodingName](const QString &description) {
0018         return description.contains(encodingName);
0019     });
0020 }
0021 
0022 void KCharsetsTest::testSingleton()
0023 {
0024     QVERIFY(KCharsets::charsets() != nullptr);
0025     QCOMPARE(KCharsets::charsets(), KCharsets::charsets());
0026 }
0027 
0028 void KCharsetsTest::testFromEntity()
0029 {
0030     KCharsets *singleton = KCharsets::charsets();
0031 
0032     QCOMPARE(singleton->fromEntity(QString::fromLatin1("&#1234")), QChar(1234));
0033     QCOMPARE(singleton->fromEntity(QString::fromLatin1("&#x1234")), QChar(0x1234));
0034     QCOMPARE(singleton->fromEntity(QString::fromLatin1("lt")), QChar::fromLatin1('<'));
0035     QCOMPARE(singleton->fromEntity(QString::fromLatin1("gt")), QChar::fromLatin1('>'));
0036     QCOMPARE(singleton->fromEntity(QString::fromLatin1("quot")), QChar::fromLatin1('"'));
0037     QCOMPARE(singleton->fromEntity(QString::fromLatin1("amp")), QChar::fromLatin1('&'));
0038     QCOMPARE(singleton->fromEntity(QString::fromLatin1("apos")), QChar::fromLatin1('\''));
0039 }
0040 
0041 void KCharsetsTest::testToEntity()
0042 {
0043     QSKIP("KCharsets::toEntity test not implemented.");
0044 }
0045 
0046 void KCharsetsTest::testResolveEntities()
0047 {
0048     KCharsets *singleton = KCharsets::charsets();
0049 
0050     QCOMPARE(singleton->resolveEntities(QString::fromLatin1("&quot;&apos;&lt;Hello &amp;World&gt;&apos;&quot;")),
0051              QString::fromLatin1("\"\'<Hello &World>\'\""));
0052 }
0053 
0054 void KCharsetsTest::testEncodingNames()
0055 {
0056     KCharsets *singleton = KCharsets::charsets();
0057 
0058     QCOMPARE(singleton->availableEncodingNames().count(), singleton->descriptiveEncodingNames().count());
0059 
0060     for (const QString &encodingName : singleton->availableEncodingNames()) {
0061         QVERIFY(encodingNameHasADescription(encodingName, singleton->descriptiveEncodingNames()));
0062         QVERIFY(!singleton->descriptionForEncoding(encodingName).isEmpty());
0063         QCOMPARE(singleton->encodingForName(singleton->descriptionForEncoding(encodingName)), encodingName);
0064     }
0065 }
0066 
0067 QTEST_MAIN(KCharsetsTest)
0068 
0069 #include "moc_kcharsetstest.cpp"