diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraxui/cxui/tsrc/cxuitestbat.cpp --- a/camerauis/cameraxui/cxui/tsrc/cxuitestbat.cpp Tue Aug 31 15:03:46 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,365 +0,0 @@ -/* -* 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 -#include -#include -#include -#include -#include "cxuitestbat.h" -#include "cxeengine.h" -#include "cxenamespace.h" -#include "cxevideocapturecontrol.h" -#include "cxeviewfindercontrol.h" -#include "cxuiviewmanager.h" -#include "cxutils.h" -#include "cxuienums.h" -#include "cxuicapturekeyhandler.h" -#include "cxuidocumentloader.h" - - -// Run before each test -void TestCxUiBat::initTestCase() -{ - - mMainWindow = new HbMainWindow; - mMainWindow->setOrientation(Qt::Horizontal); - mEngine = CxeEngine::createEngine(); - - mKeyHandler = new CxuiCaptureKeyHandler(*mEngine); - mViewManager = new CxuiViewManager(*mMainWindow, *mEngine, *mKeyHandler); - - mViewManager->prepareWindow(); - mMainWindow->showFullScreen(); -} - -// Run after each test -void TestCxUiBat::cleanup() -{ - //delete mEngine; -} - -// Run after each test -void TestCxUiBat::cleanupTestCase() -{ - delete mMainWindow; - delete mKeyHandler; - delete mViewManager; - //delete mEngine; -} - -void TestCxUiBat::initStillImageMode() -{ - mEngine->initMode( Cxe::ImageMode ); - -} - -void TestCxUiBat::sendCameraKeyEvent(QEvent::Type event) -{ - CX_DEBUG_ENTER_FUNCTION(); - QKeyEvent* captureKeyEvent; - if (event == QEvent::None) { - 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); - - } else { - captureKeyEvent = QKeyEvent::createExtendedKeyEvent(event, Qt::Key_unknown, 0, 0xab, 0, 0); - QApplication::postEvent(mMainWindow, captureKeyEvent); - } - CX_DEBUG_EXIT_FUNCTION(); -} - -void TestCxUiBat::sendAutofocusKeyEvent(QEvent::Type event) -{ - CX_DEBUG_ENTER_FUNCTION(); - QKeyEvent* autofocusKeyEvent = QKeyEvent::createExtendedKeyEvent(event, Qt::Key_unknown, 0, - 0xe2, 0, 0); - QApplication::postEvent(mMainWindow, autofocusKeyEvent); - CX_DEBUG_EXIT_FUNCTION(); -} - -void TestCxUiBat::initVideoMode() -{ - mEngine->initMode( Cxe::VideoMode ); - - QSignalSpy deviceStateSpy(&mEngine->videoCaptureControl(), - SIGNAL(stateChanged(CxeVideoCaptureControl::State, CxeError::Id))); - QVERIFY( deviceStateSpy.isValid() ); - - QTest::qWait( 3000 ); - - QCOMPARE( deviceStateSpy.count(), 3 ); - - QList initModeArguments = deviceStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(0).value() == CxeVideoCaptureControl::Initialized ); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - initModeArguments = deviceStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - QVERIFY( initModeArguments.at(0).value() == CxeVideoCaptureControl::Preparing ); - initModeArguments = deviceStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(0).value() == CxeVideoCaptureControl::Ready ); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); -} - -// Tests capture key in still mode -void TestCxUiBat::testCaptureKeyInImageMode() - { - mEngine->initMode(Cxe::ImageMode); - QTest::qWait(3000); - // Test if we are in still VF - QVERIFY(mMainWindow->currentViewIndex() == CxUi::StillPreCaptureView ); - - CX_DEBUG(("testCaptureKey in still capture mode")); - sendCameraKeyEvent(); - - QSignalSpy deviceStateSpy(&mEngine->stillCaptureControl(), - SIGNAL(snapshotReady(int, CxeError::Id))); - QVERIFY( deviceStateSpy.isValid() ); - QTest::qWait(2000); - QCOMPARE( deviceStateSpy.count(), 1 ); - if (deviceStateSpy.count() > 0) { - // Expect zero error code - QList initModeArguments = deviceStateSpy.takeFirst(); - QVERIFY( initModeArguments.at(0).toInt() == 0 ); - } - QVERIFY( mMainWindow->currentViewIndex()== CxUi::StillPostCaptureView ); - - CX_DEBUG(("Test to get back viewfinder with capture key")); - sendCameraKeyEvent(); - 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, CxeError::Id))); - QVERIFY( autofocusStateSpy.isValid() ); - - // Test autofocus with halfkeypress and canceling it - sendAutofocusKeyEvent(QEvent::KeyPress); - CX_DEBUG(("testAutoFocus_2")); - sendAutofocusKeyEvent(QEvent::KeyRelease); - QTest::qWait(1000); - - QCOMPARE( autofocusStateSpy.count(), 3 ); - if (autofocusStateSpy.count() > 0) { - QList initModeArguments = autofocusStateSpy.takeFirst(); - QVERIFY( initModeArguments.at(0).value() == 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::Canceling ); - initModeArguments = autofocusStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(0).value() == CxeAutoFocusControl::Unknown ); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - } - - // Test autofocus with halfkeypress and capture focused image - CX_DEBUG(("testAutoFocus_3")); - - sendAutofocusKeyEvent(QEvent::KeyPress); - CX_DEBUG(("Capture autofocused image")); - QTest::qWait(3000); - sendCameraKeyEvent(); - sendAutofocusKeyEvent(QEvent::KeyRelease); - QTest::qWait(1000); - - QCOMPARE( autofocusStateSpy.count(), 2 ); - if (autofocusStateSpy.count() > 0) { - QList initModeArguments = autofocusStateSpy.takeFirst(); - QVERIFY( initModeArguments.at(0).value() == CxeAutoFocusControl::InProgress ); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - initModeArguments = autofocusStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(0).value() == CxeAutoFocusControl::Ready || - initModeArguments.at(0).value() == CxeAutoFocusControl::Failed ); - - } - - QCOMPARE( deviceStateSpy.count(), 1 ); - if (deviceStateSpy.count() > 0) { - // Expect zero error code - QList initModeArguments = deviceStateSpy.takeFirst(); - QVERIFY( initModeArguments.at(0).toInt() == 0 ); - } - QVERIFY( mMainWindow->currentViewIndex()== CxUi::StillPostCaptureView ); - } - -// Tests capture key in video mode -void TestCxUiBat::testCaptureKeyInVideoMode() -{ - - connect(this, SIGNAL(toPrecaptureView()), mViewManager, SLOT(changeToPrecaptureView())); - QSignalSpy deviceStateSpy(&mEngine->videoCaptureControl(), - SIGNAL(stateChanged(CxeVideoCaptureControl::State, CxeError::Id))); - QVERIFY( deviceStateSpy.isValid() ); - emit toPrecaptureView(); - QTest::qWait(1500); - // Test if we are in still VF - QVERIFY(mMainWindow->currentViewIndex() == CxUi::VideoPreCaptureView ); - - - // Generate camera key event to start recording - CX_DEBUG(("Start video recording")); - sendCameraKeyEvent(); - QTest::qWait(5000); - - // Generate camera key event to stop recording - CX_DEBUG(("Stop video recording")); - sendCameraKeyEvent(); - QTest::qWait(3000); - - QCOMPARE( deviceStateSpy.count(), 4 ); - - QList initModeArguments = deviceStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(0).value() == CxeVideoCaptureControl::PlayingStartSound ); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - initModeArguments = deviceStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - QVERIFY( initModeArguments.at(0).value() == CxeVideoCaptureControl::Recording ); - initModeArguments = deviceStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - QVERIFY( initModeArguments.at(0).value() == CxeVideoCaptureControl::Stopping ); - initModeArguments = deviceStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(0).value() == CxeVideoCaptureControl::Idle ); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - - QVERIFY( mMainWindow->currentViewIndex()== CxUi::VideoPostCaptureView ); - - CX_DEBUG(("Test to get back viewfinder with capture key")); - sendCameraKeyEvent(); - QTest::qWait(5000); - QVERIFY( mMainWindow->currentViewIndex()== CxUi::VideoPreCaptureView ); - - QCOMPARE(deviceStateSpy.count(), 3); - if (deviceStateSpy.count() > 0) { - QList initModeArguments = deviceStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(0).value() == CxeVideoCaptureControl::Initialized ); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - initModeArguments = deviceStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - QVERIFY( initModeArguments.at(0).value() == CxeVideoCaptureControl::Preparing ); - initModeArguments = deviceStateSpy.takeAt(0); - QVERIFY( initModeArguments.at(0).value() == CxeVideoCaptureControl::Ready ); - QVERIFY( initModeArguments.at(1).toInt() == 0 ); - } - - -} - -// Tests only that correct view is activated -void TestCxUiBat::testItemVisibilityInPrecaptureview() -{ - CX_DEBUG(("testZoomInPrecaptureview")); - mEngine->initMode(Cxe::ImageMode); - emit toPrecaptureView(); - QTest::qWait(1000); - QVERIFY( mMainWindow->currentViewIndex()== CxUi::StillPreCaptureView ); - - QSignalSpy zoomStateSpy(&mEngine->zoomControl(), - SIGNAL(stateChanged(CxeZoomControl::State, CxeError::Id))); - QVERIFY( zoomStateSpy.isValid() ); - - QSignalSpy zoomLevelStateSpy(&mEngine->zoomControl(), - SIGNAL(zoomLevelChanged(int))); - QVERIFY( zoomLevelStateSpy.isValid() ); - - CX_DEBUG(("ShowControls")); - QTest::mouseClick( mMainWindow->viewport(), Qt::LeftButton,0, QPoint(180,60),5 ); - QTest::qWait(300); - 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); - - - CX_DEBUG(("test Zoom slider - touch events control zoom level")); - QTest::qWait(1000); - - HbAction *zoomAction = qobject_cast(mViewManager->documentLoader()->findObject("cxui_action_zoom")); - HbSlider *zoom = qobject_cast(mViewManager->documentLoader()->findWidget("zoom")); - CX_DEBUG_ASSERT(zoomAction); - CX_DEBUG_ASSERT(zoom); - - // trigger zoom action on toolbar - zoomAction->trigger(); - - // get the zoom position - QPoint centerPoint = zoom->geometry().toRect().center(); - QPoint firstPoint = zoom->geometry().toRect().topLeft(); - QPoint secondPoint = zoom->geometry().toRect().bottomRight(); - - CX_DEBUG( ("zoom slider coordinates topleft(%d,%d) and bottomright(%d,%d)", - firstPoint.x(), firstPoint.y(), secondPoint.x(), secondPoint.y() )); - - firstPoint = (centerPoint - firstPoint); - secondPoint = (secondPoint - centerPoint); - - CX_DEBUG( ("dragging zoom from (%d,%d) to (%d,%d)", - firstPoint.x(), firstPoint.y(), - secondPoint.x(), secondPoint.y() )); - - // click on zoom - QTest::mousePress( mMainWindow->viewport(), Qt::LeftButton,0, firstPoint ); - QTest::mouseMove ( mMainWindow->viewport(), secondPoint, 1000 ); - QTest::mouseRelease( mMainWindow->viewport(), Qt::LeftButton,0, secondPoint); - // At least ZoominIn/ZoominOut and Ready states are set - QVERIFY(zoomStateSpy.count() > 2 ); - // At least once zoom value has been changed. - QVERIFY(zoomLevelStateSpy.count() > 2 ); - - CX_DEBUG( ("mouse click on (%d,%d)", centerPoint.x(), centerPoint.y() )); - QTest::mouseClick( mMainWindow->viewport(), Qt::LeftButton,0, centerPoint); - // At least ZoominIn/ZoominOut and Ready states are set - QVERIFY(zoomStateSpy.count() > 2 ); - // At least once zoom value has been changed. - QVERIFY(zoomLevelStateSpy.count() > 2 ); - QTest::qWait(1000); - - /*CX_DEBUG(("testFlash")); - QTest::qWait(1000); - QTest::mouseClick( mMainWindow->viewport(), Qt::LeftButton,0, QPoint(35,150)); - QTest::qWait(1000); - QTest::mouseClick( mMainWindow->viewport(), Qt::LeftButton,0, QPoint(185,150)); - QTest::mouseClick( mMainWindow->viewport(), Qt::LeftButton,0, QPoint(35,150)); - sendCameraKeyEvent(QEvent::KeyPress); - sendCameraKeyEvent(QEvent::KeyRelease);*/ - - - CX_DEBUG(("testGoToVideo")); - QTest::mouseClick( mMainWindow->viewport(), Qt::LeftButton,0, QPoint(35,100), 500 ); - QTest::qWait(3000); - QVERIFY( mMainWindow->currentViewIndex()== CxUi::VideoPreCaptureView ); - - CX_DEBUG(("testGoToStill")); - QTest::mouseClick( mMainWindow->viewport(), Qt::LeftButton,0, QPoint(180,60) ); - QTest::qWait(1000); - QTest::mouseClick( mMainWindow->viewport(), Qt::LeftButton,0, QPoint(35,100), 500 ); - QTest::qWait(3000); - QVERIFY( mMainWindow->currentViewIndex()== CxUi::StillPreCaptureView ); -} - -// main() function non-GUI testing -QTEST_MAIN( TestCxUiBat );