diff options
Diffstat (limited to 'tests/auto/unit/qcamera')
-rw-r--r-- | tests/auto/unit/qcamera/qcamera.pro | 9 | ||||
-rw-r--r-- | tests/auto/unit/qcamera/tst_qcamera.cpp | 2523 |
2 files changed, 0 insertions, 2532 deletions
diff --git a/tests/auto/unit/qcamera/qcamera.pro b/tests/auto/unit/qcamera/qcamera.pro deleted file mode 100644 index baca79829..000000000 --- a/tests/auto/unit/qcamera/qcamera.pro +++ /dev/null @@ -1,9 +0,0 @@ -CONFIG += testcase -TARGET = tst_qcamera - -QT += multimedia-private testlib - -include (../qmultimedia_common/mock.pri) -include (../qmultimedia_common/mockcamera.pri) - -SOURCES += tst_qcamera.cpp diff --git a/tests/auto/unit/qcamera/tst_qcamera.cpp b/tests/auto/unit/qcamera/tst_qcamera.cpp deleted file mode 100644 index 643b552f9..000000000 --- a/tests/auto/unit/qcamera/tst_qcamera.cpp +++ /dev/null @@ -1,2523 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//TESTED_COMPONENT=src/multimedia - -#include <QtTest/QtTest> -#include <QDebug> - -#include <qabstractvideosurface.h> -#include <qcameracontrol.h> -#include <qcameralockscontrol.h> -#include <qcameraexposurecontrol.h> -#include <qcameraflashcontrol.h> -#include <qcamerafocuscontrol.h> -#include <qcameraimagecapturecontrol.h> -#include <qimageencodercontrol.h> -#include <qcameraimageprocessingcontrol.h> -#include <qcameracapturebufferformatcontrol.h> -#include <qcameracapturedestinationcontrol.h> -#include <qmediaservice.h> -#include <qcamera.h> -#include <qcamerainfo.h> -#include <qcameraimagecapture.h> -#include <qvideorenderercontrol.h> - -#include "mockcameraservice.h" - -#include "mockmediaserviceprovider.h" -#include "mockvideosurface.h" -#include "mockvideorenderercontrol.h" -#include "mockvideowindowcontrol.h" - -QT_USE_NAMESPACE - - -class tst_QCamera: public QObject -{ - Q_OBJECT - -public slots: - void initTestCase(); - void init(); - void cleanup(); - -private slots: - void testSimpleCamera(); - void testSimpleCameraWhiteBalance(); - void testSimpleCameraExposure(); - void testSimpleCameraFocus(); - void testSimpleCameraCapture(); - void testSimpleCameraLock(); - void testSimpleCaptureDestination(); - void testSimpleCaptureFormat(); - - void testCameraWhiteBalance(); - void testCameraExposure(); - void testCameraFocus(); - void testCameraCapture(); - void testCameraCaptureMetadata(); - void testImageSettings(); - void testViewfinderSettings(); - void testViewfinderSettingsChange(); - void testSupportedViewfinderSettings_data(); - void testSupportedViewfinderSettings(); - void testSupportedViewfinderResolutions_data(); - void testSupportedViewfinderResolutions(); - void testSupportedViewfinderFrameRateRanges_data(); - void testSupportedViewfinderFrameRateRanges(); - void testSupportedViewfinderPixelFormats_data(); - void testSupportedViewfinderPixelFormats(); - void testCameraLock(); - void testCameraLockCancel(); - void testCameraEncodingProperyChange(); - void testCaptureDestination(); - void testCaptureFormat(); - - void testConstructor(); - void testCaptureMode(); - void testIsCaptureModeSupported(); - void testRequestedLocks(); - void testSupportedLocks(); - void testQCameraIsAvailable(); - void testQCameraIsNotAvailable(); - void testSearchAndLockWithLockTypes(); - void testSetCaptureMode(); - void testUnlockWithType(); - void testCaptureModeChangedSignal(); - void testLockStatusChangedWithTypesSignal(); - void testErrorSignal(); - void testError(); - void testErrorString(); - void testStatus(); - void testLockType(); - void testLockChangeReason(); - - - // Test cases to for QCameraFocus - void testCameraFocusIsAvailable(); - void testFocusModes(); - void testOpticalAndDigitalZoomChanged(); - void testMaxOpticalZoomChangedSignal(); - void testMaxDigitalZoomChangedSignal(); - void testfocusZonesChangedSignal(); - - // Test cases for QCameraControl class. - void testCameraControl(); - void testCaptureModeChanged_signal(); - void testEnumsOfQCameraControl(); - - // Test case for QCameraImageProcessing class - void testContrast(); - void testDenoisingLevel(); - void testIsAvailable(); - void testSaturation(); - void testSharpeningLevel(); - void testEnumOfQCameraImageProcessing(); - - void testSetVideoOutput(); - void testSetVideoOutputNoService(); - void testSetVideoOutputNoControl(); - void testSetVideoOutputDestruction(); - - void testEnumDebug(); - - // constructor for QCameraImageProceesing - void testImageProcessingControl(); - - // Signals test cases for QCameraExposure - void testSignalApertureChanged(); - void testSignalExposureCompensationChanged(); - void testSignalIsoSensitivityChanged(); - void testSignalShutterSpeedChanged(); - void testSignalFlashReady(); - - // test constructor - void testExposureControlConstructor(); - -private: - MockSimpleCameraService *mockSimpleCameraService; - MockCameraService *mockCameraService; - MockMediaServiceProvider *provider; -}; - -Q_DECLARE_METATYPE(QCamera::FrameRateRange) - -void tst_QCamera::initTestCase() -{ - qRegisterMetaType<QCamera::FrameRateRange>("FrameRateRange"); -} - -void tst_QCamera::init() -{ - provider = new MockMediaServiceProvider; - mockSimpleCameraService = new MockSimpleCameraService; - mockCameraService = new MockCameraService; - - provider->service = mockCameraService; - QMediaServiceProvider::setDefaultServiceProvider(provider); -} - -void tst_QCamera::cleanup() -{ - delete provider; - delete mockCameraService; - delete mockSimpleCameraService; -} - -void tst_QCamera::testSimpleCamera() -{ - provider->service = mockSimpleCameraService; - QCamera camera; - QCOMPARE(camera.service(), (QMediaService*)mockSimpleCameraService); - - QCOMPARE(camera.state(), QCamera::UnloadedState); - camera.start(); - QCOMPARE(camera.state(), QCamera::ActiveState); - camera.stop(); - QCOMPARE(camera.state(), QCamera::LoadedState); - camera.unload(); - QCOMPARE(camera.state(), QCamera::UnloadedState); - camera.load(); - QCOMPARE(camera.state(), QCamera::LoadedState); -} - -void tst_QCamera::testSimpleCameraWhiteBalance() -{ - provider->service = mockSimpleCameraService; - QCamera camera; - - //only WhiteBalanceAuto is supported - QVERIFY(!camera.imageProcessing()->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceAuto)); - QVERIFY(!camera.imageProcessing()->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceCloudy)); - QCOMPARE(camera.imageProcessing()->whiteBalanceMode(), QCameraImageProcessing::WhiteBalanceAuto); - camera.imageProcessing()->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceCloudy); - QCOMPARE(camera.imageProcessing()->whiteBalanceMode(), QCameraImageProcessing::WhiteBalanceAuto); - QCOMPARE(camera.imageProcessing()->manualWhiteBalance()+1.0, 1.0); - camera.imageProcessing()->setManualWhiteBalance(5000); - QCOMPARE(camera.imageProcessing()->manualWhiteBalance()+1.0, 1.0); -} - -void tst_QCamera::testSimpleCameraExposure() -{ - provider->service = mockSimpleCameraService; - QCamera camera; - QCameraExposure *cameraExposure = camera.exposure(); - QVERIFY(cameraExposure != 0); - - QVERIFY(!cameraExposure->isExposureModeSupported(QCameraExposure::ExposureAuto)); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureAuto); - cameraExposure->setExposureMode(QCameraExposure::ExposureManual);//should be ignored - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureAuto); - - QVERIFY(!cameraExposure->isFlashModeSupported(QCameraExposure::FlashOff)); - QCOMPARE(cameraExposure->flashMode(), QCameraExposure::FlashOff); - QCOMPARE(cameraExposure->isFlashReady(), false); - cameraExposure->setFlashMode(QCameraExposure::FlashOn); - QCOMPARE(cameraExposure->flashMode(), QCameraExposure::FlashOff); - - QVERIFY(!cameraExposure->isMeteringModeSupported(QCameraExposure::MeteringAverage)); - QVERIFY(!cameraExposure->isMeteringModeSupported(QCameraExposure::MeteringSpot)); - QVERIFY(!cameraExposure->isMeteringModeSupported(QCameraExposure::MeteringMatrix)); - QCOMPARE(cameraExposure->meteringMode(), QCameraExposure::MeteringMatrix); - cameraExposure->setMeteringMode(QCameraExposure::MeteringSpot); - QCOMPARE(cameraExposure->meteringMode(), QCameraExposure::MeteringMatrix); - - QCOMPARE(cameraExposure->spotMeteringPoint(), QPointF()); - cameraExposure->setSpotMeteringPoint(QPointF(0.5f, 0.5f)); - QCOMPARE(cameraExposure->spotMeteringPoint(), QPointF()); - - QCOMPARE(cameraExposure->exposureCompensation(), 0.0); - cameraExposure->setExposureCompensation(2.0); - QCOMPARE(cameraExposure->exposureCompensation(), 0.0); - - QCOMPARE(cameraExposure->isoSensitivity(), -1); - QVERIFY(cameraExposure->supportedIsoSensitivities().isEmpty()); - cameraExposure->setManualIsoSensitivity(100); - QCOMPARE(cameraExposure->isoSensitivity(), -1); - cameraExposure->setAutoIsoSensitivity(); - QCOMPARE(cameraExposure->isoSensitivity(), -1); - - QVERIFY(cameraExposure->aperture() < 0); - QVERIFY(cameraExposure->supportedApertures().isEmpty()); - cameraExposure->setAutoAperture(); - QVERIFY(cameraExposure->aperture() < 0); - cameraExposure->setManualAperture(5.6); - QVERIFY(cameraExposure->aperture() < 0); - - QVERIFY(cameraExposure->shutterSpeed() < 0); - QVERIFY(cameraExposure->supportedShutterSpeeds().isEmpty()); - cameraExposure->setAutoShutterSpeed(); - QVERIFY(cameraExposure->shutterSpeed() < 0); - cameraExposure->setManualShutterSpeed(1/128.0); - QVERIFY(cameraExposure->shutterSpeed() < 0); -} - -void tst_QCamera::testSimpleCameraFocus() -{ - provider->service = mockSimpleCameraService; - QCamera camera; - - QCameraFocus *cameraFocus = camera.focus(); - QVERIFY(cameraFocus != 0); - - QVERIFY(!cameraFocus->isFocusModeSupported(QCameraFocus::AutoFocus)); - QVERIFY(!cameraFocus->isFocusModeSupported(QCameraFocus::ContinuousFocus)); - QVERIFY(!cameraFocus->isFocusModeSupported(QCameraFocus::InfinityFocus)); - - QCOMPARE(cameraFocus->focusMode(), QCameraFocus::AutoFocus); - QTest::ignoreMessage(QtWarningMsg, "Focus mode selection is not supported"); - cameraFocus->setFocusMode(QCameraFocus::ContinuousFocus); - QCOMPARE(cameraFocus->focusMode(), QCameraFocus::AutoFocus); - - QCOMPARE(cameraFocus->maximumOpticalZoom(), 1.0); - QCOMPARE(cameraFocus->maximumDigitalZoom(), 1.0); - QCOMPARE(cameraFocus->opticalZoom(), 1.0); - QCOMPARE(cameraFocus->digitalZoom(), 1.0); - - QTest::ignoreMessage(QtWarningMsg, "The camera doesn't support zooming."); - cameraFocus->zoomTo(100.0, 100.0); - QCOMPARE(cameraFocus->opticalZoom(), 1.0); - QCOMPARE(cameraFocus->digitalZoom(), 1.0); - - - QVERIFY(!cameraFocus->isFocusPointModeSupported(QCameraFocus::FocusPointAuto)); - QCOMPARE(cameraFocus->focusPointMode(), QCameraFocus::FocusPointAuto); - - QTest::ignoreMessage(QtWarningMsg, "Focus points mode selection is not supported"); - cameraFocus->setFocusPointMode( QCameraFocus::FocusPointCenter ); - QCOMPARE(cameraFocus->focusPointMode(), QCameraFocus::FocusPointAuto); - - QCOMPARE(cameraFocus->customFocusPoint(), QPointF(0.5, 0.5)); - QTest::ignoreMessage(QtWarningMsg, "Focus points selection is not supported"); - cameraFocus->setCustomFocusPoint(QPointF(1.0, 1.0)); - QCOMPARE(cameraFocus->customFocusPoint(), QPointF(0.5, 0.5)); -} - -void tst_QCamera::testSimpleCameraCapture() -{ - provider->service = mockSimpleCameraService; - QCamera camera; - QCameraImageCapture imageCapture(&camera); - - QVERIFY(!imageCapture.isReadyForCapture()); - QVERIFY(!imageCapture.isAvailable()); - - QCOMPARE(imageCapture.error(), QCameraImageCapture::NoError); - QVERIFY(imageCapture.errorString().isEmpty()); - - QSignalSpy errorSignal(&imageCapture, SIGNAL(error(int,QCameraImageCapture::Error,QString))); - imageCapture.capture(QString::fromLatin1("/dev/null")); - QCOMPARE(errorSignal.size(), 1); - QCOMPARE(imageCapture.error(), QCameraImageCapture::NotSupportedFeatureError); - QVERIFY(!imageCapture.errorString().isEmpty()); -} - -void tst_QCamera::testSimpleCameraLock() -{ - provider->service = mockSimpleCameraService; - QCamera camera; - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockExposure), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockFocus), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockWhiteBalance), QCamera::Unlocked); - - QSignalSpy lockedSignal(&camera, SIGNAL(locked())); - QSignalSpy lockFailedSignal(&camera, SIGNAL(lockFailed())); - QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); - - camera.searchAndLock(); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockExposure), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockFocus), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockWhiteBalance), QCamera::Unlocked); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 0); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - - camera.unlock(); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockExposure), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockFocus), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockWhiteBalance), QCamera::Unlocked); - - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 0); -} - -void tst_QCamera::testSimpleCaptureDestination() -{ - provider->service = mockSimpleCameraService; - QCamera camera; - QCameraImageCapture imageCapture(&camera); - - QVERIFY(imageCapture.isCaptureDestinationSupported(QCameraImageCapture::CaptureToFile)); - QVERIFY(!imageCapture.isCaptureDestinationSupported(QCameraImageCapture::CaptureToBuffer)); - QVERIFY(!imageCapture.isCaptureDestinationSupported( - QCameraImageCapture::CaptureToBuffer | QCameraImageCapture::CaptureToFile)); - - QCOMPARE(imageCapture.captureDestination(), QCameraImageCapture::CaptureToFile); - imageCapture.setCaptureDestination(QCameraImageCapture::CaptureToBuffer); - QCOMPARE(imageCapture.captureDestination(), QCameraImageCapture::CaptureToFile); -} - -void tst_QCamera::testSimpleCaptureFormat() -{ - provider->service = mockSimpleCameraService; - QCamera camera; - QCameraImageCapture imageCapture(&camera); - - QCOMPARE(imageCapture.bufferFormat(), QVideoFrame::Format_Invalid); - QVERIFY(imageCapture.supportedBufferFormats().isEmpty()); - - imageCapture.setBufferFormat(QVideoFrame::Format_AdobeDng); - QCOMPARE(imageCapture.bufferFormat(), QVideoFrame::Format_Invalid); -} - -void tst_QCamera::testCaptureDestination() -{ - QCamera camera; - QCameraImageCapture imageCapture(&camera); - - QVERIFY(imageCapture.isCaptureDestinationSupported(QCameraImageCapture::CaptureToFile)); - QVERIFY(imageCapture.isCaptureDestinationSupported(QCameraImageCapture::CaptureToBuffer)); - QVERIFY(!imageCapture.isCaptureDestinationSupported( - QCameraImageCapture::CaptureToBuffer | QCameraImageCapture::CaptureToFile)); - - QSignalSpy destinationChangedSignal(&imageCapture, SIGNAL(captureDestinationChanged(QCameraImageCapture::CaptureDestinations))); - - QCOMPARE(imageCapture.captureDestination(), QCameraImageCapture::CaptureToFile); - imageCapture.setCaptureDestination(QCameraImageCapture::CaptureToBuffer); - QCOMPARE(imageCapture.captureDestination(), QCameraImageCapture::CaptureToBuffer); - QCOMPARE(destinationChangedSignal.size(), 1); - QCOMPARE(destinationChangedSignal.first().first().value<QCameraImageCapture::CaptureDestinations>(), - QCameraImageCapture::CaptureToBuffer); - - //not supported combination - imageCapture.setCaptureDestination(QCameraImageCapture::CaptureToBuffer | QCameraImageCapture::CaptureToFile); - QCOMPARE(imageCapture.captureDestination(), QCameraImageCapture::CaptureToBuffer); - QCOMPARE(destinationChangedSignal.size(), 1); -} - -void tst_QCamera::testCaptureFormat() -{ - QCamera camera; - QCameraImageCapture imageCapture(&camera); - - QSignalSpy formatChangedSignal(&imageCapture, SIGNAL(bufferFormatChanged(QVideoFrame::PixelFormat))); - - QCOMPARE(imageCapture.bufferFormat(), QVideoFrame::Format_Jpeg); - QCOMPARE(imageCapture.supportedBufferFormats().size(), 3); - - imageCapture.setBufferFormat(QVideoFrame::Format_AdobeDng); - QCOMPARE(imageCapture.bufferFormat(), QVideoFrame::Format_AdobeDng); - - QCOMPARE(formatChangedSignal.size(), 1); - QCOMPARE(formatChangedSignal.first().first().value<QVideoFrame::PixelFormat>(), - QVideoFrame::Format_AdobeDng); - - imageCapture.setBufferFormat(QVideoFrame::Format_Y16); - QCOMPARE(imageCapture.bufferFormat(), QVideoFrame::Format_AdobeDng); - - QCOMPARE(formatChangedSignal.size(), 1); -} - - -void tst_QCamera::testCameraCapture() -{ - QCamera camera; - QCameraImageCapture imageCapture(&camera); - - QVERIFY(!imageCapture.isReadyForCapture()); - - QSignalSpy capturedSignal(&imageCapture, SIGNAL(imageCaptured(int,QImage))); - QSignalSpy errorSignal(&imageCapture, SIGNAL(error(int,QCameraImageCapture::Error,QString))); - - imageCapture.capture(QString::fromLatin1("/dev/null")); - QCOMPARE(capturedSignal.size(), 0); - QCOMPARE(errorSignal.size(), 1); - QCOMPARE(imageCapture.error(), QCameraImageCapture::NotReadyError); - - errorSignal.clear(); - - camera.start(); - QVERIFY(imageCapture.isReadyForCapture()); - QCOMPARE(errorSignal.size(), 0); - - imageCapture.capture(QString::fromLatin1("/dev/null")); - - QTRY_COMPARE(capturedSignal.size(), 1); - QCOMPARE(errorSignal.size(), 0); - QCOMPARE(imageCapture.error(), QCameraImageCapture::NoError); -} - -void tst_QCamera::testCameraCaptureMetadata() -{ - QCamera camera; - QCameraImageCapture imageCapture(&camera); - - QSignalSpy metadataSignal(&imageCapture, SIGNAL(imageMetadataAvailable(int,QString,QVariant))); - QSignalSpy savedSignal(&imageCapture, SIGNAL(imageSaved(int,QString))); - - camera.start(); - int id = imageCapture.capture(QString::fromLatin1("/dev/null")); - - QTRY_COMPARE(savedSignal.size(), 1); - - QCOMPARE(metadataSignal.size(), 3); - - QVariantList metadata = metadataSignal[0]; - QCOMPARE(metadata[0].toInt(), id); - QCOMPARE(metadata[1].toString(), QMediaMetaData::FocalLengthIn35mmFilm); - QCOMPARE(metadata[2].value<QVariant>().toInt(), 50); - - metadata = metadataSignal[1]; - QCOMPARE(metadata[0].toInt(), id); - QCOMPARE(metadata[1].toString(), QMediaMetaData::DateTimeOriginal); - QDateTime captureTime = metadata[2].value<QVariant>().value<QDateTime>(); - const qint64 dt = captureTime.secsTo(QDateTime::currentDateTime()); - QVERIFY2(qAbs(dt) < 5, QByteArray::number(dt).constData()); // it should not take more than 5 seconds for signal to arrive here - - metadata = metadataSignal[2]; - QCOMPARE(metadata[0].toInt(), id); - QCOMPARE(metadata[1].toString(), QLatin1String("Answer to the Ultimate Question of Life, the Universe, and Everything")); - QCOMPARE(metadata[2].value<QVariant>().toInt(), 42); -} - - -void tst_QCamera::testCameraWhiteBalance() -{ - QSet<QCameraImageProcessing::WhiteBalanceMode> whiteBalanceModes; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceAuto; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceFlash; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceTungsten; - - MockCameraService service; - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceFlash); - service.mockImageProcessingControl->setSupportedWhiteBalanceModes(whiteBalanceModes); - service.mockImageProcessingControl->setParameter( - QCameraImageProcessingControl::ColorTemperature, - QVariant(34)); - - provider->service = &service; - - QCamera camera; - QCameraImageProcessing *cameraImageProcessing = camera.imageProcessing(); - - QCOMPARE(cameraImageProcessing->whiteBalanceMode(), QCameraImageProcessing::WhiteBalanceFlash); - QVERIFY(camera.imageProcessing()->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceAuto)); - QVERIFY(camera.imageProcessing()->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceFlash)); - QVERIFY(camera.imageProcessing()->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceTungsten)); - QVERIFY(!camera.imageProcessing()->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceCloudy)); - - cameraImageProcessing->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceTungsten); - QCOMPARE(cameraImageProcessing->whiteBalanceMode(), QCameraImageProcessing::WhiteBalanceTungsten); - - cameraImageProcessing->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceManual); - QCOMPARE(cameraImageProcessing->whiteBalanceMode(), QCameraImageProcessing::WhiteBalanceManual); - QCOMPARE(cameraImageProcessing->manualWhiteBalance(), 34.0); - - cameraImageProcessing->setManualWhiteBalance(432.0); - QCOMPARE(cameraImageProcessing->manualWhiteBalance(), 432.0); -} - -void tst_QCamera::testCameraExposure() -{ - QCamera camera; - - QCameraExposure *cameraExposure = camera.exposure(); - QVERIFY(cameraExposure != 0); - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureAuto)); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureAuto); - - // Test Cases For QCameraExposure - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureManual)); - cameraExposure->setExposureMode(QCameraExposure::ExposureManual); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureManual); - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureNight)); - cameraExposure->setExposureMode(QCameraExposure::ExposureNight); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureNight); - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureBacklight)); - cameraExposure->setExposureMode(QCameraExposure::ExposureBacklight); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureBacklight); - - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureSpotlight )); - cameraExposure->setExposureMode(QCameraExposure::ExposureSpotlight); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureSpotlight); - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureSports )); - cameraExposure->setExposureMode(QCameraExposure::ExposureSports); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureSports); - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureSnow )); - cameraExposure->setExposureMode(QCameraExposure::ExposureSnow); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureSnow); - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureBeach )); - cameraExposure->setExposureMode(QCameraExposure::ExposureBeach); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureBeach); - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureLargeAperture )); - cameraExposure->setExposureMode(QCameraExposure::ExposureLargeAperture); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureLargeAperture); - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureSmallAperture )); - cameraExposure->setExposureMode(QCameraExposure::ExposureSmallAperture); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureSmallAperture); - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposurePortrait )); - cameraExposure->setExposureMode(QCameraExposure::ExposurePortrait); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposurePortrait); - - QVERIFY(cameraExposure->isExposureModeSupported(QCameraExposure::ExposureModeVendor )); - cameraExposure->setExposureMode(QCameraExposure::ExposureModeVendor); - QCOMPARE(cameraExposure->exposureMode(), QCameraExposure::ExposureModeVendor); - - - cameraExposure->setFlashMode(QCameraExposure::FlashAuto); - QCOMPARE(cameraExposure->flashMode(), QCameraExposure::FlashAuto); - QCOMPARE(cameraExposure->isFlashReady(), true); - cameraExposure->setFlashMode(QCameraExposure::FlashRedEyeReduction); - QCOMPARE(cameraExposure->flashMode(), QCameraExposure::FlashRedEyeReduction); - cameraExposure->setFlashMode(QCameraExposure::FlashOn); - QCOMPARE(cameraExposure->flashMode(), QCameraExposure::FlashOn); - cameraExposure->setFlashMode(QCameraExposure::FlashFill); - QCOMPARE(cameraExposure->flashMode(), QCameraExposure::FlashFill); - cameraExposure->setFlashMode(QCameraExposure::FlashTorch); - QCOMPARE(cameraExposure->flashMode(), QCameraExposure::FlashTorch); - cameraExposure->setFlashMode(QCameraExposure::FlashSlowSyncFrontCurtain); - QCOMPARE(cameraExposure->flashMode(), QCameraExposure::FlashSlowSyncFrontCurtain); - - QVERIFY(!cameraExposure->isMeteringModeSupported(QCameraExposure::MeteringAverage)); - QVERIFY(cameraExposure->isMeteringModeSupported(QCameraExposure::MeteringSpot)); - QVERIFY(cameraExposure->isMeteringModeSupported(QCameraExposure::MeteringMatrix)); - - cameraExposure->setMeteringMode(QCameraExposure::MeteringMatrix); - QCOMPARE(cameraExposure->meteringMode(), QCameraExposure::MeteringMatrix); - - //MeteringAverage is not supported, metering mode should not be changed - cameraExposure->setMeteringMode(QCameraExposure::MeteringAverage); - QCOMPARE(cameraExposure->meteringMode(), QCameraExposure::MeteringMatrix); - - cameraExposure->setMeteringMode(QCameraExposure::MeteringSpot); - QCOMPARE(cameraExposure->meteringMode(), QCameraExposure::MeteringSpot); - - cameraExposure->setSpotMeteringPoint(QPointF(0.5f, 0.25f)); - QCOMPARE(cameraExposure->spotMeteringPoint(), QPointF(0.5f, 0.25f)); - cameraExposure->setSpotMeteringPoint(QPointF(0.25f, 56.3f)); - QCOMPARE(cameraExposure->spotMeteringPoint(), QPointF(0.5f, 0.25f)); - cameraExposure->setSpotMeteringPoint(QPointF(0, 0)); - QCOMPARE(cameraExposure->spotMeteringPoint(), QPointF(0, 0)); - cameraExposure->setSpotMeteringPoint(QPointF(1, 1)); - QCOMPARE(cameraExposure->spotMeteringPoint(), QPointF(1, 1)); - - QCOMPARE(cameraExposure->exposureCompensation(), 0.0); - cameraExposure->setExposureCompensation(2.0); - QCOMPARE(cameraExposure->exposureCompensation(), 2.0); - - int minIso = cameraExposure->supportedIsoSensitivities().first(); - int maxIso = cameraExposure->supportedIsoSensitivities().last(); - QVERIFY(cameraExposure->isoSensitivity() > 0); - QCOMPARE(cameraExposure->requestedIsoSensitivity(), -1); - QVERIFY(minIso > 0); - QVERIFY(maxIso > 0); - cameraExposure->setManualIsoSensitivity(minIso); - QCOMPARE(cameraExposure->isoSensitivity(), minIso); - cameraExposure->setManualIsoSensitivity(maxIso*10); - QCOMPARE(cameraExposure->isoSensitivity(), maxIso); - QCOMPARE(cameraExposure->requestedIsoSensitivity(), maxIso*10); - - cameraExposure->setManualIsoSensitivity(-10); - QCOMPARE(cameraExposure->isoSensitivity(), minIso); - QCOMPARE(cameraExposure->requestedIsoSensitivity(), -10); - cameraExposure->setAutoIsoSensitivity(); - QCOMPARE(cameraExposure->isoSensitivity(), 100); - QCOMPARE(cameraExposure->requestedIsoSensitivity(), -1); - - QCOMPARE(cameraExposure->requestedAperture(), -1.0); - qreal minAperture = cameraExposure->supportedApertures().first(); - qreal maxAperture = cameraExposure->supportedApertures().last(); - QVERIFY(minAperture > 0); - QVERIFY(maxAperture > 0); - QVERIFY(cameraExposure->aperture() >= minAperture); - QVERIFY(cameraExposure->aperture() <= maxAperture); - - cameraExposure->setAutoAperture(); - QVERIFY(cameraExposure->aperture() >= minAperture); - QVERIFY(cameraExposure->aperture() <= maxAperture); - QCOMPARE(cameraExposure->requestedAperture(), -1.0); - - cameraExposure->setManualAperture(0); - QCOMPARE(cameraExposure->aperture(), minAperture); - QCOMPARE(cameraExposure->requestedAperture()+1.0, 1.0); - - cameraExposure->setManualAperture(10000); - QCOMPARE(cameraExposure->aperture(), maxAperture); - QCOMPARE(cameraExposure->requestedAperture(), 10000.0); - - cameraExposure->setAutoAperture(); - QCOMPARE(cameraExposure->requestedAperture(), -1.0); - - QCOMPARE(cameraExposure->requestedShutterSpeed(), -1.0); - qreal minShutterSpeed = cameraExposure->supportedShutterSpeeds().first(); - qreal maxShutterSpeed = cameraExposure->supportedShutterSpeeds().last(); - QVERIFY(minShutterSpeed > 0); - QVERIFY(maxShutterSpeed > 0); - QVERIFY(cameraExposure->shutterSpeed() >= minShutterSpeed); - QVERIFY(cameraExposure->shutterSpeed() <= maxShutterSpeed); - - cameraExposure->setAutoShutterSpeed(); - QVERIFY(cameraExposure->shutterSpeed() >= minShutterSpeed); - QVERIFY(cameraExposure->shutterSpeed() <= maxShutterSpeed); - QCOMPARE(cameraExposure->requestedShutterSpeed(), -1.0); - - cameraExposure->setManualShutterSpeed(0); - QCOMPARE(cameraExposure->shutterSpeed(), minShutterSpeed); - QCOMPARE(cameraExposure->requestedShutterSpeed()+1.0, 1.0); - - cameraExposure->setManualShutterSpeed(10000); - QCOMPARE(cameraExposure->shutterSpeed(), maxShutterSpeed); - QCOMPARE(cameraExposure->requestedShutterSpeed(), 10000.0); - - cameraExposure->setAutoShutterSpeed(); - QCOMPARE(cameraExposure->requestedShutterSpeed(), -1.0); -} - -void tst_QCamera::testCameraFocus() -{ - QCamera camera; - - QCameraFocus *cameraFocus = camera.focus(); - QVERIFY(cameraFocus != 0); - - QVERIFY(cameraFocus->isFocusModeSupported(QCameraFocus::AutoFocus)); - QVERIFY(cameraFocus->isFocusModeSupported(QCameraFocus::ContinuousFocus)); - QVERIFY(!cameraFocus->isFocusModeSupported(QCameraFocus::InfinityFocus)); - - QCOMPARE(cameraFocus->focusMode(), QCameraFocus::AutoFocus); - cameraFocus->setFocusMode(QCameraFocus::ManualFocus); - QCOMPARE(cameraFocus->focusMode(), QCameraFocus::AutoFocus); - cameraFocus->setFocusMode(QCameraFocus::ContinuousFocus); - QCOMPARE(cameraFocus->focusMode(), QCameraFocus::ContinuousFocus); - - QVERIFY(cameraFocus->maximumOpticalZoom() >= 1.0); - QVERIFY(cameraFocus->maximumDigitalZoom() >= 1.0); - QCOMPARE(cameraFocus->opticalZoom(), 1.0); - QCOMPARE(cameraFocus->digitalZoom(), 1.0); - cameraFocus->zoomTo(0.5, 1.0); - QCOMPARE(cameraFocus->opticalZoom(), 1.0); - QCOMPARE(cameraFocus->digitalZoom(), 1.0); - cameraFocus->zoomTo(2.0, 0.5); - QCOMPARE(cameraFocus->opticalZoom(), 2.0); - QCOMPARE(cameraFocus->digitalZoom(), 1.0); - cameraFocus->zoomTo(2.0, 2.5); - QCOMPARE(cameraFocus->opticalZoom(), 2.0); - QCOMPARE(cameraFocus->digitalZoom(), 2.5); - cameraFocus->zoomTo(2000000.0, 1000000.0); - QVERIFY(qFuzzyCompare(cameraFocus->opticalZoom(), cameraFocus->maximumOpticalZoom())); - QVERIFY(qFuzzyCompare(cameraFocus->digitalZoom(), cameraFocus->maximumDigitalZoom())); - - QVERIFY(cameraFocus->isFocusPointModeSupported(QCameraFocus::FocusPointAuto)); - QVERIFY(cameraFocus->isFocusPointModeSupported(QCameraFocus::FocusPointCenter)); - QVERIFY(cameraFocus->isFocusPointModeSupported(QCameraFocus::FocusPointCustom)); - QCOMPARE(cameraFocus->focusPointMode(), QCameraFocus::FocusPointAuto); - - cameraFocus->setFocusPointMode( QCameraFocus::FocusPointCenter ); - QCOMPARE(cameraFocus->focusPointMode(), QCameraFocus::FocusPointCenter); - - cameraFocus->setFocusPointMode( QCameraFocus::FocusPointFaceDetection ); - QCOMPARE(cameraFocus->focusPointMode(), QCameraFocus::FocusPointCenter); - - QCOMPARE(cameraFocus->customFocusPoint(), QPointF(0.5, 0.5)); - cameraFocus->setCustomFocusPoint(QPointF(1.0, 1.0)); - QCOMPARE(cameraFocus->customFocusPoint(), QPointF(1.0, 1.0)); -} - -void tst_QCamera::testImageSettings() -{ - QImageEncoderSettings settings; - QVERIFY(settings.isNull()); - QVERIFY(settings == QImageEncoderSettings()); - - QCOMPARE(settings.codec(), QString()); - settings.setCodec(QLatin1String("codecName")); - QCOMPARE(settings.codec(), QLatin1String("codecName")); - QVERIFY(!settings.isNull()); - QVERIFY(settings != QImageEncoderSettings()); - - settings = QImageEncoderSettings(); - QCOMPARE(settings.quality(), QMultimedia::NormalQuality); - settings.setQuality(QMultimedia::HighQuality); - QCOMPARE(settings.quality(), QMultimedia::HighQuality); - QVERIFY(!settings.isNull()); - - settings = QImageEncoderSettings(); - QCOMPARE(settings.resolution(), QSize()); - settings.setResolution(QSize(320,240)); - QCOMPARE(settings.resolution(), QSize(320,240)); - settings.setResolution(800,600); - QCOMPARE(settings.resolution(), QSize(800,600)); - QVERIFY(!settings.isNull()); - - settings = QImageEncoderSettings(); - settings.setEncodingOption(QLatin1String("encoderOption"), QVariant(1)); - QCOMPARE(settings.encodingOption(QLatin1String("encoderOption")), QVariant(1)); - QVariantMap options; - options.insert(QLatin1String("encoderOption"), QVariant(1)); - QCOMPARE(settings.encodingOptions(), options); - options.insert(QLatin1String("encoderOption2"), QVariant(2)); - options.remove(QLatin1String("encoderOption")); - settings.setEncodingOptions(options); - QCOMPARE(settings.encodingOption(QLatin1String("encoderOption")), QVariant()); - QCOMPARE(settings.encodingOption(QLatin1String("encoderOption2")), QVariant(2)); - QVERIFY(!settings.isNull()); - QVERIFY(settings != QImageEncoderSettings()); - - settings = QImageEncoderSettings(); - QVERIFY(settings.isNull()); - QCOMPARE(settings.codec(), QString()); - QCOMPARE(settings.quality(), QMultimedia::NormalQuality); - QCOMPARE(settings.resolution(), QSize()); - QVERIFY(settings.encodingOptions().isEmpty()); - - { - QImageEncoderSettings settings1; - QImageEncoderSettings settings2; - QCOMPARE(settings2, settings1); - - settings2 = settings1; - QCOMPARE(settings2, settings1); - QVERIFY(settings2.isNull()); - - settings1.setQuality(QMultimedia::HighQuality); - - QVERIFY(settings2.isNull()); - QVERIFY(!settings1.isNull()); - QVERIFY(settings1 != settings2); - } - - { - QImageEncoderSettings settings1; - QImageEncoderSettings settings2(settings1); - QCOMPARE(settings2, settings1); - - settings2 = settings1; - QCOMPARE(settings2, settings1); - QVERIFY(settings2.isNull()); - - settings1.setQuality(QMultimedia::HighQuality); - - QVERIFY(settings2.isNull()); - QVERIFY(!settings1.isNull()); - QVERIFY(settings1 != settings2); - } - - QImageEncoderSettings settings1; - QImageEncoderSettings settings2; - - settings1 = QImageEncoderSettings(); - settings1.setResolution(800,600); - settings2 = QImageEncoderSettings(); - settings2.setResolution(QSize(800,600)); - QVERIFY(settings1 == settings2); - settings2.setResolution(QSize(400,300)); - QVERIFY(settings1 != settings2); - - settings1 = QImageEncoderSettings(); - settings1.setCodec("codec1"); - settings2 = QImageEncoderSettings(); - settings2.setCodec("codec1"); - QVERIFY(settings1 == settings2); - settings2.setCodec("codec2"); - QVERIFY(settings1 != settings2); - - settings1 = QImageEncoderSettings(); - settings1.setQuality(QMultimedia::NormalQuality); - settings2 = QImageEncoderSettings(); - settings2.setQuality(QMultimedia::NormalQuality); - QVERIFY(settings1 == settings2); - settings2.setQuality(QMultimedia::LowQuality); - QVERIFY(settings1 != settings2); - - settings1 = QImageEncoderSettings(); - settings1.setEncodingOption(QLatin1String("encoderOption"), QVariant(1)); - settings2 = QImageEncoderSettings(); - settings2.setEncodingOption(QLatin1String("encoderOption"), QVariant(1)); - QVERIFY(settings1 == settings2); - settings2.setEncodingOption(QLatin1String("encoderOption"), QVariant(2)); - QVERIFY(settings1 != settings2); -} - -void tst_QCamera::testViewfinderSettings() -{ - QCameraViewfinderSettings settings; - QVERIFY(settings.isNull()); - QVERIFY(settings == QCameraViewfinderSettings()); - - QCOMPARE(settings.resolution(), QSize()); - settings.setResolution(QSize(640, 480)); - QCOMPARE(settings.resolution(), QSize(640, 480)); - settings.setResolution(1280, 720); - QCOMPARE(settings.resolution(), QSize(1280, 720)); - QVERIFY(!settings.isNull()); - QVERIFY(settings != QCameraViewfinderSettings()); - - settings = QCameraViewfinderSettings(); - QVERIFY(qFuzzyIsNull(settings.minimumFrameRate())); - settings.setMinimumFrameRate(10.0); - QVERIFY(qFuzzyCompare(settings.minimumFrameRate(), 10.0)); - QVERIFY(qFuzzyIsNull(settings.maximumFrameRate())); - settings.setMaximumFrameRate(20.0); - QVERIFY(qFuzzyCompare(settings.maximumFrameRate(), 20.0)); - QVERIFY(!settings.isNull()); - - settings = QCameraViewfinderSettings(); - QCOMPARE(settings.pixelFormat(), QVideoFrame::Format_Invalid); - settings.setPixelFormat(QVideoFrame::Format_RGB32); - QCOMPARE(settings.pixelFormat(), QVideoFrame::Format_RGB32); - QVERIFY(!settings.isNull()); - - settings = QCameraViewfinderSettings(); - QCOMPARE(settings.pixelAspectRatio(), QSize()); - settings.setPixelAspectRatio(QSize(2, 1)); - QCOMPARE(settings.pixelAspectRatio(), QSize(2, 1)); - settings.setPixelAspectRatio(3, 2); - QCOMPARE(settings.pixelAspectRatio(), QSize(3, 2)); - QVERIFY(!settings.isNull()); - - settings = QCameraViewfinderSettings(); - - { - QCameraViewfinderSettings settings1; - QCameraViewfinderSettings settings2; - QCOMPARE(settings2, settings1); - - settings2 = settings1; - QCOMPARE(settings2, settings1); - QVERIFY(settings2.isNull()); - - settings1.setResolution(800, 600); - - QVERIFY(settings2.isNull()); - QVERIFY(!settings1.isNull()); - QVERIFY(settings1 != settings2); - } - - { - QCameraViewfinderSettings settings1; - QCameraViewfinderSettings settings2(settings1); - QCOMPARE(settings2, settings1); - - settings2 = settings1; - QCOMPARE(settings2, settings1); - QVERIFY(settings2.isNull()); - - settings1.setResolution(800, 600); - - QVERIFY(settings2.isNull()); - QVERIFY(!settings1.isNull()); - QVERIFY(settings1 != settings2); - } - - QCameraViewfinderSettings settings1; - QCameraViewfinderSettings settings2; - - settings1 = QCameraViewfinderSettings(); - settings1.setResolution(800,600); - settings2 = QCameraViewfinderSettings(); - settings2.setResolution(QSize(800,600)); - QVERIFY(settings1 == settings2); - settings2.setResolution(QSize(400,300)); - QVERIFY(settings1 != settings2); - - settings1 = QCameraViewfinderSettings(); - settings1.setMinimumFrameRate(10.0); - settings2 = QCameraViewfinderSettings(); - settings2.setMinimumFrameRate(10.0); - QVERIFY(settings1 == settings2); - settings2.setMinimumFrameRate(15.0); - QVERIFY(settings1 != settings2); - - settings1 = QCameraViewfinderSettings(); - settings1.setMaximumFrameRate(30.0); - settings2 = QCameraViewfinderSettings(); - settings2.setMaximumFrameRate(30.0); - QVERIFY(settings1 == settings2); - settings2.setMaximumFrameRate(15.0); - QVERIFY(settings1 != settings2); - - settings1 = QCameraViewfinderSettings(); - settings1.setPixelFormat(QVideoFrame::Format_YV12); - settings2 = QCameraViewfinderSettings(); - settings2.setPixelFormat(QVideoFrame::Format_YV12); - QVERIFY(settings1 == settings2); - settings2.setPixelFormat(QVideoFrame::Format_NV21); - QVERIFY(settings1 != settings2); - - settings1 = QCameraViewfinderSettings(); - settings1.setPixelAspectRatio(2,1); - settings2 = QCameraViewfinderSettings(); - settings2.setPixelAspectRatio(QSize(2,1)); - QVERIFY(settings1 == settings2); - settings2.setPixelAspectRatio(QSize(1,2)); - QVERIFY(settings1 != settings2); -} - -void tst_QCamera::testViewfinderSettingsChange() -{ - QCamera camera; - - QSignalSpy stateChangedSignal(&camera, SIGNAL(stateChanged(QCamera::State))); - QSignalSpy statusChangedSignal(&camera, SIGNAL(statusChanged(QCamera::Status))); - - camera.start(); - QCOMPARE(camera.state(), QCamera::ActiveState); - QCOMPARE(camera.status(), QCamera::ActiveStatus); - - QCOMPARE(stateChangedSignal.count(), 1); - QCOMPARE(statusChangedSignal.count(), 1); - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - //the settings change should trigger camera stop/start - camera.setViewfinderSettings(QCameraViewfinderSettings()); - QCOMPARE(camera.state(), QCamera::ActiveState); - QCOMPARE(camera.status(), QCamera::LoadedStatus); - - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 1); - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - QCOMPARE(camera.state(), QCamera::ActiveState); - QTRY_COMPARE(camera.status(), QCamera::ActiveStatus); - - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 1); - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - //the settings change should trigger camera stop/start only once - camera.setViewfinderSettings(QCameraViewfinderSettings()); - camera.setViewfinderSettings(QCameraViewfinderSettings()); - - QCOMPARE(camera.state(), QCamera::ActiveState); - QCOMPARE(camera.status(), QCamera::LoadedStatus); - - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 1); - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - QCOMPARE(camera.state(), QCamera::ActiveState); - QTRY_COMPARE(camera.status(), QCamera::ActiveStatus); - - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 1); -} - -class ViewfinderSettingsBuilder -{ -public: - ViewfinderSettingsBuilder &setResolution(int width, int height) { - m_settings.setResolution(width, height); - return *this; - } - - ViewfinderSettingsBuilder &setMinimumFrameRate(qreal r) { - m_settings.setMinimumFrameRate(r); - return *this; - } - - ViewfinderSettingsBuilder &setMaximumFrameRate(qreal r) { - m_settings.setMaximumFrameRate(r); - return *this; - } - - ViewfinderSettingsBuilder &setPixelFormat(QVideoFrame::PixelFormat f) { - m_settings.setPixelFormat(f); - return *this; - } - - ViewfinderSettingsBuilder &setPixelAspectRatio(int h, int v) { - m_settings.setPixelAspectRatio(h, v); - return *this; - } - - QCameraViewfinderSettings build() { - QCameraViewfinderSettings s = m_settings; - m_settings = QCameraViewfinderSettings(); - return s; - } - -private: - QCameraViewfinderSettings m_settings; -}; - -void tst_QCamera::testSupportedViewfinderSettings_data() -{ - // see mockcameraviewfindersettingscontrol.h for expected values - - ViewfinderSettingsBuilder builder; - - QTest::addColumn<QCameraViewfinderSettings>("settings"); - QTest::addColumn< QList<int> >("expectedSupportedSettings"); - - QTest::newRow("all supported settings") << QCameraViewfinderSettings() - << (QList<int>() << 0 << 1 << 2 << 3 << 4 << 5); - - QTest::newRow("invalid resolution") << builder.setResolution(452472, 44453).build() - << QList<int>(); - - QTest::newRow("resolution (1)") << builder.setResolution(640, 480).build() - << (QList<int>() << 0); - - QTest::newRow("resolution (2)") << builder.setResolution(1280, 720).build() - << (QList<int>() << 1 << 3 << 4); - - QTest::newRow("invalid minimum frame rate") << builder.setMinimumFrameRate(2).build() - << QList<int>(); - - QTest::newRow("minimum frame rate (1)") << builder.setMinimumFrameRate(5).build() - << (QList<int>() << 2); - - QTest::newRow("minimum frame rate (2)") << builder.setMinimumFrameRate(10).build() - << (QList<int>() << 1 << 3); - - QTest::newRow("minimum frame rate (3)") << builder.setMinimumFrameRate(30).build() - << (QList<int>() << 0 << 4 << 5); - - QTest::newRow("invalid maximum frame rate") << builder.setMaximumFrameRate(2).build() - << QList<int>(); - - QTest::newRow("maximum frame rate (1)") << builder.setMaximumFrameRate(10).build() - << (QList<int>() << 1 << 2 << 3); - - QTest::newRow("maximum frame rate (2)") << builder.setMaximumFrameRate(30).build() - << (QList<int>() << 0 << 4 << 5); - - QTest::newRow("invalid pixel format") << builder.setPixelFormat(QVideoFrame::Format_CameraRaw).build() - << QList<int>(); - - QTest::newRow("pixel format (1)") << builder.setPixelFormat(QVideoFrame::Format_BGR32).build() - << (QList<int>() << 2); - - QTest::newRow("pixel format (2)") << builder.setPixelFormat(QVideoFrame::Format_YV12).build() - << (QList<int>() << 3 << 4); - - QTest::newRow("pixel format (3)") << builder.setPixelFormat(QVideoFrame::Format_NV12).build() - << (QList<int>() << 0 << 1 << 5); - - QTest::newRow("invalid pixel aspect ratio") << builder.setPixelAspectRatio(5, 3).build() - << QList<int>(); - - QTest::newRow("pixel aspect ratio (1)") << builder.setPixelAspectRatio(2, 1).build() - << (QList<int>() << 2); - - QTest::newRow("pixel aspect ratio (2)") << builder.setPixelAspectRatio(1, 1).build() - << (QList<int>() << 0 << 1 << 3 << 4 << 5); - - QTest::newRow("invalid multi settings") << builder.setResolution(640, 480) - .setMinimumFrameRate(10) - .setMaximumFrameRate(10) - .build() - << QList<int>(); - - QTest::newRow("multi settings (1)") << builder.setResolution(640, 480) - .setMinimumFrameRate(30) - .setMaximumFrameRate(30) - .build() - << (QList<int>() << 0); - - QTest::newRow("multi settings (2)") << builder.setResolution(1280, 720) - .setMinimumFrameRate(10) - .setMaximumFrameRate(10) - .build() - << (QList<int>() << 1 << 3); - - QTest::newRow("multi settings (3)") << builder.setPixelFormat(QVideoFrame::Format_NV12) - .setMinimumFrameRate(30) - .build() - << (QList<int>() << 0 << 5); - - QTest::newRow("multi settings (4)") << builder.setPixelAspectRatio(1, 1) - .setMaximumFrameRate(10) - .build() - << (QList<int>() << 1 << 3); -} - -void tst_QCamera::testSupportedViewfinderSettings() -{ - QFETCH(QCameraViewfinderSettings, settings); - QFETCH(QList<int>, expectedSupportedSettings); - - QList<QCameraViewfinderSettings> actualSupportedSettings = QCamera().supportedViewfinderSettings(settings); - QCOMPARE(actualSupportedSettings.size(), expectedSupportedSettings.size()); - for (int i = 0; i < expectedSupportedSettings.size(); ++i) { - QCameraViewfinderSettings expectedSettings = mockCameraService->mockViewfinderSettingsControl->supportedSettings.at(expectedSupportedSettings.at(i)); - QCOMPARE(actualSupportedSettings.at(i), expectedSettings); - } -} - -void tst_QCamera::testSupportedViewfinderResolutions_data() -{ - // see mockcameraviewfindersettingscontrol.h for expected values - - typedef QList<QSize> SizeList; - ViewfinderSettingsBuilder builder; - - QTest::addColumn<QCameraViewfinderSettings>("settings"); - QTest::addColumn<SizeList>("expectedResolutions"); - - QTest::newRow("empty settings") << QCameraViewfinderSettings() - << (SizeList() << QSize(320, 240) - << QSize(640, 480) - << QSize(1280, 720) - << QSize(1920, 1080)); - - QTest::newRow("invalid minimum frame rate") << builder.setMinimumFrameRate(2).build() - << SizeList(); - - QTest::newRow("minimum frame rate (1)") << builder.setMinimumFrameRate(5).build() - << (SizeList() << QSize(1920, 1080)); - - QTest::newRow("minimum frame rate (2)") << builder.setMinimumFrameRate(10).build() - << (SizeList() << QSize(1280, 720)); - - QTest::newRow("minimum frame rate (3)") << builder.setMinimumFrameRate(30).build() - << (SizeList() << QSize(320, 240) - << QSize(640, 480) - << QSize(1280, 720)); - - QTest::newRow("invalid maximum frame rate") << builder.setMaximumFrameRate(2).build() - << SizeList(); - - QTest::newRow("maximum frame rate") << builder.setMaximumFrameRate(10).build() - << (SizeList() << QSize(1280, 720) - << QSize(1920, 1080)); - - QTest::newRow("invalid pixel format") << builder.setPixelFormat(QVideoFrame::Format_CameraRaw).build() - << SizeList(); - - QTest::newRow("pixel format (1)") << builder.setPixelFormat(QVideoFrame::Format_BGR32).build() - << (SizeList() << QSize(1920, 1080)); - - QTest::newRow("pixel format (2)") << builder.setPixelFormat(QVideoFrame::Format_YV12).build() - << (SizeList() << QSize(1280, 720)); - - QTest::newRow("pixel format (3)") << builder.setPixelFormat(QVideoFrame::Format_NV12).build() - << (SizeList() << QSize(320, 240) - << QSize(640, 480) - << QSize(1280, 720)); - - QTest::newRow("invalid pixel aspect ratio") << builder.setPixelAspectRatio(7, 2).build() - << SizeList(); - - QTest::newRow("pixel aspect ratio (1") << builder.setPixelAspectRatio(2, 1).build() - << (SizeList() << QSize(1920, 1080)); - - QTest::newRow("pixel aspect ratio (2") << builder.setPixelAspectRatio(1, 1).build() - << (SizeList() << QSize(320, 240) - << QSize(640, 480) - << QSize(1280, 720)); - - QTest::newRow("invalid multi settings (1)") << builder.setMinimumFrameRate(2) - .setMaximumFrameRate(3) - .build() - << SizeList(); - - QTest::newRow("invalid multi settings (2)") << builder.setMinimumFrameRate(5) - .setMaximumFrameRate(11) - .build() - << SizeList(); - - QTest::newRow("multi settings (1)") << builder.setMinimumFrameRate(10) - .setMaximumFrameRate(10) - .build() - << (SizeList() << QSize(1280, 720)); - - QTest::newRow("multi settings (2)") << builder.setMinimumFrameRate(30) - .setMaximumFrameRate(30) - .build() - << (SizeList() << QSize(320, 240) - << QSize(640, 480) - << QSize(1280, 720)); - - QTest::newRow("multi settings (3)") << builder.setPixelFormat(QVideoFrame::Format_NV12) - .setMinimumFrameRate(30) - .build() - << (SizeList() << QSize(320, 240) - << QSize(640, 480)); - - QTest::newRow("multi settings (4)") << builder.setPixelAspectRatio(1, 1) - .setMaximumFrameRate(10) - .build() - << (SizeList() << QSize(1280, 720)); -} - -void tst_QCamera::testSupportedViewfinderResolutions() -{ - QFETCH(QCameraViewfinderSettings, settings); - QFETCH(QList<QSize>, expectedResolutions); - - QList<QSize> actualResolutions = QCamera().supportedViewfinderResolutions(settings); - QCOMPARE(actualResolutions.size(), expectedResolutions.size()); - for (int i = 0; i < actualResolutions.size(); ++i) - QCOMPARE(actualResolutions.at(i), expectedResolutions.at(i)); -} - -void tst_QCamera::testSupportedViewfinderFrameRateRanges_data() -{ - // see mockcameraviewfindersettingscontrol.h for expected values - - typedef QList<QCamera::FrameRateRange> RangeList; - ViewfinderSettingsBuilder builder; - - QTest::addColumn<QCameraViewfinderSettings>("settings"); - QTest::addColumn<RangeList>("expectedFrameRateRanges"); - - QTest::newRow("empty settings") << QCameraViewfinderSettings() - << (RangeList() << QCamera::FrameRateRange(5, 10) - << QCamera::FrameRateRange(10, 10) - << QCamera::FrameRateRange(30, 30)); - - QTest::newRow("invalid resolution") << builder.setResolution(452472, 444534).build() - << RangeList(); - - QTest::newRow("resolution (1)") << builder.setResolution(320, 240).build() - << (RangeList() << QCamera::FrameRateRange(30, 30)); - - QTest::newRow("resolution (2)") << builder.setResolution(1280, 720).build() - << (RangeList() << QCamera::FrameRateRange(10, 10) - << QCamera::FrameRateRange(30, 30)); - - QTest::newRow("resolution (3)") << builder.setResolution(1920, 1080).build() - << (RangeList() << QCamera::FrameRateRange(5, 10)); - - QTest::newRow("invalid minimum frame rate") << builder.setMinimumFrameRate(2).build() - << RangeList(); - - QTest::newRow("minimum frame rate (1)") << builder.setMinimumFrameRate(5).build() - << (RangeList() << QCamera::FrameRateRange(5, 10)); - - QTest::newRow("minimum frame rate (2)") << builder.setMinimumFrameRate(10).build() - << (RangeList() << QCamera::FrameRateRange(10, 10)); - - QTest::newRow("invalid maximum frame rate") << builder.setMaximumFrameRate(2).build() - << RangeList(); - - QTest::newRow("maximum frame rate (1)") << builder.setMaximumFrameRate(10).build() - << (RangeList() << QCamera::FrameRateRange(5, 10) - << QCamera::FrameRateRange(10, 10)); - - QTest::newRow("maximum frame rate (2)") << builder.setMaximumFrameRate(30).build() - << (RangeList() << QCamera::FrameRateRange(30, 30)); - - QTest::newRow("invalid pixel format") << builder.setPixelFormat(QVideoFrame::Format_IMC1).build() - << RangeList(); - - QTest::newRow("pixel format (1)") << builder.setPixelFormat(QVideoFrame::Format_BGR32).build() - << (RangeList() << QCamera::FrameRateRange(5, 10)); - - QTest::newRow("pixel format (2)") << builder.setPixelFormat(QVideoFrame::Format_NV12).build() - << (RangeList() << QCamera::FrameRateRange(10, 10) - << QCamera::FrameRateRange(30, 30)); - - QTest::newRow("invalid pixel aspect ratio") << builder.setPixelAspectRatio(2, 3).build() - << RangeList(); - - QTest::newRow("pixel aspect ratio (1)") << builder.setPixelAspectRatio(2, 1).build() - << (RangeList() << QCamera::FrameRateRange(5, 10)); - - QTest::newRow("pixel aspect ratio (2)") << builder.setPixelAspectRatio(1, 1).build() - << (RangeList() << QCamera::FrameRateRange(10, 10) - << QCamera::FrameRateRange(30, 30)); -} - -void tst_QCamera::testSupportedViewfinderFrameRateRanges() -{ - QFETCH(QCameraViewfinderSettings, settings); - QFETCH(QList<QCamera::FrameRateRange>, expectedFrameRateRanges); - - QList<QCamera::FrameRateRange> actualFrameRateRanges = QCamera().supportedViewfinderFrameRateRanges(settings); - QCOMPARE(actualFrameRateRanges.size(), expectedFrameRateRanges.size()); - for (int i = 0; i < actualFrameRateRanges.size(); ++i) - QCOMPARE(actualFrameRateRanges.at(i), expectedFrameRateRanges.at(i)); -} - -void tst_QCamera::testSupportedViewfinderPixelFormats_data() -{ - // see mockcameraviewfindersettingscontrol.h for expected values - - typedef QList<QVideoFrame::PixelFormat> FormatList; - ViewfinderSettingsBuilder builder; - - QTest::addColumn<QCameraViewfinderSettings>("settings"); - QTest::addColumn<FormatList>("expectedPixelFormats"); - - QTest::newRow("empty settings") << QCameraViewfinderSettings() - << (FormatList() << QVideoFrame::Format_NV12 - << QVideoFrame::Format_BGR32 - << QVideoFrame::Format_YV12); - - QTest::newRow("invalid resolution") << builder.setResolution(452472, 444534).build() - << FormatList(); - - QTest::newRow("resolution (1)") << builder.setResolution(640, 480).build() - << (FormatList() << QVideoFrame::Format_NV12); - - QTest::newRow("resolution (2)") << builder.setResolution(1280, 720).build() - << (FormatList() << QVideoFrame::Format_NV12 - << QVideoFrame::Format_YV12); - - QTest::newRow("invalid minimum frame rate") << builder.setMinimumFrameRate(2).build() - << FormatList(); - - QTest::newRow("minimum frame rate (1)") << builder.setMinimumFrameRate(5).build() - << (FormatList() << QVideoFrame::Format_BGR32); - - QTest::newRow("minimum frame rate (2)") << builder.setMinimumFrameRate(10).build() - << (FormatList() << QVideoFrame::Format_NV12 - << QVideoFrame::Format_YV12); - - QTest::newRow("invalid maximum frame rate") << builder.setMaximumFrameRate(2).build() - << FormatList(); - - QTest::newRow("maximum frame rate (1)") << builder.setMaximumFrameRate(10).build() - << (FormatList() << QVideoFrame::Format_NV12 - << QVideoFrame::Format_BGR32 - << QVideoFrame::Format_YV12); - - QTest::newRow("maximum frame rate (2)") << builder.setMinimumFrameRate(30).build() - << (FormatList() << QVideoFrame::Format_NV12 - << QVideoFrame::Format_YV12); - - QTest::newRow("invalid pixel aspect ratio") << builder.setPixelAspectRatio(2, 3).build() - << FormatList(); - - QTest::newRow("pixel aspect ratio (1)") << builder.setPixelAspectRatio(2, 1).build() - << (FormatList() << QVideoFrame::Format_BGR32); - - QTest::newRow("pixel aspect ratio (2)") << builder.setPixelAspectRatio(1, 1).build() - << (FormatList() << QVideoFrame::Format_NV12 - << QVideoFrame::Format_YV12); -} - -void tst_QCamera::testSupportedViewfinderPixelFormats() -{ - QFETCH(QCameraViewfinderSettings, settings); - QFETCH(QList<QVideoFrame::PixelFormat>, expectedPixelFormats); - - QList<QVideoFrame::PixelFormat> actualPixelFormats = QCamera().supportedViewfinderPixelFormats(settings); - QCOMPARE(actualPixelFormats.size(), expectedPixelFormats.size()); - for (int i = 0; i < actualPixelFormats.size(); ++i) - QCOMPARE(actualPixelFormats.at(i), expectedPixelFormats.at(i)); -} - -void tst_QCamera::testCameraLock() -{ - QCamera camera; - - camera.focus()->setFocusMode(QCameraFocus::AutoFocus); - - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - - QSignalSpy lockedSignal(&camera, SIGNAL(locked())); - QSignalSpy lockFailedSignal(&camera, SIGNAL(lockFailed())); - QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); - - camera.searchAndLock(); - QCOMPARE(camera.lockStatus(), QCamera::Searching); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - - QTRY_COMPARE(camera.lockStatus(), QCamera::Locked); - QCOMPARE(lockedSignal.count(), 1); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - - camera.searchAndLock(); - QCOMPARE(camera.lockStatus(), QCamera::Searching); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - - camera.unlock(); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); -} - -void tst_QCamera::testCameraLockCancel() -{ - MockCameraService service; - provider->service = &service; - QCamera camera; - - camera.focus()->setFocusMode(QCameraFocus::AutoFocus); - - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - - QSignalSpy lockedSignal(&camera, SIGNAL(locked())); - QSignalSpy lockFailedSignal(&camera, SIGNAL(lockFailed())); - QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); - camera.searchAndLock(); - QCOMPARE(camera.lockStatus(), QCamera::Searching); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - - camera.unlock(); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); -} - -void tst_QCamera::testCameraEncodingProperyChange() -{ - QCamera camera; - QCameraImageCapture imageCapture(&camera); - - QSignalSpy stateChangedSignal(&camera, SIGNAL(stateChanged(QCamera::State))); - QSignalSpy statusChangedSignal(&camera, SIGNAL(statusChanged(QCamera::Status))); - - camera.start(); - QCOMPARE(camera.state(), QCamera::ActiveState); - QCOMPARE(camera.status(), QCamera::ActiveStatus); - - QCOMPARE(stateChangedSignal.count(), 1); - QCOMPARE(statusChangedSignal.count(), 1); - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - - camera.setCaptureMode(QCamera::CaptureVideo); - QCOMPARE(camera.state(), QCamera::ActiveState); - QCOMPARE(camera.status(), QCamera::LoadedStatus); - - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 1); - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - QCOMPARE(camera.state(), QCamera::ActiveState); - QTRY_COMPARE(camera.status(), QCamera::ActiveStatus); - - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 1); - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - //backens should not be stopped since the capture mode is Video - imageCapture.setEncodingSettings(QImageEncoderSettings()); - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 0); - - camera.setCaptureMode(QCamera::CaptureStillImage); - - QCOMPARE(camera.state(), QCamera::ActiveState); - QTRY_COMPARE(camera.status(), QCamera::ActiveStatus); - - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - //the settings change should trigger camera stop/start - imageCapture.setEncodingSettings(QImageEncoderSettings()); - QCOMPARE(camera.state(), QCamera::ActiveState); - QCOMPARE(camera.status(), QCamera::LoadedStatus); - - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 1); - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - QCOMPARE(camera.state(), QCamera::ActiveState); - QTRY_COMPARE(camera.status(), QCamera::ActiveStatus); - - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 1); - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - //the settings change should trigger camera stop/start only once - camera.setCaptureMode(QCamera::CaptureVideo); - camera.setCaptureMode(QCamera::CaptureStillImage); - imageCapture.setEncodingSettings(QImageEncoderSettings()); - imageCapture.setEncodingSettings(QImageEncoderSettings()); - - QCOMPARE(camera.state(), QCamera::ActiveState); - QCOMPARE(camera.status(), QCamera::LoadedStatus); - - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 1); - stateChangedSignal.clear(); - statusChangedSignal.clear(); - - QCOMPARE(camera.state(), QCamera::ActiveState); - QTRY_COMPARE(camera.status(), QCamera::ActiveStatus); - - QCOMPARE(stateChangedSignal.count(), 0); - QCOMPARE(statusChangedSignal.count(), 1); -} - -void tst_QCamera::testSetVideoOutput() -{ - MockVideoSurface surface; - QCamera camera; - - camera.setViewfinder(reinterpret_cast<QVideoWidget *>(0)); - - camera.setViewfinder(reinterpret_cast<QGraphicsVideoItem *>(0)); - - QCOMPARE(mockCameraService->rendererRef, 0); - - camera.setViewfinder(&surface); - QVERIFY(mockCameraService->rendererControl->surface() == &surface); - QCOMPARE(mockCameraService->rendererRef, 1); - - camera.setViewfinder(reinterpret_cast<QAbstractVideoSurface *>(0)); - QVERIFY(mockCameraService->rendererControl->surface() == 0); - - //rendererControl is released - QCOMPARE(mockCameraService->rendererRef, 0); - - camera.setViewfinder(&surface); - QVERIFY(mockCameraService->rendererControl->surface() == &surface); - QCOMPARE(mockCameraService->rendererRef, 1); - - camera.setViewfinder(reinterpret_cast<QVideoWidget *>(0)); - QVERIFY(mockCameraService->rendererControl->surface() == 0); - //rendererControl is released - QCOMPARE(mockCameraService->rendererRef, 0); - - camera.setViewfinder(&surface); - QVERIFY(mockCameraService->rendererControl->surface() == &surface); - QCOMPARE(mockCameraService->rendererRef, 1); -} - - -void tst_QCamera::testSetVideoOutputNoService() -{ - MockVideoSurface surface; - - provider->service = 0; - QCamera camera; - - camera.setViewfinder(&surface); - // Nothing we can verify here other than it doesn't assert. -} - -void tst_QCamera::testSetVideoOutputNoControl() -{ - MockVideoSurface surface; - - MockCameraService service; - service.rendererRef = 1; - provider->service = &service; - - QCamera camera; - - camera.setViewfinder(&surface); - QVERIFY(service.rendererControl->surface() == 0); -} - -void tst_QCamera::testSetVideoOutputDestruction() -{ - MockVideoSurface surface; - MockCameraService service; - provider->service = &service; - - { - QCamera camera; - camera.setViewfinder(&surface); - QVERIFY(service.rendererControl->surface() == &surface); - QCOMPARE(service.rendererRef, 1); - } - QVERIFY(service.rendererControl->surface() == 0); - QCOMPARE(service.rendererRef, 0); -} - -void tst_QCamera::testEnumDebug() -{ - QTest::ignoreMessage(QtDebugMsg, "QCamera::ActiveState"); - qDebug() << QCamera::ActiveState; - QTest::ignoreMessage(QtDebugMsg, "QCamera::ActiveStatus"); - qDebug() << QCamera::ActiveStatus; - QTest::ignoreMessage(QtDebugMsg, "QCamera::CaptureVideo"); - qDebug() << QCamera::CaptureVideo; - QTest::ignoreMessage(QtDebugMsg, "QCamera::CameraError"); - qDebug() << QCamera::CameraError; - QTest::ignoreMessage(QtDebugMsg, "QCamera::Unlocked"); - qDebug() << QCamera::Unlocked; - QTest::ignoreMessage(QtDebugMsg, "QCamera::LockAcquired"); - qDebug() << QCamera::LockAcquired; - QTest::ignoreMessage(QtDebugMsg, "QCamera::NoLock"); - qDebug() << QCamera::NoLock; - QTest::ignoreMessage(QtDebugMsg, "QCamera::LockExposure"); - qDebug() << QCamera::LockExposure; - QTest::ignoreMessage(QtDebugMsg, "QCamera::FrontFace "); - qDebug() << QCamera::FrontFace; -} - -void tst_QCamera::testCameraControl() -{ - MockCameraControl *m_cameraControl=new MockCameraControl(this); - QVERIFY(m_cameraControl != NULL); -} - -void tst_QCamera::testConstructor() -{ - // Service doesn't implement QVideoDeviceSelectorControl - provider->service = mockSimpleCameraService; - - { - QCamera camera; - QCOMPARE(camera.availability(), QMultimedia::Available); - QCOMPARE(camera.error(), QCamera::NoError); - } - - { - // Requesting a camera at a specific position from a service which doesn't implement - // the QVideoDeviceSelectorControl should result in loading the default camera - QCamera camera(QCamera::FrontFace); - QCOMPARE(camera.availability(), QMultimedia::Available); - QCOMPARE(camera.error(), QCamera::NoError); - } - - // Service implements QVideoDeviceSelectorControl - provider->service = mockCameraService; - - { - QCamera camera; - QCOMPARE(camera.availability(), QMultimedia::Available); - QCOMPARE(camera.error(), QCamera::NoError); - QCOMPARE(mockCameraService->mockVideoDeviceSelectorControl->selectedDevice(), 1); // default is 1 - } - - { - QCamera camera(QCameraInfo::defaultCamera()); - QCOMPARE(camera.availability(), QMultimedia::Available); - QCOMPARE(camera.error(), QCamera::NoError); - QCOMPARE(mockCameraService->mockVideoDeviceSelectorControl->selectedDevice(), 1); - QCOMPARE(QCameraInfo(camera), QCameraInfo::defaultCamera()); - } - - { - QCameraInfo cameraInfo = QCameraInfo::availableCameras().at(0); - QCamera camera(cameraInfo); - QCOMPARE(camera.availability(), QMultimedia::Available); - QCOMPARE(camera.error(), QCamera::NoError); - QCOMPARE(mockCameraService->mockVideoDeviceSelectorControl->selectedDevice(), 0); - QCOMPARE(QCameraInfo(camera), cameraInfo); - } - - { - // Requesting a camera at a position which is not available should result in - // loading the default camera - QCamera camera(QCamera::FrontFace); - QCOMPARE(camera.availability(), QMultimedia::Available); - QCOMPARE(camera.error(), QCamera::NoError); - QCOMPARE(mockCameraService->mockVideoDeviceSelectorControl->selectedDevice(), 1); - } - - { - QCamera camera(QCamera::BackFace); - QCOMPARE(camera.availability(), QMultimedia::Available); - QCOMPARE(camera.error(), QCamera::NoError); - QCOMPARE(mockCameraService->mockVideoDeviceSelectorControl->selectedDevice(), 0); - } - - { - // Should load the default camera when UnspecifiedPosition is requested - QCamera camera(QCamera::UnspecifiedPosition); - QCOMPARE(camera.availability(), QMultimedia::Available); - QCOMPARE(camera.error(), QCamera::NoError); - QCOMPARE(mockCameraService->mockVideoDeviceSelectorControl->selectedDevice(), 1); - } -} - -/* captureModeChanged Signal test case. */ -void tst_QCamera::testCaptureModeChanged_signal() -{ - MockCameraControl *m_cameraControl= new MockCameraControl(this); - QSignalSpy spy(m_cameraControl, SIGNAL(captureModeChanged(QCamera::CaptureModes))); - QVERIFY(spy.size() == 0); - - m_cameraControl->setCaptureMode(QCamera::CaptureVideo); - QVERIFY(spy.size() == 1); - - m_cameraControl->setCaptureMode(QCamera::CaptureStillImage); - QVERIFY(spy.size() == 2); -} - -/* Test case for captureMode */ -void tst_QCamera::testCaptureMode() -{ - QCamera camera; - QVERIFY(camera.captureMode() == QCamera::CaptureStillImage); - - camera.setCaptureMode(QCamera::CaptureVideo); - QVERIFY(camera.captureMode() == QCamera::CaptureVideo); -} - -/* Test case for isCaptureModeSupported */ -void tst_QCamera::testIsCaptureModeSupported() -{ - QCamera camera; - QVERIFY(camera.isCaptureModeSupported(QCamera::CaptureStillImage) == true); - QVERIFY(camera.isCaptureModeSupported(QCamera::CaptureVideo) == true); -} - -/* Test case for requestedLocks. LockType is stored in OR combination so all - types of combinations are verified here.*/ -void tst_QCamera::testRequestedLocks() -{ - QCamera camera; - - QCOMPARE(camera.requestedLocks(),QCamera::NoLock); - - camera.searchAndLock(QCamera::LockExposure); - QCOMPARE(camera.requestedLocks(),QCamera::LockExposure); - - camera.unlock(); - camera.searchAndLock(QCamera::LockFocus); - QCOMPARE(camera.requestedLocks(),QCamera::LockFocus ); - - camera.unlock(); - camera.searchAndLock(QCamera::LockWhiteBalance); - QCOMPARE(camera.requestedLocks(),QCamera::NoLock); - - camera.unlock(); - camera.searchAndLock(QCamera::LockExposure |QCamera::LockFocus ); - QCOMPARE(camera.requestedLocks(),QCamera::LockExposure |QCamera::LockFocus ); - camera.searchAndLock(QCamera::LockWhiteBalance); - QCOMPARE(camera.requestedLocks(),QCamera::LockExposure |QCamera::LockFocus); - camera.unlock(QCamera::LockExposure); - QCOMPARE(camera.requestedLocks(),QCamera::LockFocus); - camera.unlock(QCamera::LockFocus); - camera.searchAndLock(QCamera::LockExposure |QCamera::LockWhiteBalance ); - QCOMPARE(camera.requestedLocks(),QCamera::LockExposure); -} - -/* Test case for supportedLocks() */ -void tst_QCamera::testSupportedLocks() -{ - QCamera camera; - - QCOMPARE(camera.supportedLocks(),QCamera::LockExposure | QCamera::LockFocus); -} - -/* Test case for isAvailable */ -void tst_QCamera::testQCameraIsAvailable() -{ - QCamera camera; - QVERIFY(camera.isAvailable()); - QVERIFY(camera.availability() == QMultimedia::Available); -} - -void tst_QCamera::testQCameraIsNotAvailable() -{ - provider->service = 0; - QCamera camera("random"); - - QCOMPARE(camera.error(), QCamera::ServiceMissingError); - QVERIFY(!camera.isAvailable()); - QCOMPARE(camera.availability(), QMultimedia::ServiceMissing); -} - -/* Test case for searchAndLock ( QCamera::LockTypes locks ) */ -void tst_QCamera::testSearchAndLockWithLockTypes() -{ - QCamera camera; - - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - - /* Spy the signals */ - QSignalSpy lockedSignal(&camera, SIGNAL(locked())); - QSignalSpy lockFailedSignal(&camera, SIGNAL(lockFailed())); - QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); - QSignalSpy lockStatusChangedSignalWithType(&camera, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); - - /* search and lock the camera with QCamera::LockExposure and verify if the signal is emitted correctly */ - camera.searchAndLock(QCamera::LockExposure); - QCOMPARE(camera.lockStatus(), QCamera::Locked); - QCOMPARE(lockedSignal.count(), 1); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); -} - -/* Test case for setCaptureMode() */ -void tst_QCamera::testSetCaptureMode() -{ - QCamera camera; - - /* Set the capture mode and verify if it set correctly */ - camera.setCaptureMode(QCamera::CaptureVideo); - QVERIFY(camera.captureMode() == QCamera::CaptureVideo); - - camera.setCaptureMode(QCamera::CaptureStillImage); - QVERIFY(camera.captureMode() == QCamera::CaptureStillImage); -} - -/* Test case for unlock (QCamera::LockTypes) */ -void tst_QCamera::testUnlockWithType() -{ - QCamera camera; - - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - - /* Spy the signal */ - QSignalSpy lockedSignal(&camera, SIGNAL(locked())); - QSignalSpy lockFailedSignal(&camera, SIGNAL(lockFailed())); - QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); - QSignalSpy lockStatusChangedSignalWithType(&camera, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); - - /* lock the camera with QCamera::LockExposure and Verify if the signal is emitted correctly */ - camera.searchAndLock(QCamera::LockExposure); - QCOMPARE(camera.lockStatus(), QCamera::Locked); - QCOMPARE(lockedSignal.count(), 1); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - - /* Clear the signal */ - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - lockStatusChangedSignalWithType.clear(); - - /* Unlock the camera and verify if the signal is emitted correctly */ - camera.unlock(QCamera::LockExposure); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - QCamera::LockType lockType = qvariant_cast<QCamera::LockType >(lockStatusChangedSignalWithType.at(0).at(0)); - QCamera::LockStatus lockStatus = qvariant_cast<QCamera::LockStatus >(lockStatusChangedSignalWithType.at(0).at(1)); - QVERIFY(lockType == QCamera::LockExposure); - QVERIFY(lockStatus == QCamera::Unlocked); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - lockStatusChangedSignalWithType.clear(); - - /* Lock the camera with QCamera::LockFocus */ - camera.searchAndLock(QCamera::LockFocus); - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - lockStatusChangedSignalWithType.clear(); - - /* Unlock the camera and Verify if the signal is emitted correctly */ - camera.unlock(QCamera::LockFocus); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - lockType = qvariant_cast<QCamera::LockType >(lockStatusChangedSignalWithType.at(0).at(0)); - lockStatus = qvariant_cast<QCamera::LockStatus >(lockStatusChangedSignalWithType.at(0).at(1)); - QVERIFY(lockType == QCamera::LockFocus); - QVERIFY(lockStatus == QCamera::Unlocked); -} - -/* Test case for signal captureModeChanged(QCamera::CaptureModes) */ -void tst_QCamera::testCaptureModeChangedSignal() -{ - QCamera camera; - QVERIFY(camera.captureMode() == QCamera::CaptureStillImage); - - qRegisterMetaType<QCamera::CaptureModes>("QCamera::CaptureModes"); - - /* Spy the signal */ - QSignalSpy lockCaptureModeChangedSignal(&camera, SIGNAL(captureModeChanged(QCamera::CaptureModes))); - - /* set the capture mode and Verify if the signal is emitted */ - camera.setCaptureMode(QCamera::CaptureVideo); - QVERIFY(camera.captureMode() == QCamera::CaptureVideo); - QCOMPARE(lockCaptureModeChangedSignal.count(), 1); - QCamera::CaptureModes lockCaptureMode = qvariant_cast<QCamera::CaptureModes >(lockCaptureModeChangedSignal.at(0).at(0)); - QVERIFY(lockCaptureMode == QCamera::CaptureVideo); -} - -/* Test case for signal lockStatusChanged(QCamera::LockType,QCamera::LockStatus, QCamera::LockChangeReason) */ -void tst_QCamera::testLockStatusChangedWithTypesSignal() -{ - QCamera camera; - - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - - /* Spy the signal lockStatusChanged(QCamera::LockType,QCamera::LockStatus, QCamera::LockChangeReason) */ - QSignalSpy lockStatusChangedSignalWithType(&camera, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); - - /* Lock the camera with type QCamera::LockExposure */ - camera.searchAndLock(QCamera::LockExposure); - - /* Verify if the signal is emitted and lock status is set correclty */ - QCOMPARE(camera.lockStatus(), QCamera::Locked); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - QCamera::LockType lockType = qvariant_cast<QCamera::LockType >(lockStatusChangedSignalWithType.at(0).at(0)); - QCamera::LockStatus lockStatus = qvariant_cast<QCamera::LockStatus >(lockStatusChangedSignalWithType.at(0).at(1)); - QVERIFY(lockType == QCamera::LockExposure); - QVERIFY(lockStatus == QCamera::Locked); - - lockStatusChangedSignalWithType.clear(); - - /* Unlock the camera */ - camera.unlock(); - - /* Verify if the signal is emitted and lock status is set correclty */ - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - lockType = qvariant_cast<QCamera::LockType >(lockStatusChangedSignalWithType.at(0).at(0)); - lockStatus = qvariant_cast<QCamera::LockStatus >(lockStatusChangedSignalWithType.at(0).at(1)); - QVERIFY(lockType == QCamera::LockExposure); - QVERIFY(lockStatus == QCamera::Unlocked); -} - -/* Test case for verifying if error signal generated correctly */ -void tst_QCamera::testErrorSignal() -{ - MockCameraService service; - provider->service = &service; - - QCamera camera; - - QSignalSpy spyError(&camera, SIGNAL(errorOccurred(QCamera::Error))); - - /* Set the QCameraControl error and verify if the signal is emitted correctly in QCamera */ - service.mockControl->setError(QCamera::CameraError,QString("Camera Error")); - - QVERIFY(spyError.count() == 1); - QCamera::Error err = qvariant_cast<QCamera::Error >(spyError.at(0).at(0)); - QVERIFY(err == QCamera::CameraError); - - spyError.clear(); - - /* Set the QCameraControl error and verify if the signal is emitted correctly in QCamera */ - service.mockControl->setError(QCamera::InvalidRequestError,QString("InvalidRequestError Error")); - QVERIFY(spyError.count() == 1); - err = qvariant_cast<QCamera::Error >(spyError.at(0).at(0)); - QVERIFY(err == QCamera::InvalidRequestError); - - spyError.clear(); - - /* Set the QCameraControl error and verify if the signal is emitted correctly in QCamera */ - service.mockControl->setError(QCamera::NotSupportedFeatureError,QString("NotSupportedFeatureError Error")); - QVERIFY(spyError.count() == 1); - err = qvariant_cast<QCamera::Error >(spyError.at(0).at(0)); - QVERIFY(err == QCamera::NotSupportedFeatureError); - -} - -/* Test case for verifying the QCamera error */ -void tst_QCamera::testError() -{ - MockCameraService service; - provider->service = &service; - - QCamera camera; - - /* Set the QCameraControl error and verify if it is set correctly in QCamera */ - service.mockControl->setError(QCamera::CameraError,QString("Camera Error")); - QVERIFY(camera.error() == QCamera::CameraError); - - /* Set the QCameraControl error and verify if it is set correctly in QCamera */ - service.mockControl->setError(QCamera::InvalidRequestError,QString("InvalidRequestError Error")); - QVERIFY(camera.error() == QCamera::InvalidRequestError); - - /* Set the QCameraControl error and verify if it is set correctly in QCamera */ - service.mockControl->setError(QCamera::NotSupportedFeatureError,QString("NotSupportedFeatureError Error")); - QVERIFY(camera.error() == QCamera::NotSupportedFeatureError); - -} - -/* Test the error strings for QCamera class */ -void tst_QCamera::testErrorString() -{ - MockCameraService service; - provider->service = &service; - - QCamera camera; - - /* Set the QCameraControl error and verify if it is set correctly in QCamera */ - service.mockControl->setError(QCamera::CameraError,QString("Camera Error")); - QVERIFY(camera.errorString() == QString("Camera Error")); - - /* Set the QCameraControl error and verify if it is set correctly in QCamera */ - service.mockControl->setError(QCamera::InvalidRequestError,QString("InvalidRequestError Error")); - QVERIFY(camera.errorString() == QString("InvalidRequestError Error")); - - /* Set the QCameraControl error and verify if it is set correctly in QCamera */ - service.mockControl->setError(QCamera::NotSupportedFeatureError,QString("NotSupportedFeatureError Error")); - QVERIFY(camera.errorString() == QString("NotSupportedFeatureError Error")); -} - -/* Test case for verifying Status of QCamera. */ -void tst_QCamera::testStatus() -{ - MockCameraService service; - provider->service = &service; - - QCamera camera; - - /* Set the QCameraControl status and verify if it is set correctly in QCamera */ - service.mockControl->setStatus(QCamera::StartingStatus); - QVERIFY(camera.status() == QCamera::StartingStatus); - - /* Set the QCameraControl status and verify if it is set correctly in QCamera */ - service.mockControl->setStatus(QCamera::StandbyStatus); - QVERIFY(camera.status() == QCamera::StandbyStatus); - - /* Set the QCameraControl status and verify if it is set correctly in QCamera */ - service.mockControl->setStatus(QCamera::LoadingStatus); - QVERIFY(camera.status() == QCamera::LoadingStatus); - - /* Set the QCameraControl status and verify if it is set correctly in QCamera */ - service.mockControl->setStatus(QCamera::UnavailableStatus); - QVERIFY(camera.status() == QCamera::UnavailableStatus); -} - -/* Test case for verifying default locktype QCamera::NoLock */ -void tst_QCamera::testLockType() -{ - QCamera camera; - - QCOMPARE(camera.requestedLocks(),QCamera::NoLock); -} - -/* Test case for QCamera::LockChangeReason with QCamera::LockAcquired */ -void tst_QCamera::testLockChangeReason() -{ - MockCameraService service; - provider->service = &service; - - QCamera camera; - - QSignalSpy lockStatusChangedSignalWithType(&camera, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); - - /* Set the lockChangeReason */ - service.mockLocksControl->setLockChangeReason(QCamera::LockAcquired); - - /* Verify if lockChangeReson is eqaul toQCamera::LockAcquired */ - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - QCamera::LockChangeReason LockChangeReason = qvariant_cast<QCamera::LockChangeReason >(lockStatusChangedSignalWithType.at(0).at(2)); - QVERIFY(LockChangeReason == QCamera::LockAcquired); - -} - -/* All the enums test case for QCameraControl class*/ -void tst_QCamera::testEnumsOfQCameraControl() -{ - MockCameraControl *m_cameraControl = new MockCameraControl(this); - bool result; - - // In still mode, can't change much - QVERIFY(m_cameraControl->captureMode() == QCamera::CaptureStillImage); - result = m_cameraControl->canChangeProperty(MockCameraControl::CaptureMode, QCamera::ActiveStatus); - QVERIFY(!result); - result = m_cameraControl->canChangeProperty(MockCameraControl::ImageEncodingSettings, QCamera::ActiveStatus); - QVERIFY(!result); - result = m_cameraControl->canChangeProperty(MockCameraControl::VideoEncodingSettings, QCamera::ActiveStatus); - QVERIFY(result); - result = m_cameraControl->canChangeProperty(MockCameraControl::Viewfinder, QCamera::ActiveStatus); - QVERIFY(!result); - - // In video mode can change image encoding settings - m_cameraControl->setCaptureMode(QCamera::CaptureVideo); - result = m_cameraControl->canChangeProperty(MockCameraControl::ImageEncodingSettings, QCamera::ActiveStatus); - QVERIFY(result); - result = m_cameraControl->canChangeProperty(MockCameraControl::VideoEncodingSettings, QCamera::ActiveStatus); - QVERIFY(result); - result = m_cameraControl->canChangeProperty(MockCameraControl::Viewfinder, QCamera::ActiveStatus); - QVERIFY(!result); - - // Flip the allow everything bit - m_cameraControl->m_propertyChangesSupported = true; - result = m_cameraControl->canChangeProperty(MockCameraControl::CaptureMode, QCamera::ActiveStatus); - QVERIFY(result); - result = m_cameraControl->canChangeProperty(MockCameraControl::ImageEncodingSettings, QCamera::ActiveStatus); - QVERIFY(result); - result = m_cameraControl->canChangeProperty(MockCameraControl::VideoEncodingSettings, QCamera::ActiveStatus); - QVERIFY(result); - result = m_cameraControl->canChangeProperty(MockCameraControl::Viewfinder, QCamera::ActiveStatus); - QVERIFY(result); -} - -// Test case for QCameraImageProcessing class -void tst_QCamera::testContrast() -{ - QCamera camera; - QCameraImageProcessing *cameraImageProcessing = camera.imageProcessing(); - QVERIFY(cameraImageProcessing->contrast() ==0); - - cameraImageProcessing->setContrast(0.123); - QCOMPARE(cameraImageProcessing->contrast(), 0.123); - - cameraImageProcessing->setContrast(4.56); - QCOMPARE(cameraImageProcessing->contrast(), 4.56); -} - -void tst_QCamera::testDenoisingLevel() -{ - QCamera camera; - QCameraImageProcessing *cameraImageProcessing = camera.imageProcessing(); - - QCOMPARE(cameraImageProcessing->denoisingLevel()+1 , 1.0); - - cameraImageProcessing->setDenoisingLevel(-0.3); - QCOMPARE(cameraImageProcessing->denoisingLevel() , -0.3); - - cameraImageProcessing->setDenoisingLevel(0.3); - QCOMPARE(cameraImageProcessing->denoisingLevel() , 0.3); -} - -void tst_QCamera::testIsAvailable() -{ - QCamera camera; - QCameraImageProcessing *cameraImageProcessing = camera.imageProcessing(); - QVERIFY(cameraImageProcessing->isAvailable() == true); -} - -void tst_QCamera::testSaturation() -{ - QCamera camera; - QCameraImageProcessing *cameraImageProcessing = camera.imageProcessing(); - QCOMPARE(cameraImageProcessing->saturation()+1.0, 1.0); - - cameraImageProcessing->setSaturation(0.5); - QCOMPARE(cameraImageProcessing->saturation(), 0.5); - - cameraImageProcessing->setSaturation(-0.5); - QCOMPARE(cameraImageProcessing->saturation(), -0.5); -} - -void tst_QCamera::testSharpeningLevel() -{ - QCamera camera; - - QCameraImageProcessing *cameraImageProcessing = camera.imageProcessing(); - - QCOMPARE(cameraImageProcessing->sharpeningLevel()+1 , 1.0); - - cameraImageProcessing->setSharpeningLevel(-0.3); - QCOMPARE(cameraImageProcessing->sharpeningLevel() , -0.3); - - cameraImageProcessing->setSharpeningLevel(0.3); - QCOMPARE(cameraImageProcessing->sharpeningLevel() , 0.3); -} - -void tst_QCamera::testEnumOfQCameraImageProcessing() -{ - QSet<QCameraImageProcessing::WhiteBalanceMode> whiteBalanceModes; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceManual; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceAuto; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceSunlight; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceCloudy; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceShade; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceTungsten; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceFluorescent; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceFlash; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceSunset; - whiteBalanceModes << QCameraImageProcessing::WhiteBalanceVendor; - - MockCameraService service; - service.mockImageProcessingControl->setSupportedWhiteBalanceModes(whiteBalanceModes); - - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceManual); - QVERIFY(service.mockImageProcessingControl->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceManual)); - QVERIFY(service.mockImageProcessingControl->whiteBalanceMode() == QCameraImageProcessing::WhiteBalanceManual); - - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceAuto); - QVERIFY(service.mockImageProcessingControl->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceAuto)); - QVERIFY(service.mockImageProcessingControl->whiteBalanceMode() == QCameraImageProcessing::WhiteBalanceAuto); - - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceSunlight); - QVERIFY(service.mockImageProcessingControl->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceSunlight)); - QVERIFY(service.mockImageProcessingControl->whiteBalanceMode() == QCameraImageProcessing::WhiteBalanceSunlight); - - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceCloudy); - QVERIFY(service.mockImageProcessingControl->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceCloudy)); - QVERIFY(service.mockImageProcessingControl->whiteBalanceMode() == QCameraImageProcessing::WhiteBalanceCloudy); - - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceShade); - QVERIFY(service.mockImageProcessingControl->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceShade)); - QVERIFY(service.mockImageProcessingControl->whiteBalanceMode() == QCameraImageProcessing::WhiteBalanceShade); - - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceTungsten); - QVERIFY(service.mockImageProcessingControl->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceTungsten)); - QVERIFY(service.mockImageProcessingControl->whiteBalanceMode() == QCameraImageProcessing::WhiteBalanceTungsten); - - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceFluorescent); - QVERIFY(service.mockImageProcessingControl->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceFluorescent)); - QVERIFY(service.mockImageProcessingControl->whiteBalanceMode() == QCameraImageProcessing::WhiteBalanceFluorescent); - - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceFlash); - QVERIFY(service.mockImageProcessingControl->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceFlash)); - QVERIFY(service.mockImageProcessingControl->whiteBalanceMode() == QCameraImageProcessing::WhiteBalanceFlash); - - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceSunset); - QVERIFY(service.mockImageProcessingControl->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceSunset)); - QVERIFY(service.mockImageProcessingControl->whiteBalanceMode() == QCameraImageProcessing::WhiteBalanceSunset); - - service.mockImageProcessingControl->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceVendor); - QVERIFY(service.mockImageProcessingControl->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceVendor)); - QVERIFY(service.mockImageProcessingControl->whiteBalanceMode() == QCameraImageProcessing::WhiteBalanceVendor); -} - -//Added test cases for QCameraFocus -void tst_QCamera::testCameraFocusIsAvailable() -{ - QCamera camera; - - QCameraFocus *cameraFocus = camera.focus(); - QVERIFY(cameraFocus != 0); - QVERIFY(cameraFocus->isAvailable()); -} - -//Added this code to cover QCameraFocus::HyperfocalFocus and QCameraFocus::MacroFocus -//As the HyperfocalFocus and MacroFocus are not supported we can not set the focus mode to these Focus Modes -void tst_QCamera::testFocusModes() -{ - QCamera camera; - - QCameraFocus *cameraFocus = camera.focus(); - QVERIFY(cameraFocus != 0); - QVERIFY(!cameraFocus->isFocusModeSupported(QCameraFocus::HyperfocalFocus)); - QVERIFY(!cameraFocus->isFocusModeSupported(QCameraFocus::MacroFocus)); - QCOMPARE(cameraFocus->focusMode(), QCameraFocus::AutoFocus); - cameraFocus->setFocusMode(QCameraFocus::HyperfocalFocus); - QVERIFY(cameraFocus->focusMode()!= QCameraFocus::HyperfocalFocus); - QCOMPARE(cameraFocus->focusMode(), QCameraFocus::AutoFocus); - cameraFocus->setFocusMode(QCameraFocus::MacroFocus); - QVERIFY(cameraFocus->focusMode()!= QCameraFocus::MacroFocus); - QCOMPARE(cameraFocus->focusMode(), QCameraFocus::AutoFocus); -} - -void tst_QCamera::testOpticalAndDigitalZoomChanged() -{ - QCamera camera; - - QCameraFocus *cameraFocus = camera.focus(); - QVERIFY(cameraFocus != 0); - QSignalSpy spy1(cameraFocus,SIGNAL(digitalZoomChanged(qreal))); - QSignalSpy spy2(cameraFocus,SIGNAL(opticalZoomChanged(qreal))); - QVERIFY(spy1.count() == 0); - QVERIFY(spy2.count() == 0); - cameraFocus->zoomTo(2.0,3.0); - QVERIFY(spy1.count() == 1); - QVERIFY(spy2.count() == 1); -} - -void tst_QCamera::testMaxDigitalZoomChangedSignal() -{ - QCamera camera; - - QCameraFocus *cameraFocus = camera.focus(); - QVERIFY(cameraFocus != 0); - QSignalSpy spy(cameraFocus,SIGNAL(maximumDigitalZoomChanged(qreal))); - QVERIFY(spy.count() == 0); - cameraFocus->zoomTo(5.0,6.0); - QVERIFY(spy.count() == 1); -} - -void tst_QCamera::testMaxOpticalZoomChangedSignal() -{ - QCamera camera; - - QCameraFocus *cameraFocus = camera.focus(); - QVERIFY(cameraFocus != 0); - QSignalSpy spy(cameraFocus,SIGNAL(maximumOpticalZoomChanged(qreal))); - QVERIFY(spy.count() == 0); - cameraFocus->zoomTo(5.0,6.0); - QVERIFY(spy.count() == 1); -} - -void tst_QCamera::testfocusZonesChangedSignal() -{ - QCamera camera; - - QCameraFocus *cameraFocus = camera.focus(); - QVERIFY(cameraFocus != 0); - - QSignalSpy spy(cameraFocus,SIGNAL(focusZonesChanged())); - cameraFocus->setCustomFocusPoint(QPointF(0.1, 0.1)); - QVERIFY(spy.count() == 1); -} - -// test constructor for abstract class of ImageProcessingControl -void tst_QCamera :: testImageProcessingControl() -{ - QObject parent; - MockImageProcessingControl processCtrl(&parent); -} - -void tst_QCamera::testSignalApertureChanged() -{ - QCamera camera; - - QCameraExposure *cameraExposure = camera.exposure(); //create camera expose instance - QVERIFY(cameraExposure != 0); - - QSignalSpy spyApertureChanged(cameraExposure , SIGNAL(apertureChanged(qreal))); - QSignalSpy spyApertureRangeChanged(cameraExposure , SIGNAL(apertureRangeChanged())); - - - QVERIFY(spyApertureChanged.count() ==0); - cameraExposure->setManualAperture(10.0);//set the ManualAperture to 10.0 - - QTest::qWait(100); - QVERIFY(spyApertureChanged.count() ==1); - QVERIFY(spyApertureRangeChanged.count() ==1); -} - -void tst_QCamera::testSignalExposureCompensationChanged() -{ - QCamera camera; - - QCameraExposure *cameraExposure = camera.exposure(); //create camera expose instance - QVERIFY(cameraExposure != 0); - - QSignalSpy spyExposureCompensationChanged(cameraExposure , SIGNAL(exposureCompensationChanged(qreal))); - - QVERIFY(spyExposureCompensationChanged.count() ==0); - - QVERIFY(cameraExposure->exposureCompensation() != 800); - cameraExposure->setExposureCompensation(2.0); - - QTest::qWait(100); - - QVERIFY(cameraExposure->exposureCompensation() == 2.0); - - QCOMPARE(spyExposureCompensationChanged.count(),1); - - // Setting the same should not result in a signal - cameraExposure->setExposureCompensation(2.0); - QTest::qWait(100); - - QVERIFY(cameraExposure->exposureCompensation() == 2.0); - QCOMPARE(spyExposureCompensationChanged.count(),1); -} - -void tst_QCamera::testSignalIsoSensitivityChanged() -{ - QCamera camera; - - QCameraExposure *cameraExposure = camera.exposure(); //create camera expose instance - QVERIFY(cameraExposure != 0); - - QSignalSpy spyisoSensitivityChanged(cameraExposure , SIGNAL(isoSensitivityChanged(int))); - - QVERIFY(spyisoSensitivityChanged.count() ==0); - - cameraExposure->setManualIsoSensitivity(800); //set the manualiso sentivity to 800 - QTest::qWait(100); - QVERIFY(spyisoSensitivityChanged.count() ==1); - -} -void tst_QCamera::testSignalShutterSpeedChanged() -{ - QCamera camera; - - QCameraExposure *cameraExposure = camera.exposure(); //create camera expose instance - QVERIFY(cameraExposure != 0); - - QSignalSpy spySignalShutterSpeedChanged(cameraExposure , SIGNAL(shutterSpeedChanged(qreal))); - QSignalSpy spySignalShutterSpeedRangeChanged(cameraExposure , SIGNAL(shutterSpeedRangeChanged())); - - QVERIFY(spySignalShutterSpeedChanged.count() ==0); - - cameraExposure->setManualShutterSpeed(2.0);//set the ManualShutterSpeed to 2.0 - QTest::qWait(100); - - QVERIFY(spySignalShutterSpeedChanged.count() ==1); - QVERIFY(spySignalShutterSpeedRangeChanged.count() ==1); -} - -void tst_QCamera::testSignalFlashReady() -{ - QCamera camera; - - QCameraExposure *cameraExposure = camera.exposure(); //create camera expose instance - QVERIFY(cameraExposure != 0); - - - QSignalSpy spyflashReady(cameraExposure,SIGNAL(flashReady(bool))); - - QVERIFY(spyflashReady.count() ==0); - - QVERIFY(cameraExposure->flashMode() ==QCameraExposure::FlashAuto); - - cameraExposure->setFlashMode(QCameraExposure::FlashOff);//set theFlashMode to QCameraExposure::FlashOff - - QVERIFY(cameraExposure->flashMode() ==QCameraExposure::FlashOff); - - QVERIFY(spyflashReady.count() ==1); -} - -// test constructor -void tst_QCamera::testExposureControlConstructor() -{ - // To check changes in abstract classes's pure virtual functions - MockCameraExposureControl obj; -} - -QTEST_MAIN(tst_QCamera) - -#include "tst_qcamera.moc" |