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

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 "picturetest.h"
0009 #include "kcontacts/picture.h"
0010 #include <QBuffer>
0011 #include <QPainter>
0012 #include <QTest>
0013 
0014 QTEST_MAIN(PictureTest)
0015 
0016 static QImage testImage()
0017 {
0018     static QImage image;
0019 
0020     if (image.isNull()) {
0021         image = QImage(200, 200, QImage::Format_RGB32);
0022         QPainter p(&image);
0023         p.drawRect(10, 10, 50, 50);
0024     }
0025 
0026     return image;
0027 }
0028 
0029 static QByteArray testImageRawPNG()
0030 {
0031     static QByteArray raw;
0032 
0033     if (raw.isNull()) {
0034         QBuffer buffer(&raw);
0035         buffer.open(QIODevice::WriteOnly);
0036         testImage().save(&buffer, "PNG");
0037     }
0038 
0039     return raw;
0040 }
0041 
0042 static QByteArray testImageRawJPEG()
0043 {
0044     static QByteArray raw;
0045 
0046     if (raw.isNull()) {
0047         QBuffer buffer(&raw);
0048         buffer.open(QIODevice::WriteOnly);
0049         testImage().save(&buffer, "JPEG");
0050     }
0051 
0052     return raw;
0053 }
0054 
0055 void PictureTest::emptyTest()
0056 {
0057     KContacts::Picture picture;
0058 
0059     QVERIFY(picture.isEmpty());
0060 }
0061 
0062 void PictureTest::storeTestInternImage()
0063 {
0064     KContacts::Picture picture;
0065 
0066     picture.setData(testImage());
0067 
0068     QVERIFY(picture.isEmpty() == false);
0069     QVERIFY(picture.isIntern() == true);
0070     QVERIFY(picture.type() == QLatin1String("jpeg"));
0071     QVERIFY(picture.data() == testImage());
0072     QVERIFY(picture.rawData() == testImageRawJPEG());
0073 }
0074 
0075 void PictureTest::storeTestInternRawData()
0076 {
0077     KContacts::Picture picture;
0078 
0079     picture.setRawData(testImageRawPNG(), QStringLiteral("png"));
0080 
0081     QVERIFY(picture.isEmpty() == false);
0082     QVERIFY(picture.isIntern() == true);
0083     QVERIFY(picture.type() == QLatin1String("png"));
0084     QVERIFY(picture.rawData() == testImageRawPNG());
0085     QVERIFY(picture.data() == testImage());
0086 }
0087 
0088 void PictureTest::storeTestExtern()
0089 {
0090     KContacts::Picture picture;
0091 
0092     picture.setUrl(QStringLiteral("http://myhomepage.com/foto.png"), QStringLiteral("png"));
0093 
0094     QVERIFY(picture.isEmpty() == false);
0095     QVERIFY(picture.isIntern() == false);
0096     QVERIFY(picture.type() == QLatin1String("png"));
0097     QVERIFY(picture.url() == QLatin1String("http://myhomepage.com/foto.png"));
0098 }
0099 
0100 void PictureTest::equalsTestInternImage()
0101 {
0102     KContacts::Picture picture1;
0103     KContacts::Picture picture2;
0104 
0105     picture1.setData(testImage());
0106 
0107     picture2.setData(testImage());
0108 
0109     QVERIFY(picture1 == picture2);
0110 
0111     // access rawData() so a QByteArray is created
0112     QVERIFY(!picture1.rawData().isNull());
0113     QVERIFY(picture1 == picture2);
0114 }
0115 
0116 void PictureTest::equalsTestInternRawData()
0117 {
0118     KContacts::Picture picture1;
0119     KContacts::Picture picture2;
0120 
0121     picture1.setRawData(testImageRawPNG(), QStringLiteral("png"));
0122 
0123     picture2.setRawData(testImageRawPNG(), QStringLiteral("png"));
0124 
0125     QVERIFY(picture1 == picture2);
0126 
0127     // access data() so a QImage is created
0128     QVERIFY(!picture1.data().isNull());
0129     QVERIFY(picture1 == picture2);
0130 }
0131 
0132 void PictureTest::equalsTestInternImageAndRawData()
0133 {
0134     KContacts::Picture picture1;
0135     KContacts::Picture picture2;
0136 
0137     picture1.setData(testImage());
0138 
0139     picture2.setRawData(testImageRawJPEG(), QStringLiteral("jpeg"));
0140 
0141     QVERIFY(picture1.rawData() == picture2.rawData());
0142 }
0143 
0144 void PictureTest::equalsTestExtern()
0145 {
0146     KContacts::Picture picture1;
0147     KContacts::Picture picture2;
0148 
0149     picture1.setUrl(QStringLiteral("http://myhomepage.com/foto.png"), QStringLiteral("png"));
0150 
0151     picture2.setUrl(QStringLiteral("http://myhomepage.com/foto.png"), QStringLiteral("png"));
0152 
0153     QVERIFY(picture1 == picture2);
0154 }
0155 
0156 void PictureTest::differsTest()
0157 {
0158     KContacts::Picture picture1;
0159     KContacts::Picture picture2;
0160 
0161     picture1.setUrl(QStringLiteral("http://myhomepage.com/foto.png"), QStringLiteral("png"));
0162 
0163     picture2.setData(testImage());
0164 
0165     QVERIFY(picture1 != picture2);
0166 }
0167 
0168 void PictureTest::differsTestInternRawData()
0169 {
0170     KContacts::Picture picture1;
0171     KContacts::Picture picture2;
0172 
0173     picture1.setRawData(testImageRawJPEG(), QStringLiteral("jpeg"));
0174 
0175     picture2.setRawData(testImageRawPNG(), QStringLiteral("png"));
0176 
0177     QVERIFY(picture1 != picture2);
0178     QVERIFY(picture1.rawData() != picture2.rawData());
0179 }
0180 
0181 void PictureTest::differsTestExtern()
0182 {
0183     KContacts::Picture picture1;
0184     KContacts::Picture picture2;
0185 
0186     picture1.setUrl(QStringLiteral("http://myhomepage.com/foto.png"), QStringLiteral("png"));
0187 
0188     picture1.setUrl(QStringLiteral("http://myhomepage.com/foto2.png"), QStringLiteral("png"));
0189 
0190     QVERIFY(picture1 != picture2);
0191 }
0192 
0193 void PictureTest::assignmentTestIntern()
0194 {
0195     KContacts::Picture picture1;
0196     KContacts::Picture picture2;
0197 
0198     picture1.setData(testImage());
0199 
0200     picture2 = picture1;
0201 
0202     QVERIFY(picture1 == picture2);
0203 }
0204 
0205 void PictureTest::assignmentTestExtern()
0206 {
0207     KContacts::Picture picture1;
0208     KContacts::Picture picture2;
0209 
0210     picture1.setUrl(QStringLiteral("http://myhomepage.com/foto.png"), QStringLiteral("png"));
0211 
0212     picture2 = picture1;
0213 
0214     QVERIFY(picture1 == picture2);
0215 }
0216 
0217 void PictureTest::serializeTestInternImage()
0218 {
0219     KContacts::Picture picture1;
0220     KContacts::Picture picture2;
0221 
0222     picture1.setData(testImage());
0223 
0224     QByteArray data;
0225     QDataStream s(&data, QIODevice::WriteOnly);
0226     s << picture1;
0227 
0228     QDataStream t(&data, QIODevice::ReadOnly);
0229     t >> picture2;
0230 
0231     QVERIFY(picture1 == picture2);
0232 }
0233 
0234 void PictureTest::serializeTestInternRawData()
0235 {
0236     KContacts::Picture picture1;
0237     KContacts::Picture picture2;
0238 
0239     picture1.setRawData(testImageRawPNG(), QStringLiteral("png"));
0240 
0241     QByteArray data;
0242     QDataStream s(&data, QIODevice::WriteOnly);
0243     s << picture1;
0244 
0245     QDataStream t(&data, QIODevice::ReadOnly);
0246     t >> picture2;
0247 
0248     QVERIFY(picture1 == picture2);
0249 }
0250 
0251 void PictureTest::serializeTestExtern()
0252 {
0253     KContacts::Picture picture1;
0254     KContacts::Picture picture2;
0255 
0256     picture1.setUrl(QStringLiteral("http://myhomepage.com/foto.png"), QStringLiteral("png"));
0257 
0258     QByteArray data;
0259     QDataStream s(&data, QIODevice::WriteOnly);
0260     s << picture1;
0261 
0262     QDataStream t(&data, QIODevice::ReadOnly);
0263     t >> picture2;
0264 
0265     QVERIFY(picture1 == picture2);
0266 }
0267 
0268 #include "moc_picturetest.cpp"