camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeenginesymbian/unittest_cxeenginesymbian.cpp
branchRCL_3
changeset 23 61bc0f252b2b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeenginesymbian/unittest_cxeenginesymbian.cpp	Tue Aug 31 15:03:46 2010 +0300
@@ -0,0 +1,193 @@
+/*
+* 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 "unittest_cxeenginesymbian.h"
+#include "cxeenginesymbianunit.h"
+#include "cxefakecameradevicecontrol.h"
+#include "cxefakestillcapturecontrol.h"
+#include "cxefakevideocapturecontrol.h"
+#include "cxefakeviewfindercontrol.h"
+#include "cxetestutils.h"
+#include "cxutils.h"
+
+UnitTestCxeEngineSymbian::UnitTestCxeEngineSymbian()
+    : mEngine(NULL)
+{
+}
+
+UnitTestCxeEngineSymbian::~UnitTestCxeEngineSymbian()
+{
+    delete mEngine;
+}
+
+// Run before each individual test case
+void UnitTestCxeEngineSymbian::init()
+{
+    delete mEngine;
+    mEngine = NULL;
+    mEngine = new CxeEngineSymbianUnit();
+    mEngine->construct();
+    mEngine->initMode(Cxe::ImageMode);
+
+    mCameraDeviceControl = qobject_cast<CxeFakeCameraDeviceControl*>(
+            &mEngine->cameraDeviceControl());
+    mStillCaptureControl = qobject_cast<CxeFakeStillCaptureControl*>(
+            &mEngine->stillCaptureControl());
+    mVideoCaptureControl = qobject_cast<CxeFakeVideoCaptureControl*>(
+            &mEngine->videoCaptureControl());
+    mViewfinderControl = qobject_cast<CxeFakeViewfinderControl*>(
+            &mEngine->viewfinderControl());
+}
+
+// Run after each individual test case
+void UnitTestCxeEngineSymbian::cleanup()
+{
+    delete mEngine;
+    mEngine = NULL;
+    mCameraDeviceControl = NULL;
+    mStillCaptureControl = NULL;
+    mVideoCaptureControl = NULL;
+    mViewfinderControl = NULL;
+}
+
+void UnitTestCxeEngineSymbian::testCameraDeviceControl()
+{
+    QVERIFY(&mEngine->cameraDeviceControl());
+}
+
+void UnitTestCxeEngineSymbian::testViewfinderControl()
+{
+    QVERIFY(&mEngine->viewfinderControl());
+}
+
+void UnitTestCxeEngineSymbian::testStillCaptureControl()
+{
+    QVERIFY(&mEngine->stillCaptureControl());
+}
+
+void UnitTestCxeEngineSymbian::testVideoCaptureControl()
+{
+    QVERIFY(&mEngine->videoCaptureControl());
+}
+
+void UnitTestCxeEngineSymbian::testAutoFocusControl()
+{
+    QVERIFY(&mEngine->autoFocusControl());
+}
+
+void UnitTestCxeEngineSymbian::testZoomControl()
+{
+    QVERIFY(&mEngine->zoomControl());
+}
+
+void UnitTestCxeEngineSymbian::testSettings()
+{
+    QVERIFY(&mEngine->settings());
+}
+
+void UnitTestCxeEngineSymbian:: testSensorEventHandler()
+{
+    QVERIFY(&mEngine->sensorEventHandler());
+}
+
+void UnitTestCxeEngineSymbian::testFeatureManager()
+{
+    QVERIFY(&mEngine->featureManager());
+}
+
+void UnitTestCxeEngineSymbian::testMode()
+{
+    QCOMPARE(mEngine->mode(), Cxe::ImageMode);
+}
+
+/*!
+    Test that initMode() changes current mode
+*/
+void UnitTestCxeEngineSymbian::testInitMode1()
+{
+    mEngine->initMode(Cxe::VideoMode);
+    QCOMPARE(mEngine->mode(), Cxe::VideoMode);
+
+    mEngine->initMode(Cxe::ImageMode);
+    QCOMPARE(mEngine->mode(), Cxe::ImageMode);
+}
+
+/*!
+    Test that initMode() calls reserve when needed
+*/
+void UnitTestCxeEngineSymbian::testInitMode2()
+{
+    mCameraDeviceControl->setState(CxeCameraDeviceControl::Idle);
+    mEngine->initMode(Cxe::ImageMode);
+
+    // Verify that reseve() has been called using device control call history
+    QVERIFY(mCameraDeviceControl->callHistory().indexOf(
+            CxeFakeCameraDeviceControl::Reserve) >= 0);
+}
+
+/*!
+    Test that deinit() and init() are called correctly when switching
+    to video mode
+*/
+void UnitTestCxeEngineSymbian::testInitMode3()
+{
+    mCameraDeviceControl->setState(CxeCameraDeviceControl::Ready);
+    mStillCaptureControl->setState(CxeStillCaptureControl::Ready);
+    mVideoCaptureControl->setState(CxeVideoCaptureControl::Idle);
+    mEngine->initMode(Cxe::VideoMode);
+
+    // Verify that init() and deinit() have been called using call histories
+    QVERIFY(mStillCaptureControl->callHistory().indexOf(
+            CxeFakeStillCaptureControl::Deinit) >= 0);
+    QVERIFY(mVideoCaptureControl->callHistory().indexOf(
+            CxeFakeVideoCaptureControl::Init) >= 0);
+
+    // Verify that viewfinder was stopped
+    QVERIFY(mViewfinderControl->callHistory().indexOf(
+            CxeFakeViewfinderControl::Stop) >= 0);
+}
+
+/*!
+    Test that deinit() and init() are called correctly when switching
+    to still image mode
+*/
+void UnitTestCxeEngineSymbian::testInitMode4()
+{
+    // First set the engine to video mode that a mode switch is really needed
+    mEngine->initMode(Cxe::VideoMode);
+    mCameraDeviceControl->setState(CxeCameraDeviceControl::Ready);
+    mStillCaptureControl->setState(CxeStillCaptureControl::Uninitialized);
+    mVideoCaptureControl->setState(CxeVideoCaptureControl::Initialized);
+
+    mEngine->initMode(Cxe::ImageMode);
+
+    // Verify that init() and deinit() have been called using call histories
+    QVERIFY(mVideoCaptureControl->callHistory().indexOf(
+            CxeFakeVideoCaptureControl::Deinit) >= 0);
+    QVERIFY(mStillCaptureControl->callHistory().indexOf(
+            CxeFakeStillCaptureControl::Init) >= 0);
+
+    // Verify that viewfinder was stopped
+    QVERIFY(mViewfinderControl->callHistory().indexOf(
+            CxeFakeViewfinderControl::Stop) >= 0);
+}
+
+
+// main() function
+QTEST_MAIN(UnitTestCxeEngineSymbian);