camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxecameradevice/unittest_cxecameradevice.cpp
branchRCL_3
changeset 23 61bc0f252b2b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxecameradevice/unittest_cxecameradevice.cpp	Tue Aug 31 15:03:46 2010 +0300
@@ -0,0 +1,201 @@
+/*
+* 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 "unittest_cxecameradevice.h"
+
+#include <QTest>
+#include <QSignalSpy>
+#include <ECamOrientationCustomInterface2.h>
+
+#include "cxecameradevice.h"
+#include "cxedummycamera.h"
+#include "cxetestutils.h"
+
+UnitTestCxeCameraDevice::UnitTestCxeCameraDevice()
+: mCameraDevice(NULL)
+{
+    qRegisterMetaType<CxeError::Id>("CxeError::Id");
+}
+
+
+UnitTestCxeCameraDevice::~UnitTestCxeCameraDevice()
+{
+    cleanup();
+}
+
+
+void UnitTestCxeCameraDevice::init()
+{
+    mCameraDevice = new CxeCameraDevice;
+
+    // check that the getters return default values after construction
+    QVERIFY(mCameraDevice->camera() == NULL);
+    QVERIFY(mCameraDevice->advancedSettings() == NULL);
+    QVERIFY(mCameraDevice->imageProcessor() == NULL);
+    QVERIFY(mCameraDevice->cameraOrientation() == NULL);
+    QVERIFY(mCameraDevice->cameraSnapshot() == NULL);
+}
+
+void UnitTestCxeCameraDevice::cleanup()
+{
+    delete mCameraDevice;
+    mCameraDevice = NULL;
+}
+
+void UnitTestCxeCameraDevice::testNewCamera()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    CCamera *camera = NULL;
+    CCamera::CCameraAdvancedSettings *advancedSettings = NULL;
+    CCamera::CCameraImageProcessing * imageProcessor = NULL;
+    MCameraOrientation *cameraOrientation = NULL;
+    CxeError::Id error = CxeError::None;
+
+    // test newCamera when camera is not set
+    error = mCameraDevice->newCamera(Cxe::PrimaryCameraIndex, this);
+
+    camera = mCameraDevice->camera();
+    advancedSettings = mCameraDevice->advancedSettings();
+    imageProcessor = mCameraDevice->imageProcessor();
+    cameraOrientation = mCameraDevice->cameraOrientation();
+
+    QCOMPARE(error,CxeError::None);
+    QVERIFY(camera);
+    QVERIFY(advancedSettings);
+    QVERIFY(imageProcessor);
+    QVERIFY(mCameraDevice->cameraSnapshot());
+    QVERIFY(cameraOrientation == camera->CustomInterface(KCameraOrientationUid));
+
+    // test newCamera when camera is set
+    error = mCameraDevice->newCamera(Cxe::SecondaryCameraIndex, this);
+    QVERIFY(mCameraDevice->camera());
+    QVERIFY(mCameraDevice->camera() != camera);
+    QCOMPARE(error,CxeError::None);
+
+    camera = mCameraDevice->camera();
+    // test newCamera with NULL as observer
+    error = mCameraDevice->newCamera(Cxe::PrimaryCameraIndex, NULL);
+    QVERIFY(mCameraDevice->camera());
+    QVERIFY(mCameraDevice->camera() != camera);
+    QCOMPARE(error,CxeError::None);
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+void UnitTestCxeCameraDevice::testReleaseCamera()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    QSignalSpy spy(mCameraDevice, SIGNAL(prepareForRelease()));
+
+    // releaseCamera when camera is not set
+    // -> signal is not emitted
+    // -> camera is still NULL
+    mCameraDevice->releaseCamera();
+    QVERIFY(!CxeTestUtils::waitForSignal(spy, 1000));
+    QVERIFY(mCameraDevice->camera() == NULL);
+
+    mCameraDevice->newCamera(Cxe::PrimaryCameraIndex, this);
+
+    // releaseCamera when camera set
+    // -> signal is emitted
+    // -> camera stays the same (not deleted)
+    CCamera *camera = mCameraDevice->camera();
+    mCameraDevice->releaseCamera();
+    QVERIFY(CxeTestUtils::waitForSignal(spy, 1000));
+    QVERIFY(mCameraDevice->camera() == camera);
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+void UnitTestCxeCameraDevice::testDeleteCamera()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    QSignalSpy spy(mCameraDevice, SIGNAL(prepareForCameraDelete()));
+
+    // deleteCamera when camera is not set
+    mCameraDevice->deleteCamera();
+    QVERIFY(CxeTestUtils::waitForSignal(spy, 1000));
+    QVERIFY(mCameraDevice->advancedSettings() == NULL);
+    QVERIFY(mCameraDevice->imageProcessor() == NULL);
+    QVERIFY(mCameraDevice->cameraOrientation() == NULL);
+    QVERIFY(mCameraDevice->camera() == NULL);
+	QVERIFY(mCameraDevice->cameraSnapshot() == NULL);
+
+    mCameraDevice->newCamera(Cxe::PrimaryCameraIndex, this);
+
+    // deleteCamera when camera is set
+    mCameraDevice->deleteCamera();
+    QVERIFY(CxeTestUtils::waitForSignal(spy, 1000));
+    QVERIFY(mCameraDevice->advancedSettings() == NULL);
+    QVERIFY(mCameraDevice->imageProcessor() == NULL);
+    QVERIFY(mCameraDevice->cameraOrientation() == NULL);
+    QVERIFY(mCameraDevice->camera() == NULL);
+    QVERIFY(mCameraDevice->cameraSnapshot() == NULL);
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+void UnitTestCxeCameraDevice::testSetCamera()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    QSignalSpy spy(mCameraDevice, SIGNAL(cameraAllocated(CxeError::Id)));
+
+    // create new dummycamera for testing the input
+    CxeDummyCamera *camera = 0;
+    TRAPD(error, camera = CxeDummyCamera::NewL(*this, Cxe::PrimaryCameraIndex, 100, 2));
+    QCOMPARE(error, KErrNone);
+    QVERIFY(camera);
+
+    // test when camera is not set
+    mCameraDevice->setCamera(camera);
+    QVERIFY(mCameraDevice->camera() == camera);
+    QVERIFY(mCameraDevice->advancedSettings());
+    QVERIFY(mCameraDevice->imageProcessor());
+    QVERIFY(mCameraDevice->cameraOrientation() == camera->CustomInterface(KCameraOrientationUid));
+    QVERIFY(mCameraDevice->cameraSnapshot());
+    QVERIFY(CxeTestUtils::waitForSignal(spy, 1000));
+
+    // setting same camera twice
+    mCameraDevice->setCamera(camera);
+    QVERIFY(mCameraDevice->camera() == camera);
+    QVERIFY(mCameraDevice->advancedSettings());
+    QVERIFY(mCameraDevice->imageProcessor());
+    QVERIFY(mCameraDevice->cameraOrientation() == camera->CustomInterface(KCameraOrientationUid));
+    QVERIFY(mCameraDevice->cameraSnapshot());
+    QVERIFY(CxeTestUtils::waitForSignal(spy, 1000));
+
+    // set a new camera
+    CxeDummyCamera *camera2 = 0;
+    TRAPD(error2, camera2 = CxeDummyCamera::NewL(*this, Cxe::PrimaryCameraIndex, 100, 2));
+    QCOMPARE(error2,KErrNone);
+    QVERIFY(camera2 != 0);
+
+    mCameraDevice->setCamera(camera2);
+    QVERIFY(mCameraDevice->camera() == camera2);
+    QVERIFY(mCameraDevice->advancedSettings());
+    QVERIFY(mCameraDevice->imageProcessor());
+    QVERIFY(mCameraDevice->cameraSnapshot());
+    QVERIFY(mCameraDevice->cameraOrientation() == camera2->CustomInterface(KCameraOrientationUid));
+    QVERIFY(CxeTestUtils::waitForSignal(spy, 1000));
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+
+
+QTEST_MAIN(UnitTestCxeCameraDevice);