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

0001 /*
0002     This file is part of the KContacts framework.
0003     SPDX-FileCopyrightText: 2007 Tobias Koenig <tokoe@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "soundtest.h"
0009 #include "addressee.h"
0010 #include "kcontacts/sound.h"
0011 #include "vcardtool_p.h"
0012 #include <QTest>
0013 
0014 QTEST_MAIN(SoundTest)
0015 
0016 static QByteArray testData()
0017 {
0018     static QByteArray data;
0019 
0020     if (data.isNull()) {
0021         for (int i = 0; i < 20; ++i) {
0022             data.append(char(i));
0023         }
0024     }
0025 
0026     return data;
0027 }
0028 
0029 void SoundTest::emptyTest()
0030 {
0031     KContacts::Sound sound;
0032 
0033     QVERIFY(sound.isEmpty());
0034 }
0035 
0036 void SoundTest::storeTestIntern()
0037 {
0038     KContacts::Sound sound;
0039 
0040     sound.setData(testData());
0041 
0042     QVERIFY(sound.isIntern() == true);
0043     QVERIFY(sound.data() == testData());
0044 }
0045 
0046 void SoundTest::storeTestExtern()
0047 {
0048     KContacts::Sound sound;
0049 
0050     sound.setUrl(QLatin1String("http://myhomepage.com/sound.wav"));
0051 
0052     QVERIFY(sound.isIntern() == false);
0053     QVERIFY(sound.url() == QLatin1String("http://myhomepage.com/sound.wav"));
0054 }
0055 
0056 void SoundTest::equalsTestIntern()
0057 {
0058     KContacts::Sound sound1;
0059     KContacts::Sound sound2;
0060 
0061     sound1.setData(testData());
0062     sound2.setData(testData());
0063 
0064     QVERIFY(sound1 == sound2);
0065 }
0066 
0067 void SoundTest::equalsTestExtern()
0068 {
0069     KContacts::Sound sound1;
0070     KContacts::Sound sound2;
0071 
0072     sound1.setUrl(QStringLiteral("http://myhomepage.com/sound.wav"));
0073     sound2.setUrl(QStringLiteral("http://myhomepage.com/sound.wav"));
0074 
0075     QVERIFY(sound1 == sound2);
0076 }
0077 
0078 void SoundTest::differsTest()
0079 {
0080     KContacts::Sound sound1;
0081     KContacts::Sound sound2;
0082 
0083     sound1.setUrl(QStringLiteral("http://myhomepage.com/sound.wav"));
0084     sound2.setData(testData());
0085 
0086     QVERIFY(sound1 != sound2);
0087 }
0088 
0089 void SoundTest::assignmentTestIntern()
0090 {
0091     KContacts::Sound sound1;
0092     KContacts::Sound sound2;
0093 
0094     sound1.setData(testData());
0095 
0096     sound2 = sound1;
0097 
0098     QVERIFY(sound1 == sound2);
0099 }
0100 
0101 void SoundTest::assignmentTestExtern()
0102 {
0103     KContacts::Sound sound1;
0104     KContacts::Sound sound2;
0105 
0106     sound1.setUrl(QStringLiteral("http://myhomepage.com/sound.wav"));
0107 
0108     sound2 = sound1;
0109 
0110     QVERIFY(sound1 == sound2);
0111 }
0112 
0113 void SoundTest::serializeTest()
0114 {
0115     KContacts::Sound sound1;
0116     KContacts::Sound sound2;
0117 
0118     sound1.setUrl(QStringLiteral("http://myhomepage.com/sound.wav"));
0119     sound1.setData(testData());
0120 
0121     QByteArray data;
0122     QDataStream s(&data, QIODevice::WriteOnly);
0123     s << sound1;
0124 
0125     QDataStream t(&data, QIODevice::ReadOnly);
0126     t >> sound2;
0127 
0128     QVERIFY(sound1 == sound2);
0129 }
0130 
0131 void SoundTest::shouldParseSource()
0132 {
0133     QByteArray vcarddata(
0134         "BEGIN:VCARD\n"
0135         "VERSION:3.0\n"
0136         "N:LastName;FirstName;;;\n"
0137         "UID:c80cf296-0825-4eb0-ab16-1fac1d522a33@xxxxxx.xx\n"
0138         "REV:2015-03-14T09:24:45+00:00\n"
0139         "SOUND;VALUE=URI:http://myhomepage.com/sound.wav\n"
0140         "FN:FirstName LastName\n"
0141         "END:VCARD\n");
0142 
0143     KContacts::VCardTool vcard;
0144     const KContacts::AddresseeList lst = vcard.parseVCards(vcarddata);
0145     QCOMPARE(lst.count(), 1);
0146     QVERIFY(!lst.at(0).sound().isEmpty());
0147     KContacts::Sound sound = lst.at(0).sound();
0148     QVERIFY(!sound.isIntern());
0149     QCOMPARE(sound.url(), QStringLiteral("http://myhomepage.com/sound.wav"));
0150 }
0151 
0152 void SoundTest::shouldGenerateVCard4WithData()
0153 {
0154     KContacts::Addressee::List lst;
0155     KContacts::Addressee addr;
0156     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0157     addr.setUid(QStringLiteral("testuid"));
0158     KContacts::Sound sound1;
0159 
0160     sound1.setUrl(QStringLiteral("http://myhomepage.com/sound.wav"));
0161     sound1.setData(testData());
0162     addr.setSound(sound1);
0163 
0164     lst << addr;
0165     KContacts::VCardTool vcard;
0166     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v4_0);
0167     QByteArray expected;
0168     expected = QByteArray(
0169         "BEGIN:VCARD\r\n"
0170         "VERSION:4.0\r\n"
0171         "EMAIL:foo@kde.org\r\n"
0172         "N:;;;;\r\n"
0173         "SOUND;ENCODING=b:AAECAwQFBgcICQoLDA0ODxAREhM=\r\n"
0174         "UID:testuid\r\n"
0175         "END:VCARD\r\n\r\n");
0176 
0177     QCOMPARE(ba, expected);
0178 }
0179 
0180 void SoundTest::shouldGenerateVCard4WithUrl()
0181 {
0182     KContacts::Addressee::List lst;
0183     KContacts::Addressee addr;
0184     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0185     addr.setUid(QStringLiteral("testuid"));
0186     KContacts::Sound sound1;
0187 
0188     sound1.setUrl(QStringLiteral("http://myhomepage.com/sound.wav"));
0189     addr.setSound(sound1);
0190 
0191     lst << addr;
0192     KContacts::VCardTool vcard;
0193     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v4_0);
0194     QByteArray expected;
0195     expected = QByteArray(
0196         "BEGIN:VCARD\r\n"
0197         "VERSION:4.0\r\n"
0198         "EMAIL:foo@kde.org\r\n"
0199         "N:;;;;\r\n"
0200         "SOUND;VALUE=URI:http://myhomepage.com/sound.wav\r\n"
0201         "UID:testuid\r\n"
0202         "END:VCARD\r\n\r\n");
0203 
0204     QCOMPARE(ba, expected);
0205 }
0206 
0207 void SoundTest::shouldGenerateVCard3WithData()
0208 {
0209     KContacts::Addressee::List lst;
0210     KContacts::Addressee addr;
0211     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0212     addr.setUid(QStringLiteral("testuid"));
0213     KContacts::Sound sound1;
0214 
0215     sound1.setUrl(QStringLiteral("http://myhomepage.com/sound.wav"));
0216     sound1.setData(testData());
0217     addr.setSound(sound1);
0218 
0219     lst << addr;
0220     KContacts::VCardTool vcard;
0221     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v3_0);
0222     QByteArray expected;
0223     expected = QByteArray(
0224         "BEGIN:VCARD\r\n"
0225         "VERSION:3.0\r\n"
0226         "EMAIL:foo@kde.org\r\n"
0227         "N:;;;;\r\n"
0228         "SOUND;ENCODING=b:AAECAwQFBgcICQoLDA0ODxAREhM=\r\n"
0229         "UID:testuid\r\n"
0230         "END:VCARD\r\n\r\n");
0231 
0232     QCOMPARE(ba, expected);
0233 }
0234 
0235 void SoundTest::shouldGenerateVCard3WithUrl()
0236 {
0237     KContacts::Addressee::List lst;
0238     KContacts::Addressee addr;
0239     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0240     addr.setUid(QStringLiteral("testuid"));
0241     KContacts::Sound sound1;
0242 
0243     sound1.setUrl(QStringLiteral("http://myhomepage.com/sound.wav"));
0244     addr.setSound(sound1);
0245 
0246     lst << addr;
0247     KContacts::VCardTool vcard;
0248     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v3_0);
0249     QByteArray expected;
0250     expected = QByteArray(
0251         "BEGIN:VCARD\r\n"
0252         "VERSION:3.0\r\n"
0253         "EMAIL:foo@kde.org\r\n"
0254         "N:;;;;\r\n"
0255         "SOUND;VALUE=URI:http://myhomepage.com/sound.wav\r\n"
0256         "UID:testuid\r\n"
0257         "END:VCARD\r\n\r\n");
0258 
0259     QCOMPARE(ba, expected);
0260 }
0261 
0262 #include "moc_soundtest.cpp"