From 41cf8853da61358ea4762c1a0d94752ad1ce87a0 Mon Sep 17 00:00:00 2001 From: Lev Zelenskiy Date: Wed, 18 Apr 2012 14:18:49 +1000 Subject: QVideoProbe unit test. Change-Id: If8d391734b08eee2edbc2250fbcbe7f45cf94b3e Reviewed-by: Michael Goddard --- tests/auto/unit/multimedia.pro | 3 +- .../qmultimedia_common/mockmediaplayerservice.h | 6 + tests/auto/unit/qmultimedia_common/mockplayer.pri | 3 +- .../qmultimedia_common/mockvideoprobecontrol.h | 61 +++++++ tests/auto/unit/qvideoprobe/qvideoprobe.pro | 10 ++ tests/auto/unit/qvideoprobe/tst_qvideoprobe.cpp | 189 +++++++++++++++++++++ 6 files changed, 270 insertions(+), 2 deletions(-) create mode 100644 tests/auto/unit/qmultimedia_common/mockvideoprobecontrol.h create mode 100644 tests/auto/unit/qvideoprobe/qvideoprobe.pro create mode 100644 tests/auto/unit/qvideoprobe/tst_qvideoprobe.cpp diff --git a/tests/auto/unit/multimedia.pro b/tests/auto/unit/multimedia.pro index 34bbb5093..93b3c60da 100644 --- a/tests/auto/unit/multimedia.pro +++ b/tests/auto/unit/multimedia.pro @@ -32,8 +32,9 @@ SUBDIRS += \ qaudiobuffer \ qdeclarativeaudio \ qdeclarativeaudio_4 \ + qaudiodecoder \ qaudioprobe \ - qaudiodecoder + qvideoprobe disabled { SUBDIRS += \ diff --git a/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h b/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h index b02fa1800..dd7d0e6ea 100644 --- a/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h +++ b/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h @@ -48,6 +48,7 @@ #include "mockmediastreamscontrol.h" #include "mockmedianetworkaccesscontrol.h" #include "mockvideorenderercontrol.h" +#include "mockvideoprobecontrol.h" #if defined(QT_MULTIMEDIA_MOCK_WIDGETS) #include "mockvideowindowcontrol.h" #endif @@ -64,6 +65,7 @@ public: mockNetworkControl = new MockNetworkAccessControl; rendererControl = new MockVideoRendererControl; rendererRef = 0; + mockVideoProbeControl = new MockVideoProbeControl; #if defined(QT_MULTIMEDIA_MOCK_WIDGETS) windowControl = new MockVideoWindowControl; windowRef = 0; @@ -76,6 +78,7 @@ public: delete mockStreamsControl; delete mockNetworkControl; delete rendererControl; + delete mockVideoProbeControl; #if defined(QT_MULTIMEDIA_MOCK_WIDGETS) delete windowControl; #endif @@ -90,6 +93,8 @@ public: rendererRef += 1; return rendererControl; } + } else if (qstrcmp(iid, QMediaVideoProbeControl_iid) == 0) { + return mockVideoProbeControl; } #if defined(QT_MULTIMEDIA_MOCK_WIDGETS) if (qstrcmp(iid, QVideoWindowControl_iid) == 0) { @@ -164,6 +169,7 @@ public: MockStreamsControl *mockStreamsControl; MockNetworkAccessControl *mockNetworkControl; MockVideoRendererControl *rendererControl; + MockVideoProbeControl *mockVideoProbeControl; #if defined(QT_MULTIMEDIA_MOCK_WIDGETS) MockVideoWindowControl *windowControl; int windowRef; diff --git a/tests/auto/unit/qmultimedia_common/mockplayer.pri b/tests/auto/unit/qmultimedia_common/mockplayer.pri index a5040ac80..74f289d47 100644 --- a/tests/auto/unit/qmultimedia_common/mockplayer.pri +++ b/tests/auto/unit/qmultimedia_common/mockplayer.pri @@ -7,6 +7,7 @@ HEADERS *= \ ../qmultimedia_common/mockmediaplayerservice.h \ ../qmultimedia_common/mockmediaplayercontrol.h \ ../qmultimedia_common/mockmediastreamscontrol.h \ - ../qmultimedia_common/mockmedianetworkaccesscontrol.h + ../qmultimedia_common/mockmedianetworkaccesscontrol.h \ + ../qmultimedia_common/mockvideoprobecontrol.h include(mockvideo.pri) diff --git a/tests/auto/unit/qmultimedia_common/mockvideoprobecontrol.h b/tests/auto/unit/qmultimedia_common/mockvideoprobecontrol.h new file mode 100644 index 000000000..5aee5c900 --- /dev/null +++ b/tests/auto/unit/qmultimedia_common/mockvideoprobecontrol.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the test suite 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 MOCKVIDEOPROBECONTROL_H +#define MOCKVIDEOPROBECONTROL_H + +#include "qmediavideoprobecontrol.h" + +class MockVideoProbeControl : public QMediaVideoProbeControl +{ + Q_OBJECT +public: + MockVideoProbeControl(QObject *parent = 0): + QMediaVideoProbeControl(parent) + { + } + + ~MockVideoProbeControl() {} + +private: +}; + +#endif // MOCKVIDEOPROBECONTROL_H diff --git a/tests/auto/unit/qvideoprobe/qvideoprobe.pro b/tests/auto/unit/qvideoprobe/qvideoprobe.pro new file mode 100644 index 000000000..03c7d56f7 --- /dev/null +++ b/tests/auto/unit/qvideoprobe/qvideoprobe.pro @@ -0,0 +1,10 @@ +CONFIG += testcase no_private_qt_headers_warning +TARGET = tst_qvideoprobe + +QT += multimedia-private testlib + +SOURCES += tst_qvideoprobe.cpp + +include (../qmultimedia_common/mock.pri) +include (../qmultimedia_common/mockrecorder.pri) +include (../qmultimedia_common/mockplayer.pri) diff --git a/tests/auto/unit/qvideoprobe/tst_qvideoprobe.cpp b/tests/auto/unit/qvideoprobe/tst_qvideoprobe.cpp new file mode 100644 index 000000000..c96f6f2a1 --- /dev/null +++ b/tests/auto/unit/qvideoprobe/tst_qvideoprobe.cpp @@ -0,0 +1,189 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** 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 +#include + +#include +#include +#include + +//TESTED_COMPONENT=src/multimedia + +#include "mockmediaserviceprovider.h" +#include "mockmediarecorderservice.h" +#include "mockmediaplayerservice.h" +#include "mockmediaobject.h" + +QT_USE_NAMESPACE + +class tst_QVideoProbe: public QObject +{ + Q_OBJECT + +public slots: + void init(); + void cleanup(); + +private slots: + void testNullService(); + void testPlayer(); + void testPlayerDeleteRecorder(); + void testPlayerDeleteProbe(); + void testRecorder(); + +private: + QMediaPlayer *player; + MockMediaPlayerService *mockMediaPlayerService; + MockMediaServiceProvider *mockProvider; + + MockMediaRecorderControl *mockMediaRecorderControl; + MockMediaRecorderService *mockMediaRecorderService; + MockMediaServiceProvider *mockProviderRecorder; +}; + +void tst_QVideoProbe::init() +{ + mockMediaPlayerService = new MockMediaPlayerService(); + mockProvider = new MockMediaServiceProvider(mockMediaPlayerService); + mockProvider->deleteServiceOnRelease = true; + player = 0; + + mockMediaRecorderControl = new MockMediaRecorderControl(this); + mockMediaRecorderService = new MockMediaRecorderService(this, mockMediaRecorderControl); + mockProviderRecorder = new MockMediaServiceProvider(mockMediaRecorderService); + mockProviderRecorder->deleteServiceOnRelease = true; + + QMediaServiceProvider::setDefaultServiceProvider(mockProvider); +} + +void tst_QVideoProbe::cleanup() +{ + delete player; + delete mockProvider; + mockMediaPlayerService = 0; + mockProvider = 0; + player = 0; + + delete mockMediaRecorderControl; + delete mockProviderRecorder; + mockMediaRecorderControl = 0; + mockMediaRecorderService = 0; + mockProviderRecorder = 0; +} + +void tst_QVideoProbe::testNullService() +{ + mockProvider->service = 0; + player = new QMediaPlayer; + + QVERIFY(!player->isAvailable()); + QCOMPARE(player->availabilityError(), QtMultimedia::ServiceMissingError); + + QVideoProbe probe; + QVERIFY(!probe.isActive()); + QVERIFY(!probe.setSource(player)); + QVERIFY(!probe.isActive()); + delete player; + player = 0; + QVERIFY(!probe.isActive()); +} + +void tst_QVideoProbe::testPlayer() +{ + player = new QMediaPlayer; + QVERIFY(player->isAvailable()); + + QVideoProbe probe; + QVERIFY(!probe.isActive()); + QVERIFY(probe.setSource(player)); + QVERIFY(probe.isActive()); + probe.setSource((QMediaPlayer*)0); + QVERIFY(!probe.isActive()); +} + +void tst_QVideoProbe::testPlayerDeleteRecorder() +{ + player = new QMediaPlayer; + QVERIFY(player->isAvailable()); + + QVideoProbe probe; + QVERIFY(!probe.isActive()); + QVERIFY(probe.setSource(player)); + QVERIFY(probe.isActive()); + + delete player; + player = 0; + QVERIFY(!probe.isActive()); + probe.setSource((QMediaPlayer*)0); + QVERIFY(!probe.isActive()); +} + +void tst_QVideoProbe::testPlayerDeleteProbe() +{ + player = new QMediaPlayer; + QVERIFY(player->isAvailable()); + + QVideoProbe *probe = new QVideoProbe; + QVERIFY(!probe->isActive()); + QVERIFY(probe->setSource(player)); + QVERIFY(probe->isActive()); + + delete probe; + QVERIFY(player->isAvailable()); +} + +void tst_QVideoProbe::testRecorder() +{ + QMediaServiceProvider::setDefaultServiceProvider(mockProviderRecorder); + + QAudioRecorder recorder; + QVERIFY(recorder.isAvailable()); + + QVideoProbe probe; + QVERIFY(!probe.isActive()); + QVERIFY(!probe.setSource(&recorder)); // No QMediaVideoProbeControl available + QVERIFY(!probe.isActive()); +} + +QTEST_GUILESS_MAIN(tst_QVideoProbe) + +#include "tst_qvideoprobe.moc" -- cgit v1.2.3