Split some of the autotests into widget and non widget parts.

Since the tests are mostly not widget based.

Change-Id: Ic3fa4224b19f2a5c710fd4763b5e645252975c1c
Reviewed-on: http://codereview.qt-project.org/4174
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
This commit is contained in:
Michael Goddard
2011-09-05 16:13:46 +10:00
committed by Qt by Nokia
parent 461a37b412
commit d690596868
30 changed files with 856 additions and 146 deletions

View File

@@ -22,6 +22,11 @@ SUBDIRS += \
qvideosurfaceformat \
qmetadatareadercontrol \
qmetadatawritercontrol \
qmediaplayer \
qcameraimagecapture \
qmediaobject \
qcamera \
qcamerabackend \
# These is disabled until intent is clearer
# qvideodevicecontrol \
@@ -38,6 +43,7 @@ contains (QT_CONFIG, private_tests) {
SUBDIRS += \
qmediaplaylist \
qmediapluginloader \
qmediaimageviewer \
qmediaserviceprovider
contains (QT_CONFIG, declarative) {

View File

@@ -1,12 +1,9 @@
TEMPLATE = subdirs
SUBDIRS += \
qcamera \
qcamerabackend \
qcameraimagecapture \
qcameraviewfinder \
qmediaobject \
qmediaplayer
qcamerawidgets \
qmediaplayerwidgets \
# This is a commment for the mock backend directory so that maketestselftest
# doesn't believe it's an untested directory
@@ -17,8 +14,8 @@ SUBDIRS += \
contains (QT_CONFIG, private_tests) {
SUBDIRS += \
qgraphicsvideoitem \
qmediaimageviewer \
qpaintervideosurface \
qmediaimageviewerwidgets \
qvideowidget \
contains (QT_CONFIG, declarative) {

View File

@@ -1,6 +1,6 @@
load(qttest_p4)
QT += multimediakit-private multimediakitwidgets-private
QT += multimediakit-private
CONFIG += no_private_qt_headers_warning
include (../qmultimedia_common/mock.pri)

View File

@@ -58,10 +58,7 @@
#include <qmediaservice.h>
#include <qcamera.h>
#include <qcameraimagecapture.h>
#include <qgraphicsvideoitem.h>
#include <qvideorenderercontrol.h>
#include <qvideowidget.h>
#include <qvideowindowcontrol.h>
#include "mockcameraservice.h"
@@ -1037,39 +1034,10 @@ void tst_QCamera::testCameraEncodingProperyChange()
QCOMPARE(camera.status(), QCamera::ActiveStatus);
QCOMPARE(stateChangedSignal.count(), 0);
QCOMPARE(statusChangedSignal.count(), 1);
stateChangedSignal.clear();
statusChangedSignal.clear();
//setting the viewfinder should also trigger backend to be restarted:
camera.setViewfinder(new QGraphicsVideoItem());
QCOMPARE(camera.state(), QCamera::ActiveState);
QCOMPARE(camera.status(), QCamera::LoadedStatus);
QCOMPARE(stateChangedSignal.count(), 0);
QCOMPARE(statusChangedSignal.count(), 1);
QTest::qWait(10);
service.mockControl->m_propertyChangesSupported = true;
//the changes to encoding settings,
//capture mode and encoding parameters should not trigger service restart
stateChangedSignal.clear();
statusChangedSignal.clear();
camera.setCaptureMode(QCamera::CaptureVideo);
camera.setCaptureMode(QCamera::CaptureStillImage);
imageCapture.setEncodingSettings(QImageEncoderSettings());
imageCapture.setEncodingSettings(QImageEncoderSettings());
camera.setViewfinder(new QGraphicsVideoItem());
QCOMPARE(stateChangedSignal.count(), 0);
QCOMPARE(statusChangedSignal.count(), 0);
}
void tst_QCamera::testSetVideoOutput()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockCameraService service;
@@ -1077,21 +1045,9 @@ void tst_QCamera::testSetVideoOutput()
provider.service = &service;
QCamera camera(0, &provider);
camera.setViewfinder(&widget);
QVERIFY(widget.mediaObject() == &camera);
camera.setViewfinder(&item);
QVERIFY(widget.mediaObject() == 0);
QVERIFY(item.mediaObject() == &camera);
camera.setViewfinder(reinterpret_cast<QVideoWidget *>(0));
QVERIFY(item.mediaObject() == 0);
camera.setViewfinder(&widget);
QVERIFY(widget.mediaObject() == &camera);
camera.setViewfinder(reinterpret_cast<QGraphicsVideoItem *>(0));
QVERIFY(widget.mediaObject() == 0);
camera.setViewfinder(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
@@ -1102,56 +1058,37 @@ void tst_QCamera::testSetVideoOutput()
camera.setViewfinder(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
camera.setViewfinder(&widget);
camera.setViewfinder(reinterpret_cast<QVideoWidget *>(0));
QVERIFY(service.rendererControl->surface() == 0);
QVERIFY(widget.mediaObject() == &camera);
camera.setViewfinder(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
QVERIFY(widget.mediaObject() == 0);
}
void tst_QCamera::testSetVideoOutputNoService()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockMediaServiceProvider provider;
provider.service = 0;
QCamera camera(0, &provider);
camera.setViewfinder(&widget);
QVERIFY(widget.mediaObject() == 0);
camera.setViewfinder(&item);
QVERIFY(item.mediaObject() == 0);
camera.setViewfinder(&surface);
// Nothing we can verify here other than it doesn't assert.
}
void tst_QCamera::testSetVideoOutputNoControl()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockCameraService service;
service.rendererRef = 1;
service.windowRef = 1;
MockMediaServiceProvider provider;
provider.service = &service;
QCamera camera(0, &provider);
camera.setViewfinder(&widget);
QVERIFY(widget.mediaObject() == 0);
camera.setViewfinder(&item);
QVERIFY(item.mediaObject() == 0);
camera.setViewfinder(&surface);
QVERIFY(service.rendererControl->surface() == 0);
}

View File

@@ -1,6 +1,6 @@
load(qttest_p4)
QT += multimediakit-private multimediakitwidgets-private
QT += multimediakit-private
CONFIG += no_private_qt_headers_warning
SOURCES += \

View File

@@ -63,8 +63,6 @@ Reviewer Name Date Coverage ( Full / Test Case IDs ).
#include <qmediaservice.h>
#include <qcamera.h>
#include <qcameraimagecapture.h>
#include <qgraphicsvideoitem.h>
#include <qcameraviewfinder.h>
#include "mockcameraservice.h"
#include "mockmediaserviceprovider.h"

View File

@@ -0,0 +1,11 @@
load(qttest_p4)
QT += multimediakit-private multimediakitwidgets-private
CONFIG += no_private_qt_headers_warning
include (../qmultimedia_common/mock.pri)
include (../qmultimedia_common/mockcamera.pri)
SOURCES += tst_qcamerawidgets.cpp
maemo*:CONFIG += insignificant_test

View File

@@ -0,0 +1,319 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
** $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 <qcameraimagecapture.h>
#include <qgraphicsvideoitem.h>
#include <qvideorenderercontrol.h>
#include <qvideowidget.h>
#include <qvideowindowcontrol.h>
#include "mockcameraservice.h"
#include "mockmediaserviceprovider.h"
#include "mockvideosurface.h"
#include "mockvideorenderercontrol.h"
#include "mockvideowindowcontrol.h"
QT_USE_NAMESPACE
Q_DECLARE_METATYPE(QtMultimediaKit::MetaData)
class tst_QCameraWidgets: public QObject
{
Q_OBJECT
public slots:
void initTestCase();
void cleanupTestCase();
private slots:
void testCameraEncodingProperyChange();
void testSetVideoOutput();
void testSetVideoOutputNoService();
void testSetVideoOutputNoControl();
private:
MockSimpleCameraService *mockSimpleCameraService;
MockMediaServiceProvider *provider;
};
void tst_QCameraWidgets::initTestCase()
{
provider = new MockMediaServiceProvider;
mockSimpleCameraService = new MockSimpleCameraService;
provider->service = mockSimpleCameraService;
qRegisterMetaType<QtMultimediaKit::MetaData>("QtMultimediaKit::MetaData");
}
void tst_QCameraWidgets::cleanupTestCase()
{
delete mockSimpleCameraService;
delete provider;
}
void tst_QCameraWidgets::testCameraEncodingProperyChange()
{
MockCameraService service;
provider->service = &service;
QCamera camera(0, provider);
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();
QTest::qWait(10);
QCOMPARE(camera.state(), QCamera::ActiveState);
QCOMPARE(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);
QTest::qWait(10);
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();
QTest::qWait(10);
QCOMPARE(camera.state(), QCamera::ActiveState);
QCOMPARE(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();
QTest::qWait(10);
QCOMPARE(camera.state(), QCamera::ActiveState);
QCOMPARE(camera.status(), QCamera::ActiveStatus);
QCOMPARE(stateChangedSignal.count(), 0);
QCOMPARE(statusChangedSignal.count(), 1);
stateChangedSignal.clear();
statusChangedSignal.clear();
//setting the viewfinder should also trigger backend to be restarted:
camera.setViewfinder(new QGraphicsVideoItem());
QCOMPARE(camera.state(), QCamera::ActiveState);
QCOMPARE(camera.status(), QCamera::LoadedStatus);
QCOMPARE(stateChangedSignal.count(), 0);
QCOMPARE(statusChangedSignal.count(), 1);
QTest::qWait(10);
service.mockControl->m_propertyChangesSupported = true;
//the changes to encoding settings,
//capture mode and encoding parameters should not trigger service restart
stateChangedSignal.clear();
statusChangedSignal.clear();
camera.setCaptureMode(QCamera::CaptureVideo);
camera.setCaptureMode(QCamera::CaptureStillImage);
imageCapture.setEncodingSettings(QImageEncoderSettings());
imageCapture.setEncodingSettings(QImageEncoderSettings());
camera.setViewfinder(new QGraphicsVideoItem());
QCOMPARE(stateChangedSignal.count(), 0);
QCOMPARE(statusChangedSignal.count(), 0);
}
void tst_QCameraWidgets::testSetVideoOutput()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockCameraService service;
MockMediaServiceProvider provider;
provider.service = &service;
QCamera camera(0, &provider);
camera.setViewfinder(&widget);
qDebug() << widget.mediaObject();
QVERIFY(widget.mediaObject() == &camera);
camera.setViewfinder(&item);
QVERIFY(widget.mediaObject() == 0);
QVERIFY(item.mediaObject() == &camera);
camera.setViewfinder(reinterpret_cast<QVideoWidget *>(0));
QVERIFY(item.mediaObject() == 0);
camera.setViewfinder(&widget);
QVERIFY(widget.mediaObject() == &camera);
camera.setViewfinder(reinterpret_cast<QGraphicsVideoItem *>(0));
QVERIFY(widget.mediaObject() == 0);
camera.setViewfinder(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
camera.setViewfinder(reinterpret_cast<QAbstractVideoSurface *>(0));
QVERIFY(service.rendererControl->surface() == 0);
camera.setViewfinder(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
camera.setViewfinder(&widget);
QVERIFY(service.rendererControl->surface() == 0);
QVERIFY(widget.mediaObject() == &camera);
camera.setViewfinder(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
QVERIFY(widget.mediaObject() == 0);
}
void tst_QCameraWidgets::testSetVideoOutputNoService()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockMediaServiceProvider provider;
provider.service = 0;
QCamera camera(0, &provider);
camera.setViewfinder(&widget);
QVERIFY(widget.mediaObject() == 0);
camera.setViewfinder(&item);
QVERIFY(item.mediaObject() == 0);
camera.setViewfinder(&surface);
// Nothing we can verify here other than it doesn't assert.
}
void tst_QCameraWidgets::testSetVideoOutputNoControl()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockCameraService service;
service.rendererRef = 1;
service.windowRef = 1;
MockMediaServiceProvider provider;
provider.service = &service;
QCamera camera(0, &provider);
camera.setViewfinder(&widget);
QVERIFY(widget.mediaObject() == 0);
camera.setViewfinder(&item);
QVERIFY(item.mediaObject() == 0);
camera.setViewfinder(&surface);
QVERIFY(service.rendererControl->surface() == 0);
}
QTEST_MAIN(tst_QCameraWidgets)
#include "tst_qcamerawidgets.moc"

View File

@@ -1,6 +1,6 @@
load(qttest_p4)
QT += multimediakit-private multimediakitwidgets-private declarative
QT += multimediakit-private declarative
CONFIG += no_private_qt_headers_warning
HEADERS += \

View File

@@ -1,6 +1,6 @@
load(qttest_p4)
QT += multimediakit-private multimediakitwidgets-private network
QT += multimediakit-private network
CONFIG += no_private_qt_headers_warning
SOURCES += tst_qmediaimageviewer.cpp

View File

@@ -46,14 +46,11 @@
#include <QtCore/qdir.h>
#include <qgraphicsvideoitem.h>
#include <qmediaimageviewer.h>
#include <private/qmediaimageviewerservice_p.h>
#include <qmediaplaylist.h>
#include <qmediaservice.h>
#include <qvideorenderercontrol.h>
#include <qvideowidget.h>
#include <qvideowidgetcontrol.h>
#include <QtCore/qfile.h>
#include <QtNetwork/qnetworkaccessmanager.h>
@@ -998,25 +995,11 @@ void tst_QMediaImageViewer::setVideoOutput()
if (imageViewer.mediaStatus() != QMediaImageViewer::LoadedMedia)
QSKIP("failed to load test image", SkipSingle);
QVideoWidget widget;
QGraphicsVideoItem item;
QtTestVideoSurface surface;
imageViewer.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == &imageViewer);
imageViewer.setVideoOutput(&item);
QVERIFY(widget.mediaObject() == 0);
QVERIFY(item.mediaObject() == &imageViewer);
imageViewer.setVideoOutput(reinterpret_cast<QVideoWidget *>(0));
QVERIFY(item.mediaObject() == 0);
imageViewer.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == &imageViewer);
imageViewer.setVideoOutput(reinterpret_cast<QGraphicsVideoItem *>(0));
QVERIFY(widget.mediaObject() == 0);
imageViewer.setVideoOutput(&surface);
QVERIFY(surface.isActive());
@@ -1027,13 +1010,11 @@ void tst_QMediaImageViewer::setVideoOutput()
imageViewer.setVideoOutput(&surface);
QVERIFY(surface.isActive());
imageViewer.setVideoOutput(&widget);
imageViewer.setVideoOutput(reinterpret_cast<QVideoWidget *>(0));
QVERIFY(!surface.isActive());
QVERIFY(widget.mediaObject() == &imageViewer);
imageViewer.setVideoOutput(&surface);
QVERIFY(surface.isActive());
QVERIFY(widget.mediaObject() == 0);
}
void tst_QMediaImageViewer::debugEnums()

View File

@@ -0,0 +1,5 @@
<RCC>
<qresource prefix="/">
<file>images/image.png</file>
</qresource>
</RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

View File

@@ -0,0 +1,15 @@
load(qttest_p4)
QT += multimediakit-private multimediakitwidgets-private network
CONFIG += no_private_qt_headers_warning
SOURCES += tst_qmediaimageviewerwidgets.cpp
RESOURCES += \
images.qrc
!contains(QT_CONFIG, no-jpeg):DEFINES += QTEST_HAVE_JPEG
wince* {
!contains(QT_CONFIG, no-jpeg): DEPLOYMENT_PLUGIN += qjpeg
}

View File

@@ -0,0 +1,142 @@
/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
//TESTED_COMPONENT=src/multimedia
#include <qtmultimediakitdefs.h>
#include <QtTest/QtTest>
#include <QtCore/qdir.h>
#include <qgraphicsvideoitem.h>
#include <qmediaimageviewer.h>
#include <private/qmediaimageviewerservice_p.h>
#include <qmediaplaylist.h>
#include <qmediaservice.h>
#include <qvideorenderercontrol.h>
#include <qvideowidget.h>
#include <qvideowidgetcontrol.h>
#include <qabstractvideosurface.h>
#include <qvideosurfaceformat.h>
QT_USE_NAMESPACE
class tst_QMediaImageViewerWidgets : public QObject
{
Q_OBJECT
private slots:
void setVideoOutput();
};
class QtTestVideoSurface : public QAbstractVideoSurface
{
public:
QList<QVideoFrame::PixelFormat> supportedPixelFormats(
QAbstractVideoBuffer::HandleType handleType) const {
QList<QVideoFrame::PixelFormat> formats;
if (handleType == QAbstractVideoBuffer::NoHandle) {
formats << QVideoFrame::Format_RGB32;
}
return formats;
}
QVideoFrame frame() const { return m_frame; }
bool present(const QVideoFrame &frame) { m_frame = frame; return true; }
private:
QVideoFrame m_frame;
};
void tst_QMediaImageViewerWidgets::setVideoOutput()
{
QMediaImageViewer imageViewer;
imageViewer.setMedia(QMediaContent(QUrl("qrc:///images/image.png")));
connect(&imageViewer, SIGNAL(mediaStatusChanged(QMediaImageViewer::MediaStatus)),
&QTestEventLoop::instance(), SLOT(exitLoop()));
QTestEventLoop::instance().enterLoop(2);
if (imageViewer.mediaStatus() != QMediaImageViewer::LoadedMedia)
QSKIP("failed to load test image", SkipSingle);
QVideoWidget widget;
QGraphicsVideoItem item;
QtTestVideoSurface surface;
imageViewer.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == &imageViewer);
imageViewer.setVideoOutput(&item);
QVERIFY(widget.mediaObject() == 0);
QVERIFY(item.mediaObject() == &imageViewer);
imageViewer.setVideoOutput(reinterpret_cast<QVideoWidget *>(0));
QVERIFY(item.mediaObject() == 0);
imageViewer.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == &imageViewer);
imageViewer.setVideoOutput(reinterpret_cast<QGraphicsVideoItem *>(0));
QVERIFY(widget.mediaObject() == 0);
imageViewer.setVideoOutput(&surface);
QVERIFY(surface.isActive());
imageViewer.setVideoOutput(reinterpret_cast<QAbstractVideoSurface *>(0));
QVERIFY(!surface.isActive());
imageViewer.setVideoOutput(&surface);
QVERIFY(surface.isActive());
imageViewer.setVideoOutput(&widget);
QVERIFY(!surface.isActive());
QVERIFY(widget.mediaObject() == &imageViewer);
imageViewer.setVideoOutput(&surface);
QVERIFY(surface.isActive());
QVERIFY(widget.mediaObject() == 0);
}
QTEST_MAIN(tst_QMediaImageViewerWidgets)
#include "tst_qmediaimageviewerwidgets.moc"

