camerauis/cameraxui/cxui/tsrc/cxuiprecaptureviewtest.cpp
branchRCL_3
changeset 53 61bc0f252b2b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/tsrc/cxuiprecaptureviewtest.cpp	Tue Aug 31 15:03:46 2010 +0300
@@ -0,0 +1,309 @@
+/*
+* 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 <QTest>
+#include <QSignalSpy>
+#include <hbmainwindow.h>
+#include "cxutils.h"
+//#include "cxuiviewmanager.h"
+#include "cxuifakeengine.h"
+#include "cxuitest.h"
+#include "cxuienums.h"
+//#include "cxeviewfindercontrol.h"
+
+
+// Tests only that correct view is activated
+void TestCxUi::testItemVisibilityInPrecaptureview()
+    {
+    CX_DEBUG(("testZoomInPrecaptureview"));
+    mEngine->initMode(Cxe::ImageMode);
+    emit toPrecaptureView();
+    QTest::qWait(1000);
+    QVERIFY( mMainWindow->currentViewIndex()== CxUi::StillPreCaptureView );
+    //QVERIFY(mMainWindow->visibleItems().count() == 0);
+    QTest::mousePress( mMainWindow->viewport(), Qt::LeftButton,0, QPoint(180,60), 5 );
+    //QVERIFY(mMainWindow->visibleItems().count() == 7);
+    //mMainWindow->visibleItems();
+    QCOMPARE(mMainWindow->isItemVisible(Hb::TitlePaneItem), true);
+    QCOMPARE(mMainWindow->isItemVisible(Hb::NaviPaneItem), true);
+    QCOMPARE(mMainWindow->isItemVisible(Hb::ToolBarItem), true);
+    QCOMPARE(mMainWindow->isItemVisible(Hb::IndicatorItems), true);
+    QCOMPARE(mMainWindow->isItemVisible(Hb::PrimarySoftKeyItem), true);
+    QCOMPARE(mMainWindow->isItemVisible(Hb::SecondarySoftKeyItem), true);
+    QCOMPARE(mMainWindow->isItemVisible(Hb::MiddleSoftKeyItem), true);
+    QCOMPARE(mMainWindow->isItemVisible(Hb::SoftKeyItems), true);
+    QTest::mousePress( mMainWindow->viewport(), Qt::LeftButton,0, QPoint(35,150), 5 );
+    QCOMPARE(mMainWindow->visibleItems(), Hb::AllItems);
+    QCOMPARE(mMainWindow->isItemVisible(Hb::TitlePaneItem), false);
+ 
+    }
+
+// Tests only that correct view is activated
+void TestCxUi::testViewManager()
+    {
+    CX_DEBUG(("testViewManager"));
+    mEngineFake->initModeFake(Cxe::ImageMode);
+
+    connect(this, SIGNAL(toPostcaptureView()), mViewManager, SLOT(changeToPostView()));
+    connect(this, SIGNAL(toPrecaptureView()), mViewManager, SLOT(changeToPreView()));
+
+    // Test if we are in still VF
+    QVERIFY(mMainWindow->currentViewIndex() == CxUi::StillPreCaptureView );
+
+    emit toPostcaptureView();
+    // Test if image review activated
+    QVERIFY( mMainWindow->currentViewIndex()== CxUi::StillPostCaptureView );
+
+    emit toPrecaptureView();
+    // Test if still VF view active
+    QVERIFY( mMainWindow->currentViewIndex()== CxUi::StillPreCaptureView );
+
+    mEngineFake->initModeFake(Cxe::VideoMode);
+    emit toPrecaptureView();
+    // Test if video VF view active
+    QVERIFY( mMainWindow->currentViewIndex() == CxUi::VideoPreCaptureView );
+
+    emit toPostcaptureView();
+    // Test if video review active
+    QVERIFY( mMainWindow->currentViewIndex() == CxUi::VideoPostCaptureView );
+
+    emit toPrecaptureView();
+    // Test if video VF view active
+    QVERIFY( mMainWindow->currentViewIndex() == CxUi::VideoPreCaptureView ); 
+
+    // Go back to original state...
+    mEngineFake->initModeFake(Cxe::ImageMode);
+    emit toPrecaptureView();
+    QTest::qWait(500);
+    }
+
+// Tests capture key in still mode
+/*
+void TestCxUi::testCaptureKeyInImageMode()
+    {
+    mEngine->initMode(Cxe::ImageMode);
+    QTest::qWait(1000);
+    // Test if we are in still VF
+    QVERIFY(mMainWindow->currentViewIndex() == CxUi::StillPreCaptureView );    
+    
+    CX_DEBUG(("testCaptureKey in still capture mode"));
+    
+    QKeyEvent* captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyPress, Qt::Key_unknown, 0, 0xab, 0,0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyRelease, Qt::Key_unknown, 0, 0xab, 0,0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    QSignalSpy deviceStateSpy(&mEngine->stillCaptureControl(), 
+            SIGNAL(snapshotReady(int)));    
+    QVERIFY( deviceStateSpy.isValid() );        
+    QTest::qWait(3000);
+    QCOMPARE( deviceStateSpy.count(), 1 );
+    if (deviceStateSpy.count() > 0) {
+        // Expect zero error code
+        QList<QVariant> initModeArguments = deviceStateSpy.takeFirst();
+        QVERIFY( initModeArguments.at(0).toInt() == 0 );
+    }    
+    QVERIFY( mMainWindow->currentViewIndex()== CxUi::StillPostCaptureView );
+    
+    CX_DEBUG(("Test to get back viewfinder with capture key"));
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyPress, Qt::Key_unknown, 0, 0xab, 0,0);    
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyRelease, Qt::Key_unknown, 0, 0xab, 0,0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    QTest::qWait(1000); 
+    QVERIFY( mMainWindow->currentViewIndex()== CxUi::StillPreCaptureView );
+    
+    // Test autofocus with halfkeypress and releasing
+    CX_DEBUG(("testAutoFocus_1"));
+    
+    QSignalSpy autofocusStateSpy(&mEngine->autoFocusControl(), 
+            SIGNAL(stateChanged(CxeAutoFocusControl::State,int)));          
+    QVERIFY( autofocusStateSpy.isValid() );     
+    
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyPress, 
+            Qt::Key_unknown, 
+            0, 
+            0xe2, 
+            0,
+            0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    
+    CX_DEBUG(("testAutoFocus cancel"));
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyRelease, 
+            Qt::Key_unknown, 
+            0, 
+            0xe2, 
+            0,
+            0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);       
+    QTest::qWait(100);
+    
+    QCOMPARE( autofocusStateSpy.count(), 3 );
+    if (autofocusStateSpy.count() > 0) {
+        QList<QVariant> initModeArguments = autofocusStateSpy.takeFirst();
+        QVERIFY( initModeArguments.at(0).value<CxeAutoFocusControl::State>() == CxeAutoFocusControl::InProgress );
+        QVERIFY( initModeArguments.at(1).toInt() == 0 );
+        CX_DEBUG(("testAutoFocus_2a"));
+        initModeArguments = autofocusStateSpy.takeAt(0);
+        QVERIFY( initModeArguments.at(1).toInt() == 0 );
+        QVERIFY( initModeArguments.at(0).value<CxeAutoFocusControl::State>() == CxeAutoFocusControl::Canceling );
+        initModeArguments = autofocusStateSpy.takeAt(0);
+        QVERIFY( initModeArguments.at(0).value<CxeAutoFocusControl::State>() == CxeAutoFocusControl::Unknown );
+        QVERIFY( initModeArguments.at(1).toInt() == 0 );  
+    }    
+
+    // Test autofocus with halfkeypress and capture focused image
+    CX_DEBUG(("testAutoFocus_2"));
+
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyPress, 
+            Qt::Key_unknown, 
+            0, 
+            0xe2, 
+            0,
+            0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyRelease, Qt::Key_unknown, 0, 0xab, 0,0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    QTest::qWait(5000);   
+
+    QCOMPARE( autofocusStateSpy.count(), 2 );
+    if (autofocusStateSpy.count() > 0) {
+    QList<QVariant> initModeArguments = autofocusStateSpy.takeFirst();
+    QVERIFY( initModeArguments.at(0).value<CxeAutoFocusControl::State>() == CxeAutoFocusControl::InProgress );
+    QVERIFY( initModeArguments.at(1).toInt() == 0 );
+    initModeArguments = autofocusStateSpy.takeAt(0);
+    QVERIFY( initModeArguments.at(0).value<CxeAutoFocusControl::State>() == CxeAutoFocusControl::Ready || 
+            initModeArguments.at(0).value<CxeAutoFocusControl::State>() == CxeAutoFocusControl::Failed );
+
+    }    
+
+    CX_DEBUG(("Capture autofocused image"));
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyPress, 
+            Qt::Key_unknown, 
+            0, 
+            0xab, 
+            0,
+            0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent); 
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyRelease, Qt::Key_unknown, 0, 0xab, 0,0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    QTest::qWait(5000);
+
+    QCOMPARE( deviceStateSpy.count(), 1 );
+    if (deviceStateSpy.count() > 0) {
+        // Expect zero error code
+        QList<QVariant> initModeArguments = deviceStateSpy.takeFirst();
+        QVERIFY( initModeArguments.at(0).toInt() == 0 );
+    }    
+    QVERIFY( mMainWindow->currentViewIndex()== CxUi::StillPostCaptureView );
+    
+    }
+    */
+/*
+// Tests capture key in video mode
+void TestCxUi::testCaptureKeyInVideoMode()
+    { 
+    connect(this, SIGNAL(toPrecaptureView()), mViewManager, SLOT(changeToPreView()));
+    QSignalSpy deviceStateSpy(&mEngine->videoCaptureControl(), 
+            SIGNAL(stateChanged(CxeVideoCaptureControl::State, int)));    
+    QVERIFY( deviceStateSpy.isValid() ); 
+    emit toPrecaptureView();
+    QTest::qWait(500);
+    // Test if we are in still VF
+    QVERIFY(mMainWindow->currentViewIndex() == CxUi::VideoPreCaptureView );
+
+    // Generate camera key event to start recording
+    CX_DEBUG(("Start video recording"));
+    QKeyEvent* captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyPress, 
+            Qt::Key_unknown, 
+            0, 
+            0xab, 
+            0,
+            0);    
+
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyRelease, Qt::Key_unknown, 0, 0xab, 0,0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    QTest::qWait(5000);
+
+    // Generate camera key event to stop recording
+    CX_DEBUG(("Stop video recording"));
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyPress, 
+            Qt::Key_unknown, 
+            0, 
+            0xab, 
+            0,
+            0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyRelease, Qt::Key_unknown, 0, 0xab, 0,0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    QTest::qWait(3000);
+
+    QCOMPARE( deviceStateSpy.count(), 4 );
+
+    QList<QVariant> initModeArguments = deviceStateSpy.takeAt(0);
+    QVERIFY( initModeArguments.at(0).value<CxeVideoCaptureControl::State>() == CxeVideoCaptureControl::PlayingStartSound );
+    QVERIFY( initModeArguments.at(1).toInt() == 0 );
+    initModeArguments = deviceStateSpy.takeAt(0);
+    QVERIFY( initModeArguments.at(1).toInt() == 0 );
+    QVERIFY( initModeArguments.at(0).value<CxeVideoCaptureControl::State>() == CxeVideoCaptureControl::Recording );
+    initModeArguments = deviceStateSpy.takeAt(0);
+    QVERIFY( initModeArguments.at(1).toInt() == 0 );
+    QVERIFY( initModeArguments.at(0).value<CxeVideoCaptureControl::State>() == CxeVideoCaptureControl::Stopping );
+    initModeArguments = deviceStateSpy.takeAt(0);
+    QVERIFY( initModeArguments.at(0).value<CxeVideoCaptureControl::State>() == CxeVideoCaptureControl::Idle );
+    QVERIFY( initModeArguments.at(1).toInt() == 0 );  
+
+    QVERIFY( mMainWindow->currentViewIndex()== CxUi::VideoPostCaptureView );
+
+    CX_DEBUG(("Test to get back viewfinder with capture key"));
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyPress, Qt::Key_unknown, 0, 0xab, 0,0);    
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    captureKeyEvent = QKeyEvent::createExtendedKeyEvent(
+            QEvent::KeyRelease, Qt::Key_unknown, 0, 0xab, 0,0);
+    QApplication::postEvent(mMainWindow, captureKeyEvent);
+    QTest::qWait(5000); 
+    QVERIFY( mMainWindow->currentViewIndex()== CxUi::VideoPreCaptureView );
+
+    QCOMPARE(deviceStateSpy.count(), 3);
+    if (deviceStateSpy.count() > 0) {        
+        QList<QVariant> initModeArguments = deviceStateSpy.takeAt(0);
+        QVERIFY( initModeArguments.at(0).value<CxeVideoCaptureControl::State>() == CxeVideoCaptureControl::Open );
+        QVERIFY( initModeArguments.at(1).toInt() == 0 );
+        initModeArguments = deviceStateSpy.takeAt(0);
+        QVERIFY( initModeArguments.at(1).toInt() == 0 );
+        QVERIFY( initModeArguments.at(0).value<CxeVideoCaptureControl::State>() == CxeVideoCaptureControl::Preparing );
+        initModeArguments = deviceStateSpy.takeAt(0);
+        QVERIFY( initModeArguments.at(0).value<CxeVideoCaptureControl::State>() == CxeVideoCaptureControl::Ready );
+        QVERIFY( initModeArguments.at(1).toInt() == 0 );  
+    }   
+
+    }
+    */