videocollection/videocollectionwrapper/tsrc/testvideodeleteworker/src/testvideodeleteworker.cpp
changeset 34 bbb98528c666
child 55 4bfa887905cf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionwrapper/tsrc/testvideodeleteworker/src/testvideodeleteworker.cpp	Thu Apr 01 23:22:15 2010 +0300
@@ -0,0 +1,302 @@
+/*
+* 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: 
+*
+*/
+
+// INCLUDES
+
+#include "testvideodeleteworker.h"
+#include "videocollectionclient.h"
+#include "videocollectioncommon.h"
+#include <QList>
+#include <hbapplication.h>
+
+#define private public
+#include "videodeleteworker.h"
+#undef private
+
+// -----------------------------------------------------------------------------
+// main
+// -----------------------------------------------------------------------------
+//
+int main(int argc, char *argv[])
+{
+    Q_UNUSED(argc);
+    HbApplication app(argc, argv);
+    TestVideoDeleteWorker tv;
+  
+    int res;
+    if(argc > 1)
+    {   
+        res = QTest::qExec(&tv, argc, argv);
+    }
+    else
+    {
+        char *pass[3];
+        pass[0] = argv[0];
+        pass[1] = "-o";
+        pass[2] = "c:\\data\\testvideodeleteworker.txt";
+        res = QTest::qExec(&tv, 3, pass);
+    }
+
+    return res;
+}
+
+// -----------------------------------------------------------------------------
+// initTestCase
+// -----------------------------------------------------------------------------
+//
+void TestVideoDeleteWorker::initTestCase()
+{
+    qRegisterMetaType<QList<TMPXItemId> >("QList<TMPXItemId>");
+    mTestObject = 0;
+    mDummyCollection = new VideoCollectionClient();
+}
+
+// -----------------------------------------------------------------------------
+// cleanupTestCase
+// -----------------------------------------------------------------------------
+//
+void TestVideoDeleteWorker::cleanupTestCase()
+{
+    delete mTestObject;
+    delete mDummyCollection;
+}
+
+// -----------------------------------------------------------------------------
+// init
+// -----------------------------------------------------------------------------
+//
+void TestVideoDeleteWorker::init()
+{
+    mTestObject = new VideoDeleteWorker(*mDummyCollection);
+}
+ 
+// -----------------------------------------------------------------------------
+// cleanup
+// -----------------------------------------------------------------------------
+//
+void TestVideoDeleteWorker::cleanup()
+{
+    delete mTestObject;
+    mTestObject = 0;   
+}
+
+// -----------------------------------------------------------------------------
+// testRequestDelete
+// -----------------------------------------------------------------------------
+//
+void TestVideoDeleteWorker::testRequestDelete()
+{
+    mDummyCollection->mDeleteFails = false;
+    QList<TMPXItemId> itemIds;
+    // empty list
+    mTestObject->requestDelete(itemIds);
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 0);
+    
+    itemIds.append(TMPXItemId(0,0));
+    itemIds.append(TMPXItemId(1,0));
+    itemIds.append(TMPXItemId(2,0));
+    // list contains something
+    mTestObject->requestDelete(itemIds);
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 3);
+    
+    itemIds.append(TMPXItemId(2,0));
+    itemIds.append(TMPXItemId(3,0));
+    itemIds.append(TMPXItemId(4,0));
+    
+    // second list, make sure data is united
+    mTestObject->requestDelete(itemIds);
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 5);
+    
+    QCoreApplication::processEvents();
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 2);
+    
+    // delete -call fails
+    QSignalSpy spysignal(mTestObject, SIGNAL( deleteStartupFailed(QList<TMPXItemId>)));
+    mDummyCollection->mDeleteFails = true;
+    itemIds.clear();
+    itemIds.append(TMPXItemId(0,0));
+    mTestObject->requestDelete(itemIds);
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 3);
+    
+    QCoreApplication::processEvents();
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 0);
+    QVERIFY(spysignal.count() == 1);   
+    
+}
+
+// -----------------------------------------------------------------------------
+// testRemoveFromRequest
+// -----------------------------------------------------------------------------
+//
+void TestVideoDeleteWorker::testRemoveFromRequest()
+{
+    QList<TMPXItemId> itemIds;    
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 0);
+   
+    itemIds.append(TMPXItemId(0,0));
+    itemIds.append(TMPXItemId(1,0));
+    mTestObject->requestDelete(itemIds);
+    TMPXItemId id = TMPXItemId(3,0);
+    QVERIFY(mTestObject->removeFromRequest(id) == 2);
+    id = TMPXItemId(1,0);
+    QVERIFY(mTestObject->removeFromRequest(id) == 1);
+    id = TMPXItemId(2,0);
+    QVERIFY(mTestObject->removeFromRequest(id) == 1);
+    id = TMPXItemId(0,0);
+    QVERIFY(mTestObject->removeFromRequest(id) == 0);
+
+}
+
+// -----------------------------------------------------------------------------
+// testIsDeleting
+// -----------------------------------------------------------------------------
+//
+void TestVideoDeleteWorker::testIsDeleting()
+{
+    QList<TMPXItemId> itemIds;
+    
+    itemIds.append(TMPXItemId(0,0));
+    itemIds.append(TMPXItemId(1,0));
+    itemIds.append(TMPXItemId(2,0));
+    itemIds.append(TMPXItemId(3,0));
+    // list contains something
+    mTestObject->requestDelete(itemIds);
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 4);
+    QVERIFY(mTestObject->isDeleting());
+    QCoreApplication::processEvents();
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 1);
+    QVERIFY(mTestObject->isDeleting());
+    itemIds.clear();
+    mTestObject->requestDelete(itemIds);
+    QCoreApplication::processEvents();
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 0);
+    QVERIFY(!mTestObject->isDeleting()); 
+}
+
+// -----------------------------------------------------------------------------
+// testUpdateStatus
+// -----------------------------------------------------------------------------
+//
+void TestVideoDeleteWorker::testUpdateStatus()
+{
+    int status = 50;
+    QVariant statusData = QVariant();
+    // invalid status is not setted
+    mTestObject->updateStatus(50, statusData);
+    status = mTestObject->getLastStatus(statusData);
+    QVERIFY(status == 0);
+    QVERIFY(!statusData.isValid());
+    
+    // if status is not setted and provided as succeed -> setted as succeed 
+    status = VideoCollectionCommon::statusDeleteSucceed;
+    mTestObject->updateStatus(status, statusData);
+    status = mTestObject->getLastStatus(statusData);
+    QVERIFY(status == VideoCollectionCommon::statusDeleteSucceed);
+    QVERIFY(!statusData.isValid());
+
+    // if status is not setted or succeed provided as statusSingleDeleteFail -> setted as statusSingleDeleteFail 
+    status = VideoCollectionCommon::statusSingleDeleteFail;
+    mTestObject->updateStatus(status, statusData);
+    status = mTestObject->getLastStatus(statusData);
+    QVERIFY(status == VideoCollectionCommon::statusSingleDeleteFail);
+    QVERIFY(!statusData.isValid());
+    
+    // if there is failed -status and provided status is succeed, no update
+    status = VideoCollectionCommon::statusDeleteSucceed;
+    mTestObject->updateStatus(status, statusData);
+    status = mTestObject->getLastStatus(statusData);
+    QVERIFY(status == VideoCollectionCommon::statusSingleDeleteFail);
+    QVERIFY(!statusData.isValid());
+    
+    // current status single failed, provided multiple, count should be increased
+    status = VideoCollectionCommon::statusMultipleDeleteFail;
+    statusData = 2;
+    mTestObject->updateStatus(status, statusData);
+    status = mTestObject->getLastStatus(statusData);
+    QVERIFY(status == VideoCollectionCommon::statusMultipleDeleteFail);
+    QVERIFY(statusData.toInt() == 3);
+    
+    // current status single failed, provided is single failed, status changes into
+    // multiple failed and count becomes 2
+    mTestObject->mLastStatus = VideoCollectionCommon::statusSingleDeleteFail;
+    status = VideoCollectionCommon::statusSingleDeleteFail;
+    mTestObject->updateStatus(status, statusData);
+    status = mTestObject->getLastStatus(statusData);
+    QVERIFY(status == VideoCollectionCommon::statusMultipleDeleteFail);
+    QVERIFY(statusData.toInt() == 2);
+    
+    // is status is multiplefailed and provided is either single or multiple, 
+    // status is updated into multiple
+    status = VideoCollectionCommon::statusSingleDeleteFail;
+    statusData = QVariant();
+    mTestObject->updateStatus(status, statusData);
+    status = mTestObject->getLastStatus(statusData);
+    QVERIFY(status == VideoCollectionCommon::statusMultipleDeleteFail);
+    QVERIFY(statusData.toInt() == 3);
+    
+    status = VideoCollectionCommon::statusMultipleDeleteFail;
+    statusData = 2;
+    mTestObject->updateStatus(status, statusData);
+    status = mTestObject->getLastStatus(statusData);
+    QVERIFY(status == VideoCollectionCommon::statusMultipleDeleteFail);
+    QVERIFY(statusData.toInt() == 5);
+    
+    mTestObject->clearStatus();
+    status = mTestObject->getLastStatus(statusData);
+    QVERIFY(status == 0);
+    QVERIFY(!statusData.isValid());
+
+}
+
+// -----------------------------------------------------------------------------
+// testContinueSlot
+// -----------------------------------------------------------------------------
+//
+void TestVideoDeleteWorker::testContinueSlot()
+{
+    QList<TMPXItemId> itemIds;   
+    mTestObject->requestDelete(itemIds);
+    QCoreApplication::processEvents();
+    
+    // no timer
+    QTimer *tmp = mTestObject->mRequestWaitTimer;
+    mTestObject->mRequestWaitTimer = 0;
+    mTestObject->continueSlot();
+    // nothing to really check here
+    QVERIFY(mTestObject->mRemoveBuffer.count() == 0);
+    mTestObject->mRequestWaitTimer = tmp;
+    
+    // buffer empty
+    mTestObject->continueSlot();
+    QVERIFY(!mTestObject->mRequestWaitTimer->isActive());
+     
+    itemIds.append(TMPXItemId(0,0));
+    itemIds.append(TMPXItemId(1,0));
+    itemIds.append(TMPXItemId(2,0));
+    itemIds.append(TMPXItemId(3,0));
+    mTestObject->requestDelete(itemIds);
+    mTestObject->mRequestWaitTimer->stop();
+    // buffer not empty
+    mTestObject->continueSlot();
+    QVERIFY(mTestObject->mRequestWaitTimer->isActive());
+    
+    // timer is active
+    mTestObject->continueSlot();
+    QVERIFY(mTestObject->mRequestWaitTimer->isActive());
+}
+
+// end of file