View File

@@ -1,6 +1,6 @@
load(qttest_p4)
QT += multimediakit-private multimediakitwidgets
QT += multimediakit-private
CONFIG += no_private_qt_headers_warning
include (../qmultimedia_common/mockrecorder.pri)

View File

@@ -42,7 +42,6 @@
//TESTED_COMPONENT=src/multimedia
#include "tst_qmediaobject.h"
#include "qvideowidget.h"
#include "mockmediarecorderservice.h"
#include "mockmediaserviceprovider.h"

View File

@@ -1,6 +1,6 @@
load(qttest_p4)
QT += network multimediakit-private multimediakitwidgets-private
QT += network multimediakit-private
CONFIG += no_private_qt_headers_warning
HEADERS += tst_qmediaplayer.h

View File

@@ -43,7 +43,6 @@
#include "tst_qmediaplayer.h"
#include <qgraphicsvideoitem.h>
#include <QtNetwork/qnetworkconfigmanager.h>
// Encouraging successful diversity through copy and paste.
@@ -936,29 +935,14 @@ void tst_QMediaPlayer::testNetworkAccess()
void tst_QMediaPlayer::testSetVideoOutput()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockMediaPlayerService service;
MockMediaServiceProvider provider(&service);
QMediaPlayer player(0, 0, &provider);
player.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == &player);
player.setVideoOutput(&item);
QVERIFY(widget.mediaObject() == 0);
QVERIFY(item.mediaObject() == &player);
player.setVideoOutput(reinterpret_cast<QVideoWidget *>(0));
QVERIFY(item.mediaObject() == 0);
player.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == &player);
player.setVideoOutput(reinterpret_cast<QGraphicsVideoItem *>(0));
QVERIFY(widget.mediaObject() == 0);
player.setVideoOutput(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
@@ -969,54 +953,35 @@ void tst_QMediaPlayer::testSetVideoOutput()
player.setVideoOutput(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
player.setVideoOutput(&widget);
player.setVideoOutput(reinterpret_cast<QVideoWidget *>(0));
QVERIFY(service.rendererControl->surface() == 0);
QVERIFY(widget.mediaObject() == &player);
player.setVideoOutput(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
QVERIFY(widget.mediaObject() == 0);
}
void tst_QMediaPlayer::testSetVideoOutputNoService()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockMediaServiceProvider provider(0, true);
QMediaPlayer player(0, 0, &provider);
player.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == 0);
player.setVideoOutput(&item);
QVERIFY(item.mediaObject() == 0);
player.setVideoOutput(&surface);
// Nothing we can verify here other than it doesn't assert.
}
void tst_QMediaPlayer::testSetVideoOutputNoControl()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockMediaPlayerService service;
service.rendererRef = 1;
service.windowRef = 1;
MockMediaServiceProvider provider(&service);
QMediaPlayer player(0, 0, &provider);
player.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == 0);
player.setVideoOutput(&item);
QVERIFY(item.mediaObject() == 0);
player.setVideoOutput(&surface);
QVERIFY(service.rendererControl->surface() == 0);
}

