From 204b623a8cfe2b2c9fb95fcf7b71fe0f183a5302 Mon Sep 17 00:00:00 2001
From: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
Date: Wed, 15 Nov 2017 09:31:09 +0100
Subject: [PATCH] Add test for checking error handling on start

If a camera is not started successfully error() signal has to be
emitted.

This change adds a test for checking that we emit
and set the correct status and state when trying
to start an already active camera.

Task-number: QTBUG-51825
Change-Id: Ia14119aa9a93a76e363214401b8c2e9f216e35c9
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
---
 .../qcamerabackend/tst_qcamerabackend.cpp     | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp b/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp
index 5035cb6b1..b568f38fc 100644
--- a/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp
+++ b/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp
@@ -76,6 +76,7 @@ private slots:
     void testCtorWithPosition();
 
     void testCameraStates();
+    void testCameraStartError();
     void testCaptureMode();
     void testCameraCapture();
     void testCaptureToBuffer();
@@ -251,6 +252,27 @@ void tst_QCameraBackend::testCameraStates()
     QCOMPARE(errorSignal.count(), 0);
 }
 
+void tst_QCameraBackend::testCameraStartError()
+{
+    QCamera camera1(QCameraInfo::defaultCamera());
+    QCamera camera2(QCameraInfo::defaultCamera());
+    QSignalSpy errorSpy1(&camera1, QOverload<QCamera::Error>::of(&QCamera::error));
+    QSignalSpy errorSpy2(&camera2, QOverload<QCamera::Error>::of(&QCamera::error));
+
+    camera1.start();
+    camera2.start();
+
+    QCOMPARE(camera1.state(), QCamera::ActiveState);
+    QTRY_COMPARE(camera1.status(), QCamera::ActiveStatus);
+    QCOMPARE(camera1.error(), QCamera::NoError);
+    QCOMPARE(camera2.state(), QCamera::UnloadedState);
+    QCOMPARE(camera2.status(), QCamera::UnloadedStatus);
+    QCOMPARE(camera2.error(), QCamera::CameraError);
+
+    QCOMPARE(errorSpy1.count(), 0);
+    QCOMPARE(errorSpy2.count(), 1);
+}
+
 void tst_QCameraBackend::testCaptureMode()
 {
     QCamera camera;
-- 
GitLab