mpdata/tsrc/unittest_mpplaybackdata/src/unittest_mpplaybackdata.cpp
changeset 22 ecf06a08d4d9
child 29 8192e5b5c935
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpdata/tsrc/unittest_mpplaybackdata/src/unittest_mpplaybackdata.cpp	Mon May 03 12:29:20 2010 +0300
@@ -0,0 +1,340 @@
+/*
+* 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: Unit test for MpPlaybackData
+*
+*/
+
+#include <QSignalSpy>
+#include <qnamespace.h>
+#include <hbapplication.h>
+#include <hbmainwindow.h>
+#include <hbInstance.h>
+
+#include "unittest_mpplaybackdata.h"
+#include "stub/inc/thumbnailmanager_qt.h"
+
+
+// Do this so we can access all member variables.
+#define private public
+#include "mpplaybackdata.h"
+#undef private
+
+const int KUndefined = -1;
+
+/*!
+ Make our test case a stand-alone executable that runs all the test functions.
+ */
+int main(int argc, char *argv[])
+{
+    HbApplication app(argc, argv);
+    HbMainWindow window;
+    TestMpPlaybackData tv;
+
+    char *pass[3];
+    pass[0] = argv[0];
+    pass[1] = "-o";
+    pass[2] = "c:\\data\\unittest_mpplaybackdata.txt";
+
+    int res = QTest::qExec(&tv, 3, pass);
+
+    return res;
+}
+
+TestMpPlaybackData::TestMpPlaybackData()
+    : mTest(0)
+{
+}
+
+TestMpPlaybackData::~TestMpPlaybackData()
+{
+    delete mTest;
+}
+
+/*!
+ Called before the first testfunction is executed.
+ */
+void TestMpPlaybackData::initTestCase()
+{
+}
+
+/*!
+ Called after the last testfunction was executed.
+ */
+void TestMpPlaybackData::cleanupTestCase()
+{
+}
+
+/*!
+ Called before each testfunction is executed.
+ */
+void TestMpPlaybackData::init()
+{
+    mTest = new MpPlaybackData();
+}
+
+/*!
+ Called after every testfunction.
+ */
+void TestMpPlaybackData::cleanup()
+{
+    delete mTest;
+    mTest = 0;
+}
+
+/*!
+ testConstructor
+ */
+void TestMpPlaybackData::testConstructor()
+{
+    QVERIFY(mTest->mThumbnailManager != 0);
+    QCOMPARE(mTest->mThumbnailManager->getInitCounter(), 1);
+    QVERIFY(mTest->mDuration == 0);
+    QVERIFY(mTest->mPosition == 0);
+    QVERIFY(!mTest->mDefaultAlbumArt);
+
+}
+
+/*!
+ test setDuration and duration
+ */
+void TestMpPlaybackData::testSetDuration()
+{
+    QSignalSpy spy(mTest, SIGNAL(durationChanged()));
+    for(int i= 0; i < 10; i++){
+        mTest->setDuration(i);
+        QCOMPARE(mTest->mDuration, i);
+        QCOMPARE(mTest->duration(),i);
+        QCOMPARE(spy.count(),i+1);
+    }
+}
+
+/*!
+ test setPosition and position
+ */
+void TestMpPlaybackData::testSetPosition()
+{
+    QSignalSpy spy(mTest, SIGNAL(positionChanged()));
+    for(int i= 0; i < 10; i++){
+        mTest->setPosition(i);
+        QCOMPARE(mTest->mPosition, i);
+        QCOMPARE(mTest->position(),i);
+        QCOMPARE(spy.count(),i+1);
+    }
+}
+
+/*!
+ test setTitle and title
+ */
+void TestMpPlaybackData::testSetTitle()
+{
+    bool changed;
+    
+    changed = mTest->setTitle(QString("Title 1"));
+    QCOMPARE(changed, true);
+    QCOMPARE(mTest->mTitle, QString("Title 1"));
+    QCOMPARE(mTest->title(), QString("Title 1"));
+    changed = mTest->setTitle(QString("Title 1"));
+    QCOMPARE(changed, false);
+    QCOMPARE(mTest->title(), QString("Title 1"));
+    changed = mTest->setTitle(QString("Title 1"));
+    changed = mTest->setTitle(QString("Title 2"));
+    QCOMPARE(changed, true);
+    QCOMPARE(mTest->mTitle, QString("Title 2"));
+    QCOMPARE(mTest->title(), QString("Title 2"));
+    
+}
+
+/*!
+ test setArtist and artist
+ */
+void TestMpPlaybackData::testSetArtist()
+{
+    bool changed;
+    
+    changed = mTest->setArtist(QString("Artist 1"));
+    QCOMPARE(changed, true);
+    QCOMPARE(mTest->mArtist, QString("Artist 1"));
+    QCOMPARE(mTest->artist(), QString("Artist 1"));
+    changed = mTest->setArtist(QString("Artist 1"));
+    QCOMPARE(changed, false);
+    QCOMPARE(mTest->mArtist, QString("Artist 1"));
+    QCOMPARE(mTest->artist(), QString("Artist 1"));  
+    changed = mTest->setArtist(QString("Artist 2"));
+    QCOMPARE(changed, true);
+    QCOMPARE(mTest->mArtist, QString("Artist 2"));
+    QCOMPARE(mTest->artist(), QString("Artist 2"));
+    
+}
+
+/*!
+ test setAlbum and album
+ */
+void TestMpPlaybackData::testSetAlbum()
+{
+    bool changed;
+    
+    changed = mTest->setAlbum(QString("Album 1"));
+    QCOMPARE(changed, true);
+    QCOMPARE(mTest->mAlbum, QString("Album 1"));
+    QCOMPARE(mTest->album(), QString("Album 1"));
+    changed = mTest->setAlbum(QString("Album 1"));
+    QCOMPARE(changed, false);
+    QCOMPARE(mTest->mAlbum, QString("Album 1"));
+    QCOMPARE(mTest->album(), QString("Album 1"));
+    changed = mTest->setAlbum(QString("Album 2"));
+    QCOMPARE(changed, true);
+    QCOMPARE(mTest->mAlbum, QString("Album 2"));
+    QCOMPARE(mTest->album(), QString("Album 2"));
+    
+}
+
+/*!
+ test setUri and uri
+ */
+void TestMpPlaybackData::testSetUri()
+{
+    bool changed;
+    
+    changed = mTest->setUri(QString("Uri 1"));
+    QCOMPARE(changed, true);
+    QCOMPARE(mTest->mUri, QString("Uri 1"));
+    QCOMPARE(mTest->uri(), QString("Uri 1"));
+    changed = mTest->setUri(QString("Uri 1"));
+    QCOMPARE(changed, false);
+    QCOMPARE(mTest->mUri, QString("Uri 1"));
+    QCOMPARE(mTest->uri(), QString("Uri 1"));
+    changed = mTest->setUri(QString("Uri 2"));
+    QCOMPARE(changed, true);
+    QCOMPARE(mTest->mUri, QString("Uri 2"));
+    QCOMPARE(mTest->uri(), QString("Uri 2"));
+    
+}
+
+/*!
+ test setAlbumArtUri
+ */
+void TestMpPlaybackData::testSetAlbumArtUri()
+{
+    QSignalSpy spy(mTest, SIGNAL(albumArtReady()));
+    //Empty string
+    mTest->setAlbumArtUri(QString(""));
+    QCOMPARE(mTest->mAlbumArt, mTest->mDefaultAlbumArt);
+    QCOMPARE(spy.count(),1);
+    spy.clear();
+    
+    //Request failed
+    mTest->mThumbnailManager->mGetThumbFails = true;
+    mTest->setAlbumArtUri(QString("AlbumArt"));
+    QCOMPARE(mTest->mAlbumArt, mTest->mDefaultAlbumArt);
+    QCOMPARE(spy.count(),1);
+    spy.clear();
+    
+    //Succesful requests
+    mTest->mThumbnailManager->mGetThumbFails = false;
+    for(int i = 1; i < 10; i++){
+        mTest->setAlbumArtUri(QString("AlbumArt"));
+        QCOMPARE(mTest->mReqId, i);
+        QCOMPARE(spy.count(),0);
+        mTest->mReqId = KUndefined;
+    }
+    
+    //Pending request
+    mTest->mReqId = 1;
+    for(int i = 1; i < 10; i++){
+        mTest->setAlbumArtUri(QString("AlbumArt"));
+        QCOMPARE(spy.count(),0);
+        QCOMPARE(mTest->mThumbnailManager->mCancelCounter, i);
+    }
+}
+
+/*!
+ test ThumbnailReady and albumArt
+ */
+void TestMpPlaybackData::testThumbnailReady()
+{
+    void* temp;
+    temp=0;
+    QSignalSpy spy(mTest, SIGNAL(albumArtReady()));
+    QPixmap albumArt(100,100);
+    QPixmap albumArt2;
+   
+    //Error
+    mTest->thumbnailReady(albumArt,temp,KUndefined,KUndefined);
+    QCOMPARE(mTest->mAlbumArt, mTest->mDefaultAlbumArt); 
+    QCOMPARE(mTest->mReqId, KUndefined);
+    QCOMPARE(spy.count(),1);
+    spy.clear();
+    
+    //Wrong id
+    mTest->mReqId = 1;
+    mTest->thumbnailReady(albumArt,temp,KUndefined,0);
+    QCOMPARE(mTest->mAlbumArt, mTest->mDefaultAlbumArt); 
+    QCOMPARE(mTest->mReqId, KUndefined);
+    QCOMPARE(spy.count(),1);
+    spy.clear();
+    
+    //Update album art
+    mTest->mReqId = 1;
+    mTest->thumbnailReady(albumArt,temp,1,0);
+    QCOMPARE(mTest->mReqId, KUndefined);
+    QCOMPARE(spy.count(),1);
+    mTest->albumArt(albumArt2);
+    QCOMPARE(albumArt,albumArt2);
+}
+
+/*!
+ test setPlaybackState and playbackState
+ */
+void TestMpPlaybackData::testSetPlaybackState()
+{
+    QSignalSpy spy(mTest, SIGNAL(playbackStateChanged()));
+    
+    mTest->mPlaybackState = MpPlaybackData::Paused;
+    
+    mTest->setPlaybackState(MpPlaybackData::Playing);
+    QCOMPARE(mTest->playbackState(),MpPlaybackData::Playing);
+    QCOMPARE(spy.count(),1);
+    spy.clear();
+    
+    mTest->setPlaybackState(MpPlaybackData::Stopped);
+    QCOMPARE(mTest->playbackState(),MpPlaybackData::Stopped);
+    QCOMPARE(spy.count(),1);
+    spy.clear();
+    
+    mTest->setPlaybackState(MpPlaybackData::Paused);
+    QCOMPARE(mTest->playbackState(),MpPlaybackData::Paused);
+    QCOMPARE(spy.count(),1);
+    spy.clear();
+    
+    mTest->setPlaybackState(MpPlaybackData::Paused);
+    QCOMPARE(mTest->playbackState(),MpPlaybackData::Paused);
+    QCOMPARE(spy.count(),0);
+    
+}
+
+
+/*!
+ test commitPlaybackInfo
+ */
+void TestMpPlaybackData::testCommitPlaybackInfo()
+{
+    QSignalSpy spy(mTest, SIGNAL(playbackInfoChanged()));
+    
+    for(int i = 1; i < 10; i++){
+        mTest->commitPlaybackInfo();
+        QCOMPARE(spy.count(),i);
+    }
+}
+
+// End of file