View File

@@ -54,7 +54,6 @@
#include <qmediastreamscontrol.h>
#include <qmedianetworkaccesscontrol.h>
#include <qvideorenderercontrol.h>
#include <qvideowindowcontrol.h>
#include "mockmediaserviceprovider.h"
#include "mockmediaplayerservice.h"

View File

@@ -0,0 +1,53 @@
/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtCore/qcoreapplication.h>
#include <QtTest/QtTest>
#include "tst_qmediaplayerwidgets.h"
int main(int argc, char**argv)
{
QApplication app(argc,argv);
int ret;
tst_QMediaPlayerWidgets test_api;
ret = QTest::qExec(&test_api, argc, argv);
return ret;
}

View File

@@ -0,0 +1,10 @@
load(qttest_p4)
QT += network multimediakit-private multimediakitwidgets-private
CONFIG += no_private_qt_headers_warning
HEADERS += tst_qmediaplayerwidgets.h
SOURCES += main.cpp tst_qmediaplayerwidgets.cpp
include (../qmultimedia_common/mock.pri)
include (../qmultimedia_common/mockplayer.pri)

View File

@@ -0,0 +1,162 @@
/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
//TESTED_COMPONENT=src/multimedia
#include "tst_qmediaplayerwidgets.h"
#include "mockvideosurface.h"
#include <qgraphicsvideoitem.h>
QT_USE_NAMESPACE
void tst_QMediaPlayerWidgets::initTestCase()
{
qRegisterMetaType<QMediaPlayer::State>("QMediaPlayer::State");
qRegisterMetaType<QMediaPlayer::Error>("QMediaPlayer::Error");
qRegisterMetaType<QMediaPlayer::MediaStatus>("QMediaPlayer::MediaStatus");
qRegisterMetaType<QMediaContent>("QMediaContent");
mockService = new MockMediaPlayerService;
mockProvider = new MockMediaServiceProvider(mockService, true);
player = new QMediaPlayer(0, 0, mockProvider);
}
void tst_QMediaPlayerWidgets::cleanupTestCase()
{
delete player;
}
void tst_QMediaPlayerWidgets::init()
{
mockService->reset();
}
void tst_QMediaPlayerWidgets::cleanup()
{
}
void tst_QMediaPlayerWidgets::testSetVideoOutput()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockMediaPlayerService service;
MockMediaServiceProvider provider(&service);
QMediaPlayer player(0, 0, &provider);
player.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == &player);
player.setVideoOutput(&item);
QVERIFY(widget.mediaObject() == 0);
QVERIFY(item.mediaObject() == &player);
player.setVideoOutput(reinterpret_cast<QVideoWidget *>(0));
QVERIFY(item.mediaObject() == 0);
player.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == &player);
player.setVideoOutput(reinterpret_cast<QGraphicsVideoItem *>(0));
QVERIFY(widget.mediaObject() == 0);
player.setVideoOutput(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
player.setVideoOutput(reinterpret_cast<QAbstractVideoSurface *>(0));
QVERIFY(service.rendererControl->surface() == 0);
player.setVideoOutput(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
player.setVideoOutput(&widget);
QVERIFY(service.rendererControl->surface() == 0);
QVERIFY(widget.mediaObject() == &player);
player.setVideoOutput(&surface);
QVERIFY(service.rendererControl->surface() == &surface);
QVERIFY(widget.mediaObject() == 0);
}
void tst_QMediaPlayerWidgets::testSetVideoOutputNoService()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockMediaServiceProvider provider(0, true);
QMediaPlayer player(0, 0, &provider);
player.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == 0);
player.setVideoOutput(&item);
QVERIFY(item.mediaObject() == 0);
player.setVideoOutput(&surface);
// Nothing we can verify here other than it doesn't assert.
}
void tst_QMediaPlayerWidgets::testSetVideoOutputNoControl()
{
QVideoWidget widget;
QGraphicsVideoItem item;
MockVideoSurface surface;
MockMediaPlayerService service;
service.rendererRef = 1;
service.windowRef = 1;
MockMediaServiceProvider provider(&service);
QMediaPlayer player(0, 0, &provider);
player.setVideoOutput(&widget);
QVERIFY(widget.mediaObject() == 0);
player.setVideoOutput(&item);
QVERIFY(item.mediaObject() == 0);
player.setVideoOutput(&surface);
QVERIFY(service.rendererControl->surface() == 0);
}

