File indexing completed on 2023-09-24 07:59:43
0001 /* 0002 This file is part of the KContacts framework. 0003 SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB a KDAB Group company <info@kdab.net> 0004 SPDX-FileContributor: Kevin Krammer <krake@kdab.com> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include <QTest> 0010 0011 #include "converter/kcontacts/vcardconverter.h" 0012 #include "kcontacts/vcarddrag.h" 0013 0014 #include <QMimeData> 0015 using namespace KContacts; 0016 0017 class VCardDragTest : public QObject 0018 { 0019 Q_OBJECT 0020 0021 public: 0022 VCardDragTest(); 0023 0024 private: 0025 Addressee mAddressee1; 0026 Addressee mAddressee2; 0027 0028 private Q_SLOTS: 0029 void testPopulate(); 0030 void testCanDecode(); 0031 void testFromMimeData(); 0032 }; 0033 0034 QTEST_MAIN(VCardDragTest) 0035 0036 VCardDragTest::VCardDragTest() 0037 : QObject() 0038 { 0039 mAddressee1.setGivenName(QStringLiteral("Kevin")); 0040 mAddressee1.setFamilyName(QStringLiteral("Krammer")); 0041 mAddressee1.addEmail(QStringLiteral("kevin.krammer@gmx.at")); 0042 0043 mAddressee2.setGivenName(QStringLiteral("Tobias")); 0044 mAddressee2.setFamilyName(QStringLiteral("König")); 0045 mAddressee2.addEmail(QStringLiteral("tokoe@kde.org")); 0046 } 0047 0048 void VCardDragTest::testPopulate() 0049 { 0050 VCardConverter converter; 0051 const QByteArray vcard = converter.createVCard(mAddressee1); 0052 QVERIFY(!vcard.isEmpty()); 0053 0054 QMimeData *data = new QMimeData(); 0055 bool result = VCardDrag::populateMimeData(data, vcard); 0056 QVERIFY(result); 0057 QVERIFY(data->hasFormat(KContacts::Addressee::mimeType())); 0058 QCOMPARE(data->data(KContacts::Addressee::mimeType()), vcard); 0059 delete data; 0060 0061 data = new QMimeData(); 0062 result = VCardDrag::populateMimeData(data, Addressee::List() << mAddressee1); 0063 QVERIFY(result); 0064 QVERIFY(data->hasFormat(KContacts::Addressee::mimeType())); 0065 QCOMPARE(data->data(KContacts::Addressee::mimeType()), vcard); 0066 delete data; 0067 0068 const QByteArray vcards = converter.createVCards(Addressee::List() << mAddressee1 << mAddressee2); 0069 data = new QMimeData(); 0070 result = VCardDrag::populateMimeData(data, Addressee::List() << mAddressee1 << mAddressee2); 0071 QVERIFY(result); 0072 QVERIFY(data->hasFormat(KContacts::Addressee::mimeType())); 0073 QCOMPARE(data->data(KContacts::Addressee::mimeType()), vcards); 0074 delete data; 0075 0076 data = new QMimeData(); 0077 result = VCardDrag::populateMimeData(data, Addressee::List()); 0078 QVERIFY(!result); 0079 QVERIFY(!data->hasFormat(KContacts::Addressee::mimeType())); 0080 delete data; 0081 } 0082 0083 void VCardDragTest::testCanDecode() 0084 { 0085 VCardConverter converter; 0086 const QByteArray vcard = converter.createVCard(mAddressee1); 0087 QVERIFY(!vcard.isEmpty()); 0088 0089 QMimeData *data = new QMimeData(); 0090 data->setData(Addressee::mimeType(), vcard); 0091 QVERIFY(VCardDrag::canDecode(data)); 0092 delete data; 0093 0094 data = new QMimeData(); 0095 data->setData(QStringLiteral("text/x-vcard"), vcard); 0096 QVERIFY(VCardDrag::canDecode(data)); 0097 delete data; 0098 0099 data = new QMimeData(); 0100 data->setData(QStringLiteral("application/octetstream"), vcard); 0101 QVERIFY(!VCardDrag::canDecode(data)); 0102 delete data; 0103 } 0104 0105 void VCardDragTest::testFromMimeData() 0106 { 0107 VCardConverter converter; 0108 const QByteArray vcard = converter.createVCard(mAddressee1); 0109 QVERIFY(!vcard.isEmpty()); 0110 0111 QByteArray content; 0112 0113 QMimeData *data = new QMimeData(); 0114 data->setData(Addressee::mimeType(), vcard); 0115 bool result = VCardDrag::fromMimeData(data, content); 0116 QVERIFY(result); 0117 QCOMPARE(content, vcard); 0118 delete data; 0119 0120 data = new QMimeData(); 0121 data->setData(QStringLiteral("text/x-vcard"), vcard); 0122 result = VCardDrag::fromMimeData(data, content); 0123 QVERIFY(result); 0124 QCOMPARE(content, vcard); 0125 delete data; 0126 0127 data = new QMimeData(); 0128 data->setData(QStringLiteral("application/octetstream"), vcard); 0129 result = VCardDrag::fromMimeData(data, content); 0130 QVERIFY(!result); 0131 delete data; 0132 0133 const QByteArray vcards = converter.createVCards(Addressee::List() << mAddressee1 << mAddressee2); 0134 QVERIFY(!vcards.isEmpty()); 0135 0136 Addressee::List addresseeList; 0137 0138 data = new QMimeData(); 0139 data->setData(Addressee::mimeType(), vcards); 0140 result = VCardDrag::fromMimeData(data, addresseeList); 0141 QVERIFY(result); 0142 QCOMPARE(addresseeList.count(), 2); 0143 QCOMPARE(addresseeList[0], mAddressee1); 0144 QCOMPARE(addresseeList[1], mAddressee2); 0145 delete data; 0146 0147 data = new QMimeData(); 0148 data->setData(QStringLiteral("text/x-vcard"), vcards); 0149 result = VCardDrag::fromMimeData(data, addresseeList); 0150 QVERIFY(result); 0151 QCOMPARE(addresseeList.count(), 2); 0152 QCOMPARE(addresseeList[0], mAddressee1); 0153 QCOMPARE(addresseeList[1], mAddressee2); 0154 delete data; 0155 0156 data = new QMimeData(); 0157 data->setData(QStringLiteral("application/octetstream"), vcards); 0158 result = VCardDrag::fromMimeData(data, addresseeList); 0159 QVERIFY(!result); 0160 delete data; 0161 0162 data = new QMimeData(); 0163 data->setData(Addressee::mimeType(), QByteArray()); 0164 result = VCardDrag::fromMimeData(data, addresseeList); 0165 QVERIFY(!result); 0166 delete data; 0167 } 0168 0169 #include "vcarddragtest.moc"