diff options
Diffstat (limited to 'tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp')
-rw-r--r-- | tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp | 169 |
1 files changed, 75 insertions, 94 deletions
diff --git a/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp b/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp index 52a34d4f4..bd1972550 100644 --- a/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp +++ b/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp @@ -1,32 +1,5 @@ -/**************************************************************************** -** -** 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 +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QtTest/QtTest> #include <QDebug> @@ -41,12 +14,13 @@ #include <qobject.h> #include <qmediadevices.h> -#include "qmockintegration_p.h" +#include "qmockintegration.h" #include "qmockmediacapturesession.h" #include "qmockcamera.h" QT_USE_NAMESPACE +Q_ENABLE_MOCK_MULTIMEDIA_PLUGIN class tst_QCamera: public QObject { @@ -97,13 +71,14 @@ private slots: void testSignalIsoSensitivityChanged(); void testSignalShutterSpeedChanged(); void testSignalFlashReady(); - -private: - QMockIntegration integration; }; void tst_QCamera::initTestCase() { +#ifdef Q_OS_MACOS + if (qEnvironmentVariable("QTEST_ENVIRONMENT").toLower() == "ci") + QSKIP("Flakiness on macOS CI, to be investigated, QTBUG-111812"); +#endif } void tst_QCamera::init() @@ -222,14 +197,14 @@ void tst_QCamera::testSimpleCameraCapture() QCOMPARE(imageCapture.error(), QImageCapture::NoError); QVERIFY(imageCapture.errorString().isEmpty()); - QSignalSpy errorSignal(&imageCapture, SIGNAL(errorOccurred(int,QImageCapture::Error,QString))); - imageCapture.captureToFile(QString::fromLatin1("/dev/null")); + QSignalSpy errorSignal(&imageCapture, &QImageCapture::errorOccurred); + imageCapture.captureToFile(QStringLiteral("/dev/null")); QCOMPARE(errorSignal.size(), 1); QCOMPARE(imageCapture.error(), QImageCapture::NotReadyError); QVERIFY(!imageCapture.errorString().isEmpty()); camera.start(); - imageCapture.captureToFile(QString::fromLatin1("/dev/null")); + imageCapture.captureToFile(QStringLiteral("/dev/null")); QCOMPARE(errorSignal.size(), 1); QCOMPARE(imageCapture.error(), QImageCapture::NoError); QVERIFY(imageCapture.errorString().isEmpty()); @@ -245,10 +220,10 @@ void tst_QCamera::testCameraCapture() QVERIFY(!imageCapture.isReadyForCapture()); - QSignalSpy capturedSignal(&imageCapture, SIGNAL(imageCaptured(int,QImage))); - QSignalSpy errorSignal(&imageCapture, SIGNAL(errorOccurred(int,QImageCapture::Error,QString))); + QSignalSpy capturedSignal(&imageCapture, &QImageCapture::imageCaptured); + QSignalSpy errorSignal(&imageCapture, &QImageCapture::errorOccurred); - imageCapture.captureToFile(QString::fromLatin1("/dev/null")); + imageCapture.captureToFile(QStringLiteral("/dev/null")); QCOMPARE(capturedSignal.size(), 0); QCOMPARE(errorSignal.size(), 1); QCOMPARE(imageCapture.error(), QImageCapture::NotReadyError); @@ -259,7 +234,7 @@ void tst_QCamera::testCameraCapture() QVERIFY(imageCapture.isReadyForCapture()); QCOMPARE(errorSignal.size(), 0); - imageCapture.captureToFile(QString::fromLatin1("/dev/null")); + imageCapture.captureToFile(QStringLiteral("/dev/null")); QTRY_COMPARE(capturedSignal.size(), 1); QCOMPARE(errorSignal.size(), 0); @@ -274,11 +249,11 @@ void tst_QCamera::testCameraCaptureMetadata() session.setCamera(&camera); session.setImageCapture(&imageCapture); - QSignalSpy metadataSignal(&imageCapture, SIGNAL(imageMetadataAvailable(int,const QMediaMetaData&))); - QSignalSpy savedSignal(&imageCapture, SIGNAL(imageSaved(int,QString))); + QSignalSpy metadataSignal(&imageCapture, &QImageCapture::imageMetadataAvailable); + QSignalSpy savedSignal(&imageCapture, &QImageCapture::imageSaved); camera.start(); - int id = imageCapture.captureToFile(QString::fromLatin1("/dev/null")); + int id = imageCapture.captureToFile(QStringLiteral("/dev/null")); QTRY_COMPARE(savedSignal.size(), 1); @@ -287,7 +262,7 @@ void tst_QCamera::testCameraCaptureMetadata() QVariantList metadata = metadataSignal[0]; QCOMPARE(metadata[0].toInt(), id); QMediaMetaData data = metadata[1].value<QMediaMetaData>(); - QCOMPARE(data.keys().length(), 2); + QCOMPARE(data.keys().size(), 2); QCOMPARE(data[QMediaMetaData::Author].toString(), "Author"); QCOMPARE(data[QMediaMetaData::Date].toDateTime().date().year(), 2021); } @@ -444,11 +419,11 @@ void tst_QCamera::testCameraEncodingProperyChange() session.setCamera(&camera); session.setImageCapture(&imageCapture); - QSignalSpy activeChangedSignal(&camera, SIGNAL(activeChanged(bool))); + QSignalSpy activeChangedSignal(&camera, &QCamera::activeChanged); camera.start(); QCOMPARE(camera.isActive(), true); - QCOMPARE(activeChangedSignal.count(), 1); + QCOMPARE(activeChangedSignal.size(), 1); } void tst_QCamera::testSetVideoOutput() @@ -625,32 +600,34 @@ void tst_QCamera::testErrorSignal() QMediaCaptureSession session; QCamera camera; session.setCamera(&camera); - auto *service = integration.lastCaptureService(); + auto *service = QMockIntegration::instance()->lastCaptureService(); Q_ASSERT(service); Q_ASSERT(service->mockCameraControl); - QSignalSpy spyError(&camera, SIGNAL(errorOccurred(QCamera::Error,const QString&))); + QSignalSpy spyError(&camera, &QCamera::errorOccurred); /* Set the QPlatformCamera error and verify if the signal is emitted correctly in QCamera */ - service->mockCameraControl->setError(QCamera::CameraError,QString("Camera Error")); + service->mockCameraControl->updateError(QCamera::CameraError, QStringLiteral("Camera Error")); - QVERIFY(spyError.count() == 1); + QVERIFY(spyError.size() == 1); QCamera::Error err = qvariant_cast<QCamera::Error >(spyError.at(0).at(0)); QVERIFY(err == QCamera::CameraError); spyError.clear(); /* Set the QPlatformCamera error and verify if the signal is emitted correctly in QCamera */ - service->mockCameraControl->setError(QCamera::CameraError,QString("InvalidRequestError Error")); - QVERIFY(spyError.count() == 1); + service->mockCameraControl->updateError(QCamera::CameraError, + QStringLiteral("InvalidRequestError Error")); + QVERIFY(spyError.size() == 1); err = qvariant_cast<QCamera::Error >(spyError.at(0).at(0)); QVERIFY(err == QCamera::CameraError); spyError.clear(); /* Set the QPlatformCamera error and verify if the signal is emitted correctly in QCamera */ - service->mockCameraControl->setError(QCamera::CameraError,QString("NotSupportedFeatureError Error")); - QVERIFY(spyError.count() == 1); + service->mockCameraControl->updateError(QCamera::CameraError, + QStringLiteral("NotSupportedFeatureError Error")); + QVERIFY(spyError.size() == 1); err = qvariant_cast<QCamera::Error >(spyError.at(0).at(0)); QVERIFY(err == QCamera::CameraError); @@ -662,18 +639,20 @@ void tst_QCamera::testError() QMediaCaptureSession session; QCamera camera; session.setCamera(&camera); - auto *service = integration.lastCaptureService(); + auto *service = QMockIntegration::instance()->lastCaptureService(); /* Set the QPlatformCamera error and verify if it is set correctly in QCamera */ - service->mockCameraControl->setError(QCamera::CameraError,QString("Camera Error")); + service->mockCameraControl->updateError(QCamera::CameraError, QStringLiteral("Camera Error")); QVERIFY(camera.error() == QCamera::CameraError); /* Set the QPlatformCamera error and verify if it is set correctly in QCamera */ - service->mockCameraControl->setError(QCamera::CameraError,QString("InvalidRequestError Error")); + service->mockCameraControl->updateError(QCamera::CameraError, + QStringLiteral("InvalidRequestError Error")); QVERIFY(camera.error() == QCamera::CameraError); /* Set the QPlatformCamera error and verify if it is set correctly in QCamera */ - service->mockCameraControl->setError(QCamera::CameraError,QString("CameraError Error")); + service->mockCameraControl->updateError(QCamera::CameraError, + QStringLiteral("CameraError Error")); QVERIFY(camera.error() == QCamera::CameraError); } @@ -684,19 +663,21 @@ void tst_QCamera::testErrorString() QMediaCaptureSession session; QCamera camera; session.setCamera(&camera); - auto *service = integration.lastCaptureService(); + auto *service = QMockIntegration::instance()->lastCaptureService(); /* Set the QPlatformCamera error and verify if it is set correctly in QCamera */ - service->mockCameraControl->setError(QCamera::CameraError,QString("Camera Error")); - QVERIFY(camera.errorString() == QString("Camera Error")); + service->mockCameraControl->updateError(QCamera::CameraError, QStringLiteral("Camera Error")); + QVERIFY(camera.errorString() == QStringLiteral("Camera Error")); /* Set the QPlatformCamera error and verify if it is set correctly in QCamera */ - service->mockCameraControl->setError(QCamera::CameraError,QString("InvalidRequestError Error")); - QVERIFY(camera.errorString() == QString("InvalidRequestError Error")); + service->mockCameraControl->updateError(QCamera::CameraError, + QStringLiteral("InvalidRequestError Error")); + QVERIFY(camera.errorString() == QStringLiteral("InvalidRequestError Error")); /* Set the QPlatformCamera error and verify if it is set correctly in QCamera */ - service->mockCameraControl->setError(QCamera::CameraError,QString("CameraError Error")); - QVERIFY(camera.errorString() == QString("CameraError Error")); + service->mockCameraControl->updateError(QCamera::CameraError, + QStringLiteral("CameraError Error")); + QVERIFY(camera.errorString() == QStringLiteral("CameraError Error")); } void tst_QCamera::testSetCameraFormat() @@ -704,34 +685,34 @@ void tst_QCamera::testSetCameraFormat() QCamera camera; QCameraDevice device = camera.cameraDevice(); auto videoFormats = device.videoFormats(); - QVERIFY(videoFormats.count()); + QVERIFY(videoFormats.size()); QCameraFormat cameraFormat = videoFormats.first(); - QSignalSpy spy(&camera, SIGNAL(cameraFormatChanged())); - QVERIFY(spy.count() == 0); + QSignalSpy spy(&camera, &QCamera::cameraFormatChanged); + QVERIFY(spy.size() == 0); camera.setCameraFormat(cameraFormat); - QCOMPARE(spy.count(), 1); + QCOMPARE(spy.size(), 1); QCOMPARE(camera.cameraFormat(), cameraFormat); QCOMPARE(camera.cameraFormat().pixelFormat(), QVideoFrameFormat::Format_ARGB8888); QCOMPARE(camera.cameraFormat().resolution(), QSize(640, 480)); QCOMPARE(camera.cameraFormat().minFrameRate(), 0); QCOMPARE(camera.cameraFormat().maxFrameRate(), 30); - QCOMPARE(spy.count(), 1); + QCOMPARE(spy.size(), 1); spy.clear(); camera.setCameraFormat({}); - QCOMPARE(spy.count(), 1); + QCOMPARE(spy.size(), 1); QCOMPARE(camera.cameraFormat(), QCameraFormat()); spy.clear(); camera.setCameraDevice(QMediaDevices::videoInputs().at(1)); - QCOMPARE(spy.count(), 1); + QCOMPARE(spy.size(), 1); QCOMPARE(camera.cameraFormat(), QCameraFormat()); camera.setCameraFormat(camera.cameraDevice().videoFormats().first()); QCOMPARE(camera.cameraFormat().pixelFormat(), QVideoFrameFormat::Format_XRGB8888); QCOMPARE(camera.cameraFormat().resolution(), QSize(1280, 720)); QCOMPARE(camera.cameraFormat().minFrameRate(), 0); QCOMPARE(camera.cameraFormat().maxFrameRate(), 30); - QCOMPARE(spy.count(), 2); + QCOMPARE(spy.size(), 2); } //Added this code to cover QCamera::FocusModeHyperfocal and QCamera::FocusModeAutoNear @@ -758,14 +739,14 @@ void tst_QCamera::testZoomChanged() QCamera camera; session.setCamera(&camera); - QSignalSpy spy(&camera, SIGNAL(zoomFactorChanged(float))); - QVERIFY(spy.count() == 0); + QSignalSpy spy(&camera, &QCamera::zoomFactorChanged); + QVERIFY(spy.size() == 0); camera.setZoomFactor(2.0); - QVERIFY(spy.count() == 1); + QVERIFY(spy.size() == 1); camera.zoomTo(3.0, 1); - QVERIFY(spy.count() == 2); + QVERIFY(spy.size() == 2); camera.zoomTo(1.0, 0); - QVERIFY(spy.count() == 3); + QVERIFY(spy.size() == 3); } void tst_QCamera::testMaxZoomChangedSignal() @@ -773,12 +754,12 @@ void tst_QCamera::testMaxZoomChangedSignal() QMediaCaptureSession session; QCamera camera; session.setCamera(&camera); - QMockCamera *mock = integration.lastCamera(); + QMockCamera *mock = QMockIntegration::instance()->lastCamera(); // ### change max zoom factor on backend, e.g. by changing camera - QSignalSpy spy(&camera, SIGNAL(maximumZoomFactorChanged(float))); + QSignalSpy spy(&camera, &QCamera::maximumZoomFactorChanged); mock->maximumZoomFactorChanged(55); - QVERIFY(spy.count() == 1); + QVERIFY(spy.size() == 1); QCOMPARE(camera.maximumZoomFactor(), 55); } @@ -788,9 +769,9 @@ void tst_QCamera::testSignalExposureCompensationChanged() QCamera camera; session.setCamera(&camera); - QSignalSpy spyExposureCompensationChanged(&camera, SIGNAL(exposureCompensationChanged(float))); + QSignalSpy spyExposureCompensationChanged(&camera, &QCamera::exposureCompensationChanged); - QVERIFY(spyExposureCompensationChanged.count() ==0); + QVERIFY(spyExposureCompensationChanged.size() == 0); QVERIFY(camera.exposureCompensation() != 800); camera.setExposureCompensation(2.0); @@ -799,14 +780,14 @@ void tst_QCamera::testSignalExposureCompensationChanged() QVERIFY(camera.exposureCompensation() == 2.0); - QCOMPARE(spyExposureCompensationChanged.count(),1); + QCOMPARE(spyExposureCompensationChanged.size(),1); // Setting the same should not result in a signal camera.setExposureCompensation(2.0); QTest::qWait(100); QVERIFY(camera.exposureCompensation() == 2.0); - QCOMPARE(spyExposureCompensationChanged.count(),1); + QCOMPARE(spyExposureCompensationChanged.size(),1); } void tst_QCamera::testSignalIsoSensitivityChanged() @@ -815,13 +796,13 @@ void tst_QCamera::testSignalIsoSensitivityChanged() QCamera camera; session.setCamera(&camera); - QSignalSpy spyisoSensitivityChanged(&camera, SIGNAL(isoSensitivityChanged(int))); + QSignalSpy spyisoSensitivityChanged(&camera, &QCamera::isoSensitivityChanged); - QVERIFY(spyisoSensitivityChanged.count() ==0); + QVERIFY(spyisoSensitivityChanged.size() ==0); camera.setManualIsoSensitivity(800); //set the manualiso sentivity to 800 QTest::qWait(100); - QVERIFY(spyisoSensitivityChanged.count() ==1); + QVERIFY(spyisoSensitivityChanged.size() ==1); } void tst_QCamera::testSignalShutterSpeedChanged() @@ -830,14 +811,14 @@ void tst_QCamera::testSignalShutterSpeedChanged() QCamera camera; session.setCamera(&camera); - QSignalSpy spySignalExposureTimeChanged(&camera, SIGNAL(exposureTimeChanged(float))); + QSignalSpy spySignalExposureTimeChanged(&camera, &QCamera::exposureTimeChanged); - QVERIFY(spySignalExposureTimeChanged.count() ==0); + QVERIFY(spySignalExposureTimeChanged.size() == 0); camera.setManualExposureTime(2.0);//set the ManualShutterSpeed to 2.0 QTest::qWait(100); - QVERIFY(spySignalExposureTimeChanged.count() ==1); + QVERIFY(spySignalExposureTimeChanged.size() ==1); } void tst_QCamera::testSignalFlashReady() @@ -846,9 +827,9 @@ void tst_QCamera::testSignalFlashReady() QCamera camera; session.setCamera(&camera); - QSignalSpy spyflashReady(&camera,SIGNAL(flashReady(bool))); + QSignalSpy spyflashReady(&camera, &QCamera::flashReady); - QVERIFY(spyflashReady.count() == 0); + QVERIFY(spyflashReady.size() == 0); QVERIFY(camera.flashMode() == QCamera::FlashAuto); @@ -856,7 +837,7 @@ void tst_QCamera::testSignalFlashReady() QVERIFY(camera.flashMode() == QCamera::FlashOff); - QCOMPARE(spyflashReady.count(), 1); + QCOMPARE(spyflashReady.size(), 1); } QTEST_MAIN(tst_QCamera) |