View File

@@ -0,0 +1,79 @@
/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef TST_QMEDIAPLAYER_H
#define TST_QMEDIAPLAYER_H
#include <QtTest/QtTest>
#include <QtCore/qdebug.h>
#include <QtCore/qbuffer.h>
#include <QtNetwork/qnetworkconfiguration.h>
#include <qabstractvideosurface.h>
#include <qmediaplayer.h>
#include <qmediaplayercontrol.h>
#include "mockmediaserviceprovider.h"
#include "mockmediaplayerservice.h"
QT_USE_NAMESPACE
class tst_QMediaPlayerWidgets: public QObject
{
Q_OBJECT
public slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
private slots:
void testSetVideoOutput();
void testSetVideoOutputNoService();
void testSetVideoOutputNoControl();
private:
MockMediaServiceProvider *mockProvider;
MockMediaPlayerService *mockService;
QMediaPlayer *player;
};
#endif //TST_QMEDIAPLAYER_H

View File

@@ -1,6 +1,6 @@
load(qttest_p4)
QT += multimediakit-private multimediakitwidgets-private
QT += multimediakit-private
CONFIG += no_private_qt_headers_warning
SOURCES += \

View File

@@ -55,7 +55,10 @@
#include "../qmultimedia_common/mockcameracontrol.h"
#include "../qmultimedia_common/mockvideosurface.h"
#include "../qmultimedia_common/mockvideorenderercontrol.h"
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
#include "../qmultimedia_common/mockvideowindowcontrol.h"
#endif
class MockSimpleCameraService : public QMediaService
{
@@ -102,7 +105,9 @@ public:
mockImageProcessingControl = new MockImageProcessingControl(this);
mockImageEncoderControl = new MockImageEncoderControl(this);
rendererControl = new MockVideoRendererControl(this);
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
windowControl = new MockVideoWindowControl(this);
#endif
rendererRef = 0;
windowRef = 0;
}
@@ -148,12 +153,15 @@ public:
rendererRef += 1;
return rendererControl;
}
} else if (qstrcmp(iid, QVideoWindowControl_iid) == 0) {
}
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
if (qstrcmp(iid, QVideoWindowControl_iid) == 0) {
if (windowRef == 0) {
windowRef += 1;
return windowControl;
}
}
#endif
return 0;
}
@@ -161,8 +169,10 @@ public:
{
if (control == rendererControl)
rendererRef -= 1;
else if (control == windowControl)
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
if (control == windowControl)
windowRef -= 1;
#endif
}
MockCameraControl *mockControl;
@@ -176,7 +186,9 @@ public:
MockImageProcessingControl *mockImageProcessingControl;
MockImageEncoderControl *mockImageEncoderControl;
MockVideoRendererControl *rendererControl;
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
MockVideoWindowControl *windowControl;
#endif
int rendererRef;
int windowRef;
};

