File indexing completed on 2024-04-14 03:51:19

0001 /*
0002     This file is part of the KContacts framework.
0003     SPDX-FileCopyrightText: 2015-2019 Laurent Montel <montel@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "langtest.h"
0009 #include "lang.h"
0010 #include "parametermap_p.h"
0011 #include "vcardtool_p.h"
0012 #include <QTest>
0013 
0014 LangTest::LangTest(QObject *parent)
0015     : QObject(parent)
0016 {
0017 }
0018 
0019 LangTest::~LangTest()
0020 {
0021 }
0022 
0023 void LangTest::shouldHaveDefaultValue()
0024 {
0025     KContacts::Lang language;
0026     QVERIFY(!language.isValid());
0027     QVERIFY(language.language().isEmpty());
0028     QVERIFY(language.params().empty());
0029 }
0030 
0031 void LangTest::shouldAssignValue()
0032 {
0033     const QString lang(QStringLiteral("fr"));
0034     KContacts::ParameterMap params;
0035     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0036     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0037     KContacts::Lang language(lang);
0038     language.setParams(params);
0039     QVERIFY(language.isValid());
0040     QVERIFY(!language.language().isEmpty());
0041     QCOMPARE(language.language(), lang);
0042     QVERIFY(!language.params().empty());
0043     QCOMPARE(language.params(), params);
0044 }
0045 
0046 void LangTest::shouldAssignExternal()
0047 {
0048     KContacts::Lang language;
0049     const QString lang(QStringLiteral("fr"));
0050     language.setLanguage(lang);
0051     QVERIFY(language.isValid());
0052     QCOMPARE(language.language(), lang);
0053 }
0054 
0055 void LangTest::shouldSerialized()
0056 {
0057     KContacts::Lang language;
0058     KContacts::Lang result;
0059     const QString lang(QStringLiteral("fr"));
0060     language.setLanguage(lang);
0061     KContacts::ParameterMap params;
0062     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0063     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0064     language.setParams(params);
0065 
0066     QByteArray data;
0067     QDataStream s(&data, QIODevice::WriteOnly);
0068     s << language;
0069 
0070     QDataStream t(&data, QIODevice::ReadOnly);
0071     t >> result;
0072 
0073     QVERIFY(language == result);
0074 }
0075 
0076 void LangTest::shouldEqualLanguage()
0077 {
0078     KContacts::Lang language;
0079     KContacts::Lang result;
0080     const QString lang(QStringLiteral("fr"));
0081     language.setLanguage(lang);
0082     KContacts::ParameterMap params;
0083     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0084     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0085     language.setParams(params);
0086 
0087     result = language;
0088     QVERIFY(language == result);
0089 }
0090 
0091 void LangTest::shouldParseLanguage()
0092 {
0093     QByteArray vcarddata(
0094         "BEGIN:VCARD\n"
0095         "VERSION:3.0\n"
0096         "N:LastName;FirstName;;;\n"
0097         "UID:c80cf296-0825-4eb0-ab16-1fac1d522a33@xxxxxx.xx\n"
0098         "LANG:fr\n"
0099         "REV:2015-03-14T09:24:45+00:00\n"
0100         "FN:FirstName LastName\n"
0101         "END:VCARD\n");
0102 
0103     KContacts::VCardTool vcard;
0104     const KContacts::AddresseeList lst = vcard.parseVCards(vcarddata);
0105     QCOMPARE(lst.count(), 1);
0106     QCOMPARE(lst.at(0).langs().count(), 1);
0107     QCOMPARE(lst.at(0).langs().at(0).language(), QStringLiteral("fr"));
0108 }
0109 
0110 void LangTest::shouldParseWithoutLanguage()
0111 {
0112     QByteArray vcarddata(
0113         "BEGIN:VCARD\n"
0114         "VERSION:3.0\n"
0115         "N:LastName;FirstName;;;\n"
0116         "UID:c80cf296-0825-4eb0-ab16-1fac1d522a33@xxxxxx.xx\n"
0117         "REV:2015-03-14T09:24:45+00:00\n"
0118         "FN:FirstName LastName\n"
0119         "END:VCARD\n");
0120 
0121     KContacts::VCardTool vcard;
0122     const KContacts::AddresseeList lst = vcard.parseVCards(vcarddata);
0123     QCOMPARE(lst.count(), 1);
0124     QCOMPARE(lst.at(0).langs().count(), 0);
0125 }
0126 
0127 void LangTest::shouldCreateVCard()
0128 {
0129     KContacts::AddresseeList lst;
0130     KContacts::Addressee addr;
0131     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0132     addr.setUid(QStringLiteral("testuid"));
0133     KContacts::Lang::List lstLang;
0134     KContacts::Lang lang(QStringLiteral("fr"));
0135     lstLang << lang;
0136     addr.setLangs(lstLang);
0137     lst << addr;
0138     KContacts::VCardTool vcard;
0139     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v4_0);
0140     QByteArray expected(
0141         "BEGIN:VCARD\r\n"
0142         "VERSION:4.0\r\n"
0143         "EMAIL:foo@kde.org\r\n"
0144         "LANG:fr\r\n"
0145         "N:;;;;\r\n"
0146         "UID:testuid\r\n"
0147         "END:VCARD\r\n\r\n");
0148 
0149     QCOMPARE(ba, expected);
0150 }
0151 
0152 void LangTest::shouldCreateVCardWithTwoLang()
0153 {
0154     KContacts::AddresseeList lst;
0155     KContacts::Addressee addr;
0156     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0157     addr.setUid(QStringLiteral("testuid"));
0158     KContacts::Lang::List lstLang;
0159     KContacts::Lang lang(QStringLiteral("fr"));
0160     KContacts::Lang lang2(QStringLiteral("fr2"));
0161     lstLang << lang << lang2;
0162     addr.setLangs(lstLang);
0163     lst << addr;
0164     KContacts::VCardTool vcard;
0165     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v4_0);
0166     QByteArray expected(
0167         "BEGIN:VCARD\r\n"
0168         "VERSION:4.0\r\n"
0169         "EMAIL:foo@kde.org\r\n"
0170         "LANG:fr\r\n"
0171         "LANG:fr2\r\n"
0172         "N:;;;;\r\n"
0173         "UID:testuid\r\n"
0174         "END:VCARD\r\n\r\n");
0175 
0176     QCOMPARE(ba, expected);
0177 }
0178 
0179 void LangTest::shouldCreateVCardWithParameters()
0180 {
0181     KContacts::AddresseeList lst;
0182     KContacts::Addressee addr;
0183     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0184     addr.setUid(QStringLiteral("testuid"));
0185     KContacts::Lang::List lstLang;
0186     KContacts::Lang lang(QStringLiteral("fr"));
0187     KContacts::ParameterMap params;
0188     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0189     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0190     lang.setParams(params);
0191     lstLang << lang;
0192     addr.setLangs(lstLang);
0193     lst << addr;
0194     KContacts::VCardTool vcard;
0195     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v4_0);
0196     QByteArray expected(
0197         "BEGIN:VCARD\r\n"
0198         "VERSION:4.0\r\n"
0199         "EMAIL:foo@kde.org\r\n"
0200         "LANG;FOO1=bla1,blo1;FOO2=bla2,blo2:fr\r\n"
0201         "N:;;;;\r\n"
0202         "UID:testuid\r\n"
0203         "END:VCARD\r\n\r\n");
0204     QCOMPARE(ba, expected);
0205 }
0206 
0207 void LangTest::shouldNotGenerateLangForVCard3()
0208 {
0209     KContacts::AddresseeList lst;
0210     KContacts::Addressee addr;
0211     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0212     addr.setUid(QStringLiteral("testuid"));
0213     KContacts::Lang::List lstLang;
0214     KContacts::Lang lang(QStringLiteral("fr"));
0215     KContacts::ParameterMap params;
0216     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0217     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0218     lang.setParams(params);
0219     lstLang << lang;
0220     addr.setLangs(lstLang);
0221     lst << addr;
0222     KContacts::VCardTool vcard;
0223     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v3_0);
0224     QByteArray expected(
0225         "BEGIN:VCARD\r\n"
0226         "VERSION:3.0\r\n"
0227         "EMAIL:foo@kde.org\r\n"
0228         "N:;;;;\r\n"
0229         "UID:testuid\r\n"
0230         "END:VCARD\r\n\r\n");
0231     QCOMPARE(ba, expected);
0232 }
0233 
0234 QTEST_MAIN(LangTest)
0235 
0236 #include "moc_langtest.cpp"