summaryrefslogtreecommitdiffstats
path: root/tests/auto/unit/multimediawidgets/qcamerawidgets/tst_qcamerawidgets.cpp
blob: 6c31a4b668a9c670192fe3dc1e1cea8bfade4439 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

#include <QtTest/QtTest>
#include <QDebug>

#include <private/qplatformcamera_p.h>
#include <private/qplatformimagecapture_p.h>
#include <qmediacapturesession.h>
#include <qcamera.h>
#include <qimagecapture.h>
#include <qgraphicsvideoitem.h>
#include <qobject.h>
#include <qvideowidget.h>
#include <qvideosink.h>

#include "qmockmediacapturesession.h"
#include "qmockintegration.h"

QT_USE_NAMESPACE

Q_ENABLE_MOCK_MULTIMEDIA_PLUGIN

class tst_QCameraWidgets: public QObject
{
    Q_OBJECT

public slots:
    void initTestCase();
    void cleanupTestCase();

private slots:
    void testCameraEncodingProperyChange();
    void testSetVideoOutput();
};

void tst_QCameraWidgets::initTestCase()
{
}


void tst_QCameraWidgets::cleanupTestCase()
{
}

void tst_QCameraWidgets::testCameraEncodingProperyChange()
{
    QMediaCaptureSession session;
    QCamera camera;
    QImageCapture imageCapture;
    session.setCamera(&camera);
    session.setImageCapture(&imageCapture);

    QSignalSpy activeChangedSignal(&camera, &QCamera::activeChanged);

    camera.start();
    QCOMPARE(camera.isActive(), true);

    QCOMPARE(activeChangedSignal.size(), 1);
}

void tst_QCameraWidgets::testSetVideoOutput()
{
    QVideoWidget widget;
    QGraphicsVideoItem item;
    QVideoSink surface;
    QMediaCaptureSession session;

    session.setVideoOutput(&widget);
    QVERIFY(session.videoSink() == widget.videoSink());
    QVERIFY(session.videoOutput() == &widget);

    session.setVideoOutput(&item);
    QVERIFY(session.videoSink() == item.videoSink());
    QVERIFY(session.videoOutput() == &item);

    session.setVideoOutput(nullptr);
    QVERIFY(session.videoSink() == nullptr);
    QVERIFY(session.videoOutput() == nullptr);

    session.setVideoOutput(&widget);
    QVERIFY(session.videoSink() == widget.videoSink());
    QVERIFY(session.videoOutput() == &widget);

    session.setVideoOutput(nullptr);
    QVERIFY(session.videoOutput() == nullptr);

    session.setVideoOutput(&surface);
    QVERIFY(session.videoSink() == &surface);
    QVERIFY(session.videoOutput() == &surface);

    session.setVideoSink(nullptr);
    QVERIFY(session.videoSink() == nullptr);
    QVERIFY(session.videoOutput() == nullptr);

    session.setVideoOutput(&surface);
    QVERIFY(session.videoSink() == &surface);
    QVERIFY(session.videoOutput() == &surface);

    session.setVideoSink(&surface);
    QVERIFY(session.videoSink() == &surface);
    QVERIFY(session.videoOutput() == nullptr);

    session.setVideoOutput(&widget);
    QVERIFY(session.videoSink() == widget.videoSink());
    QVERIFY(session.videoOutput() == &widget);

    session.setVideoOutput(&surface);
    QVERIFY(session.videoOutput() == &surface);
}

QTEST_MAIN(tst_QCameraWidgets)

#include "tst_qcamerawidgets.moc"