View File

@@ -48,7 +48,9 @@
#include "mockmediastreamscontrol.h"
#include "mockmedianetworkaccesscontrol.h"
#include "mockvideorenderercontrol.h"
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
#include "mockvideowindowcontrol.h"
#endif
class MockMediaPlayerService : public QMediaService
{
@@ -61,9 +63,11 @@ public:
mockStreamsControl = new MockStreamsControl;
mockNetworkControl = new MockNetworkAccessControl;
rendererControl = new MockVideoRendererControl;
windowControl = new MockVideoWindowControl;
rendererRef = 0;
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
windowControl = new MockVideoWindowControl;
windowRef = 0;
#endif
}
~MockMediaPlayerService()
@@ -72,7 +76,9 @@ public:
delete mockStreamsControl;
delete mockNetworkControl;
delete rendererControl;
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
delete windowControl;
#endif
}
QMediaControl* requestControl(const char *iid)
@@ -84,13 +90,15 @@ public:
rendererRef += 1;
return rendererControl;
}
} else if (qstrcmp(iid, QVideoWindowControl_iid) == 0) {
}
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
if (qstrcmp(iid, QVideoWindowControl_iid) == 0) {
if (windowRef == 0) {
windowRef += 1;
return windowControl;
}
}
#endif
if (qstrcmp(iid, QMediaNetworkAccessControl_iid) == 0)
return mockNetworkControl;
@@ -101,8 +109,10 @@ public:
{
if (control == rendererControl)
rendererRef -= 1;
else if (control == windowControl)
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
if (control == windowControl)
windowRef -= 1;
#endif
}
void setState(QMediaPlayer::State state) { emit mockControl->stateChanged(mockControl->_state = state); }
@@ -154,9 +164,11 @@ public:
MockStreamsControl *mockStreamsControl;
MockNetworkAccessControl *mockNetworkControl;
MockVideoRendererControl *rendererControl;
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
MockVideoWindowControl *windowControl;
int rendererRef;
int windowRef;
#endif
int rendererRef;
};

