--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailmanagerqt/tsrc/test_qtnmwrapper.cpp Tue Aug 31 15:30:59 2010 +0300
@@ -0,0 +1,495 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QtGui>
+#include <QtTest/QtTest>
+#include <QEventLoop>
+#include <QDebug>
+#include <QImage>
+#include <fbs.h>
+
+#include <thumbnaildata.h>
+
+#include <thumbnailmanager_qt.h>
+#include "thumbnailmanager_p_qt.h"
+
+class TestThumbnailManager : public QObject
+{
+ Q_OBJECT
+
+public:
+ TestThumbnailManager(): QObject(), wrapper( NULL ), ipixmap( NULL ) {};
+
+public slots:
+ void thumbnailReady( QPixmap , void * , int , int );
+
+ void thumbnailReady_p( QPixmap , void * , int , int );
+
+ void thumbnailReadyPixmap( QPixmap , void * , int , int );
+
+ void thumbnailReadyImage( QImage , void * , int , int );
+
+private slots:
+ void init();
+ void cleanup();
+
+ void testThumbnailReadyError();
+ void testThumbnailReadyValid();
+
+ void testThumbnailReadyImage();
+ void testThumbnailReadyPixmap();
+ void testThumbnailReadyImageAndPixmap();
+
+ void createAndDestroy();
+ void qualityPreference();
+ void thumbnailSize();
+ void thumbnailMode();
+
+ void getThumbnailByName();
+ void getThumbnailById();
+ void setThumbnail();
+ void setThumbnailFromPath();
+ void cancelRequest();
+ void changePriority();
+ void deleteThumbnailsByName();
+ void deleteThumbnailsById();
+
+ void testPriorities_data();
+ void testPriorities();
+
+
+public:
+ ThumbnailManager *wrapper;
+ ThumbnailManagerPrivate *wrapper_p;
+
+ QPixmap* ipixmap;
+
+ int aid;
+ int aerrorCode;
+ bool pixmapNull;
+
+ //pixmap
+ int pixmapId;
+ int pixmapErr;
+ void *pixmapDataPtr;
+
+ //image
+ int imageId;
+ int imageErr;
+ void *imageDataPtr;
+
+};
+
+enum testDataType{
+ AllNull,
+ BitmapValid
+};
+
+class TestThumbnailData : public MThumbnailData
+{
+public:
+ static const int BITMAP_WIDTH = 26;
+ static const int BITMAP_HEIGHT = 15;
+
+public:
+ TestThumbnailData( testDataType type, void* clientData_ = 0) : bitmap(0), clientData(clientData_)
+ {
+ switch( type ){
+ case AllNull:
+ break;
+
+ case BitmapValid:
+ bitmap = new CFbsBitmap();
+ QVERIFY( !bitmap->Create(TSize(BITMAP_WIDTH, BITMAP_HEIGHT),EColor64K) );
+ QVERIFY( !bitmap->Load( _L("c:\\tnmwrapper_tsrc.mbm") ) );
+ break;
+ };
+
+ };
+
+ ~TestThumbnailData() {
+ if( bitmap ) {
+ delete bitmap;
+ }
+ };
+
+ CFbsBitmap* Bitmap() {return bitmap;};
+
+ CFbsBitmap* DetachBitmap() {return bitmap;};
+
+ TAny* ClientData(){ return clientData; };
+
+public:
+ CFbsBitmap* bitmap;
+ TAny* clientData;
+
+};
+
+// --- test initialization ---
+
+void TestThumbnailManager::init()
+{
+ wrapper = new ThumbnailManager();
+ connect( wrapper, SIGNAL(thumbnailReady( QPixmap , void* , int, int ) ),
+ this, SLOT( thumbnailReady( QPixmap , void* , int , int )));
+
+ wrapper_p = wrapper->d; //new ThumbnailManagerPrivate();
+}
+
+void TestThumbnailManager::cleanup()
+{
+ disconnect( wrapper, SIGNAL(thumbnailReady( QPixmap , void* , int, int ) ),
+ this, SLOT( thumbnailReady( QPixmap , void* , int , int )));
+ delete wrapper;
+ wrapper = NULL;
+
+ if( ipixmap ) {
+ delete ipixmap;
+ ipixmap = NULL;
+ }
+
+ // delete wrapper_p;
+}
+
+// --- test ---
+
+/**
+ * Simple create and destroy.
+ */
+void TestThumbnailManager::createAndDestroy()
+{
+ //empty
+}
+
+/**
+ * Checking quality preference flag.
+ */
+void TestThumbnailManager::qualityPreference()
+{
+ QVERIFY( wrapper->setQualityPreference( ThumbnailManager::OptimizeForQuality ) );
+ QVERIFY( wrapper->setQualityPreference( ThumbnailManager::OptimizeForPerformance ) );
+ QVERIFY( wrapper->qualityPreference() == ThumbnailManager::OptimizeForPerformance );
+}
+
+/**
+ * Checking thumbnail size flag.
+ */
+void TestThumbnailManager::thumbnailSize()
+{
+ QVERIFY( wrapper->setThumbnailSize( ThumbnailManager::ThumbnailSmall ) );
+ QVERIFY( wrapper->setThumbnailSize( ThumbnailManager::ThumbnailMedium ) );
+ QVERIFY( wrapper->setThumbnailSize( ThumbnailManager::ThumbnailLarge ) );
+ QVERIFY( wrapper->setThumbnailSize( QSize( 100, 100 ) ) );
+ QVERIFY( wrapper->thumbnailSize() == QSize( 100, 100 ) );
+}
+
+/**
+ * Checking thumbnail mode flag.
+ */
+void TestThumbnailManager::thumbnailMode()
+{
+ QVERIFY( wrapper->setMode( ThumbnailManager::Default ) );
+ QVERIFY( wrapper->setMode( ThumbnailManager::AllowAnySize ) );
+ QVERIFY( wrapper->setMode( ThumbnailManager::DoNotCreate ) );
+
+ QVERIFY( wrapper->setMode( ThumbnailManager::CropToAspectRatio ) );
+ QVERIFY( wrapper->mode() == ThumbnailManager::CropToAspectRatio );
+}
+
+/**
+ * Checking thumbnail mode flag.
+ */
+void TestThumbnailManager::getThumbnailByName()
+{
+ wrapper->setMode( ThumbnailManager::CropToAspectRatio );
+ wrapper->setThumbnailSize( QSize( 200, 50 ));
+ QVERIFY( wrapper->getThumbnail( "c:\\tnmwrapper_tsrc.png", NULL, -99 ) != -1 );
+ QVERIFY( wrapper->getThumbnail( "c:/tnmwrapper_tsrc.png", NULL, -99 ) != -1 );
+}
+
+void TestThumbnailManager::getThumbnailById()
+{
+ wrapper->setMode( ThumbnailManager::CropToAspectRatio );
+ wrapper->setThumbnailSize( QSize( 200, 50 ));
+ QVERIFY( wrapper->getThumbnail( 2, NULL, -99 ) != -1 );
+}
+
+void TestThumbnailManager::setThumbnail()
+{
+ ipixmap = new QPixmap();
+ ipixmap->load( "c:\\tnmwrapper.bmp" );
+ wrapper->setMode( ThumbnailManager::CropToAspectRatio );
+ wrapper->setThumbnailSize(ThumbnailManager::ThumbnailMedium);
+ QVERIFY( wrapper->setThumbnail( *ipixmap, "c:\\tnmwrapper_tsrc.png" ) != -1 );
+ ipixmap->fill();
+ QVERIFY( wrapper->setThumbnail( *ipixmap, "c:\\tnmwrapper_tsrc.png" ) != -1 );
+
+ //QI,mage
+ QImage *img = new QImage("c:\\tnmwrapper.bmp");
+ QVERIFY( wrapper->setThumbnail( *img, "c:\\tnmwrapper_tsrc.png" ) != -1 );
+ img->fill(0);
+ QVERIFY( wrapper->setThumbnail( *img, "c:\\tnmwrapper_tsrc.png" ) != -1 );
+ delete img;
+}
+
+void TestThumbnailManager::setThumbnailFromPath()
+{
+ // normal URI
+ QVERIFY( wrapper->setThumbnail( "c:\\tnmwrapper_tsrc.png", "c:\\tnmwrapper_tsrc.vcf", "contact/x-vcard" ) != -1 );
+
+ // virtual URI
+ QVERIFY( wrapper->setThumbnail( "c:\\tnmwrapper_tsrc.png", "c:tnmwrapper_tsrc.vcf", "contact/x-vcard" ) != -1 );
+
+ // no mime
+ QVERIFY( wrapper->setThumbnail( "c:\\tnmwrapper_tsrc.png", "c:tnmwrapper_tsrc.vcf" ) != -1 );
+}
+
+void TestThumbnailManager::cancelRequest()
+{
+ wrapper->setMode( ThumbnailManager::CropToAspectRatio );
+ wrapper->setThumbnailSize( QSize( 200, 50 ));
+ QVERIFY( wrapper->cancelRequest( wrapper->getThumbnail( "c:\\tnmwrapper_tsrc.png", NULL, -99 ) ) );
+ QVERIFY( !wrapper->cancelRequest( 123 ) ); //test request not found
+}
+
+void TestThumbnailManager::changePriority()
+{
+ wrapper->setMode( ThumbnailManager::CropToAspectRatio );
+ wrapper->setThumbnailSize( QSize( 200, 50 ));
+ QVERIFY( wrapper->changePriority( wrapper->getThumbnail( "c:\\tnmwrapper_tsrc.png", NULL, -99 ), -80 ) );
+}
+
+void TestThumbnailManager::deleteThumbnailsByName()
+{
+ wrapper->deleteThumbnails( "c:/tnmwrapper_tsrc.png" );
+ wrapper->deleteThumbnails( "c:\\tnmwrapper_tsrc.png" );
+}
+
+void TestThumbnailManager::deleteThumbnailsById()
+{
+ wrapper->deleteThumbnails( 2 );
+}
+
+void TestThumbnailManager::testThumbnailReadyError()
+{
+ int a=0;
+
+ QVERIFY( connect( wrapper_p, SIGNAL(thumbnailReady( QPixmap , void* , int, int ) ),
+ this, SLOT( thumbnailReady_p( QPixmap , void* , int , int )), Qt::DirectConnection ) );
+
+ //test bytearray not null and thumbnail error
+ TestThumbnailData tdata1(AllNull);
+ aid = 12;
+ aerrorCode = -1;
+ pixmapNull = true;
+ wrapper_p->ThumbnailReady( aerrorCode, tdata1, aid );
+
+ disconnect( wrapper_p, SIGNAL(thumbnailReady( QPixmap , void* , int, int ) ),
+ this, SLOT( thumbnailReady_p( QPixmap , void* , int , int )));
+}
+
+void TestThumbnailManager::testThumbnailReadyValid()
+{
+ QVERIFY( connect( wrapper_p, SIGNAL(thumbnailReady( QPixmap , void* , int, int ) ),
+ this, SLOT( thumbnailReady_p( QPixmap , void* , int , int )), Qt::DirectConnection ) );
+
+ TestThumbnailData tdata3( BitmapValid );
+ aid = 10;
+ aerrorCode = 0;
+ pixmapNull = false;
+ wrapper_p->ThumbnailReady( aerrorCode, tdata3, aid );
+
+ disconnect( wrapper_p, SIGNAL(thumbnailReady( QPixmap , void* , int, int ) ),
+ this, SLOT( thumbnailReady_p( QPixmap , void* , int , int )));
+}
+
+void TestThumbnailManager::testThumbnailReadyImage()
+{
+ QVERIFY( connect( wrapper_p, SIGNAL(thumbnailReady( QImage , void* , int, int ) ),
+ this, SLOT( thumbnailReadyImage( QImage , void* , int , int )), Qt::DirectConnection ) );
+
+ pixmapId = 0;
+ pixmapErr = 0;
+ pixmapDataPtr = 0;
+
+ imageId = 432;
+ imageErr = KErrNone;
+ imageDataPtr = reinterpret_cast<void*>(0x1234);
+
+ TestThumbnailData td = TestThumbnailData(BitmapValid);
+ td.clientData = imageDataPtr;
+
+ wrapper_p->ThumbnailReady(imageErr, td, imageId);
+
+ QVERIFY(td.bitmap!=0);
+ QVERIFY(td.bitmap->SizeInPixels().iWidth == TestThumbnailData::BITMAP_WIDTH);
+ QVERIFY(td.bitmap->SizeInPixels().iHeight == TestThumbnailData::BITMAP_HEIGHT);
+
+ disconnect( wrapper_p, SIGNAL(thumbnailReady( QImage , void* , int, int ) ),
+ this, SLOT( thumbnailReadyImage(QImage, void* , int , int )));
+}
+
+void TestThumbnailManager::testThumbnailReadyPixmap()
+{
+ QVERIFY( connect( wrapper_p, SIGNAL(thumbnailReady( QPixmap , void* , int, int ) ),
+ this, SLOT( thumbnailReadyPixmap( QPixmap , void* , int , int )), Qt::DirectConnection ) );
+
+ pixmapId = 432;
+ pixmapErr = -7;
+ pixmapDataPtr = reinterpret_cast<void*>(0x1234);
+
+ imageId = 0;
+ imageErr = 0;
+ imageDataPtr = 0;
+
+ TestThumbnailData td = TestThumbnailData(BitmapValid);
+ td.clientData = pixmapDataPtr;
+
+ wrapper_p->ThumbnailReady(pixmapErr, td, pixmapId);
+
+ QVERIFY(td.bitmap!=0);
+ QVERIFY(td.bitmap->SizeInPixels().iWidth == TestThumbnailData::BITMAP_WIDTH);
+ QVERIFY(td.bitmap->SizeInPixels().iHeight == TestThumbnailData::BITMAP_HEIGHT);
+
+ disconnect( wrapper_p, SIGNAL(thumbnailReady( QPixmap , void* , int, int ) ),
+ this, SLOT( thumbnailReadyPixmap( QPixmap , void* , int , int )));
+}
+
+void TestThumbnailManager::testThumbnailReadyImageAndPixmap()
+{
+ QVERIFY( connect( wrapper_p, SIGNAL(thumbnailReady( QPixmap , void* , int, int ) ),
+ this, SLOT( thumbnailReadyPixmap( QPixmap , void* , int , int )), Qt::DirectConnection ) );
+
+ QVERIFY( connect( wrapper_p, SIGNAL(thumbnailReady( QImage , void* , int, int ) ),
+ this, SLOT( thumbnailReadyImage( QImage , void* , int , int )), Qt::DirectConnection ) );
+
+ pixmapId = 432;
+ pixmapErr = KErrNone;
+ pixmapDataPtr = reinterpret_cast<void*>(0x1234);
+
+ imageId = pixmapId;
+ imageErr = pixmapErr;
+ imageDataPtr = pixmapDataPtr;
+
+ TestThumbnailData td = TestThumbnailData(BitmapValid);
+ td.clientData = pixmapDataPtr;
+
+ wrapper_p->ThumbnailReady(pixmapErr, td, pixmapId);
+
+ QVERIFY(td.bitmap!=0);
+ QVERIFY(td.bitmap->SizeInPixels().iWidth == TestThumbnailData::BITMAP_WIDTH);
+ QVERIFY(td.bitmap->SizeInPixels().iHeight == TestThumbnailData::BITMAP_HEIGHT);
+
+ disconnect( wrapper_p, SIGNAL(thumbnailReady( QImage , void* , int, int ) ),
+ this, SLOT( thumbnailReadyImage( QImage , void* , int , int )));
+
+ disconnect( wrapper_p, SIGNAL(thumbnailReady( QPixmap , void* , int, int ) ),
+ this, SLOT( thumbnailReadyPixmap( QPixmap , void* , int , int )));
+}
+
+void TestThumbnailManager::testPriorities_data()
+{
+ // note: current bounds for priorites are [-100:20] (from: CActive::TPriority)
+
+ QTest::addColumn<int>("priority");
+ QTest::addColumn<int>("expectedPriority");
+ QTest::newRow("priority 0") << 0 << 0;
+ QTest::newRow("priority 10") << 10 << 10;
+ QTest::newRow("priority 20") << 20 << 20;
+ QTest::newRow("priority 100") << 100 << 20;
+ QTest::newRow("priority 200") << 200 << 20;
+ QTest::newRow("priority -10") << -10 << -10;
+ QTest::newRow("priority -100") << -100 << -100;
+ QTest::newRow("priority -200") << -200 << -100;
+}
+
+void TestThumbnailManager::testPriorities()
+{
+ QFETCH(int, priority);
+ QFETCH(int, expectedPriority);
+ QCOMPARE(wrapper_p->convertPriority(priority), expectedPriority);
+}
+
+
+// --- private slots - callback ---
+
+void TestThumbnailManager::thumbnailReady( QPixmap pixmap, void *clientData, int id, int errorCode )
+{
+ //do nothing, we dont test Thumbnail Manager's functionality, we just use it
+ Q_UNUSED( pixmap );
+ Q_UNUSED( clientData );
+ Q_UNUSED( id );
+ Q_UNUSED( errorCode );
+}
+
+void TestThumbnailManager::thumbnailReady_p( QPixmap pixmap, void * clientData, int id, int errorCode )
+{
+ Q_UNUSED( clientData );
+ QVERIFY( pixmap.isNull() == pixmapNull );
+ QVERIFY( errorCode == aerrorCode );
+ QVERIFY( id == aid );
+}
+
+void TestThumbnailManager::thumbnailReadyPixmap( QPixmap pixmap, void *clientData, int id, int errorCode )
+{
+ Q_UNUSED( pixmap );
+ QVERIFY( errorCode == pixmapErr );
+ QVERIFY( id == pixmapId );
+ QVERIFY( clientData = pixmapDataPtr );
+}
+
+void TestThumbnailManager::thumbnailReadyImage( QImage image, void *clientData, int id, int errorCode )
+{
+ Q_UNUSED( image );
+ QVERIFY( errorCode == imageErr );
+ QVERIFY( id == imageId );
+ QVERIFY( clientData = imageDataPtr );
+}
+
+#ifdef _LOG_TO_C_
+ int main (int argc, char* argv[])
+ {
+ QApplication app(argc, argv);
+ TestThumbnailManager tc;
+ int c = 3;
+ char* v[] = {argv[0], "-o", "c:/test.txt"};
+ return QTest::qExec(&tc, c, v);
+ }
+#else
+ int main (int argc, char* argv[])
+ {
+ for ( int i=0;i<argc; i++){
+ if (strcmp(argv[i], "-o")==0 && i+1 <argc ){
+ //let's make sure that folder specified after -o exists
+ QDir file( QString::fromLatin1( argv[i+1] ));
+ QString s = file.absolutePath ();
+ s = s.left( s.lastIndexOf(file.dirName()) );
+ if ( !file.exists(s) ){
+ file.mkpath(s);
+ }
+ }
+ }
+
+ QApplication app(argc, argv);
+ QTEST_DISABLE_KEYPAD_NAVIGATION
+ TestThumbnailManager tc;
+ return QTest::qExec(&tc, argc, argv);
+ }
+#endif
+
+#include "test_qtnmwrapper.moc"
+