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/qvideoprobe/tst_qvideoprobe.cpp | 189 ++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 tests/auto/unit/qvideoprobe/tst_qvideoprobe.cpp (limited to 'tests/auto/unit/qvideoprobe/tst_qvideoprobe.cpp') 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