View File

@@ -43,6 +43,7 @@
#define MOCKMEDIASERVICEPROVIDER_H
#include "qmediaserviceprovider.h"
#include "qmediaservice.h"
// Simple provider that lets you set the service
class MockMediaServiceProvider : public QMediaServiceProvider

View File

@@ -3,8 +3,12 @@ INCLUDEPATH += $$PWD \
../../../src/multimedia \
../../../src/multimedia/video
contains(QT,multimediakitwidgets)|contains(QT,multimediakitwidgets-private) {
HEADERS *= ../qmultimedia_common/mockvideowindowcontrol.h
DEFINES *= QT_MULTIMEDIAKIT_MOCK_WIDGETS
}
HEADERS *= \
../qmultimedia_common/mockvideosurface.h \
../qmultimedia_common/mockvideorenderercontrol.h \
../qmultimedia_common/mockvideowindowcontrol.h
../qmultimedia_common/mockvideorenderercontrol.h

View File

@@ -42,6 +42,8 @@
#ifndef MOCKVIDEOWINDOWCONTROL_H
#define MOCKVIDEOWINDOWCONTROL_H
#if defined(QT_MULTIMEDIAKIT_MOCK_WIDGETS)
#include "qvideowindowcontrol.h"
class MockVideoWindowControl : public QVideoWindowControl
@@ -68,4 +70,5 @@ public:
void setSaturation(int) {}
};
#endif // QT_MULTIMEDIAKIT_MOCK_WIDGETS
#endif // MOCKVIDEOWINDOWCONTROL_H