From 46f67a8b6946a3deedd5b60c96e7d6ff600f06e8 Mon Sep 17 00:00:00 2001 From: Lev Zelenskiy Date: Wed, 18 Apr 2012 13:20:19 +1000 Subject: [PATCH] QAudioProbe unit test. Change-Id: I4dde8a46883cfc793fdccbfd24ffde0c818fa1aa Reviewed-by: Mithra Pattison Reviewed-by: Michael Goddard --- tests/auto/unit/multimedia.pro | 1 + tests/auto/unit/qaudioprobe/qaudioprobe.pro | 10 ++ tests/auto/unit/qaudioprobe/tst_qaudioprobe.cpp | 196 +++++++++++++++++++++ .../qmultimedia_common/mockaudioprobecontrol.h | 61 +++++++ .../qmultimedia_common/mockmediarecorderservice.h | 5 + .../auto/unit/qmultimedia_common/mockrecorder.pri | 1 + 6 files changed, 274 insertions(+) create mode 100644 tests/auto/unit/qaudioprobe/qaudioprobe.pro create mode 100644 tests/auto/unit/qaudioprobe/tst_qaudioprobe.cpp create mode 100644 tests/auto/unit/qmultimedia_common/mockaudioprobecontrol.h diff --git a/tests/auto/unit/multimedia.pro b/tests/auto/unit/multimedia.pro index a085168..34bbb50 100644 --- a/tests/auto/unit/multimedia.pro +++ b/tests/auto/unit/multimedia.pro @@ -32,6 +32,7 @@ SUBDIRS += \ qaudiobuffer \ qdeclarativeaudio \ qdeclarativeaudio_4 \ + qaudioprobe \ qaudiodecoder disabled { diff --git a/tests/auto/unit/qaudioprobe/qaudioprobe.pro b/tests/auto/unit/qaudioprobe/qaudioprobe.pro new file mode 100644 index 0000000..3d275b4 --- /dev/null +++ b/tests/auto/unit/qaudioprobe/qaudioprobe.pro @@ -0,0 +1,10 @@ +CONFIG += testcase no_private_qt_headers_warning +TARGET = tst_qaudioprobe + +QT += multimedia-private testlib + +SOURCES += tst_qaudioprobe.cpp + +include (../qmultimedia_common/mock.pri) +include (../qmultimedia_common/mockrecorder.pri) + diff --git a/tests/auto/unit/qaudioprobe/tst_qaudioprobe.cpp b/tests/auto/unit/qaudioprobe/tst_qaudioprobe.cpp new file mode 100644 index 0000000..78b9b7b --- /dev/null +++ b/tests/auto/unit/qaudioprobe/tst_qaudioprobe.cpp @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** 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 + +//TESTED_COMPONENT=src/multimedia + +#include "mockmediaserviceprovider.h" +#include "mockmediarecorderservice.h" +#include "mockmediaobject.h" + +QT_USE_NAMESPACE + +class tst_QAudioProbe: public QObject +{ + Q_OBJECT + +public slots: + void init(); + void cleanup(); + +private slots: + void testNullService(); + void testNullControl(); + void testRecorder(); + void testRecorderDeleteRecorder(); + void testRecorderDeleteProbe(); + void testMediaObject(); + +private: + QAudioRecorder *recorder; + MockMediaRecorderControl *mockMediaRecorderControl; + MockMediaRecorderService *mockMediaRecorderService; + MockMediaServiceProvider *mockProvider; +}; + +void tst_QAudioProbe::init() +{ + mockMediaRecorderControl = new MockMediaRecorderControl(this); + mockMediaRecorderService = new MockMediaRecorderService(this, mockMediaRecorderControl); + mockProvider = new MockMediaServiceProvider(mockMediaRecorderService); + mockProvider->deleteServiceOnRelease = true; + recorder = 0; + + QMediaServiceProvider::setDefaultServiceProvider(mockProvider); +} + +void tst_QAudioProbe::cleanup() +{ + delete recorder; + delete mockProvider; + delete mockMediaRecorderControl; + mockMediaRecorderControl = 0; + mockMediaRecorderService = 0; + mockProvider = 0; + recorder = 0; +} + +void tst_QAudioProbe::testNullService() +{ + mockProvider->service = 0; + recorder = new QAudioRecorder; + + QVERIFY(!recorder->isAvailable()); + QCOMPARE(recorder->availabilityError(), QtMultimedia::ServiceMissingError); + + QAudioProbe probe; + QVERIFY(!probe.isActive()); + QVERIFY(!probe.setSource(recorder)); + QVERIFY(!probe.isActive()); + delete recorder; + recorder = 0; + QVERIFY(!probe.isActive()); +} + + +void tst_QAudioProbe::testNullControl() +{ + mockMediaRecorderService->hasControls = false; + recorder = new QAudioRecorder; + + QVERIFY(!recorder->isAvailable()); + QCOMPARE(recorder->availabilityError(), QtMultimedia::ServiceMissingError); + + QAudioProbe probe; + QVERIFY(!probe.isActive()); + QVERIFY(!probe.setSource(recorder)); + QVERIFY(!probe.isActive()); + delete recorder; + recorder = 0; + QVERIFY(!probe.isActive()); +} + +void tst_QAudioProbe::testRecorder() +{ + recorder = new QAudioRecorder; + QVERIFY(recorder->isAvailable()); + + QAudioProbe probe; + QVERIFY(!probe.isActive()); + QVERIFY(probe.setSource(recorder)); + QVERIFY(probe.isActive()); + probe.setSource((QMediaRecorder*)0); + QVERIFY(!probe.isActive()); +} + +void tst_QAudioProbe::testRecorderDeleteRecorder() +{ + recorder = new QAudioRecorder; + QVERIFY(recorder->isAvailable()); + + QAudioProbe probe; + QVERIFY(!probe.isActive()); + QVERIFY(probe.setSource(recorder)); + QVERIFY(probe.isActive()); + + delete recorder; + recorder = 0; + QVERIFY(!probe.isActive()); + probe.setSource((QMediaRecorder*)0); + QVERIFY(!probe.isActive()); +} + +void tst_QAudioProbe::testRecorderDeleteProbe() +{ + recorder = new QAudioRecorder; + QVERIFY(recorder->isAvailable()); + + QAudioProbe *probe = new QAudioProbe; + QVERIFY(!probe->isActive()); + QVERIFY(probe->setSource(recorder)); + QVERIFY(probe->isActive()); + + delete probe; + QVERIFY(recorder->isAvailable()); +} + +void tst_QAudioProbe::testMediaObject() +{ + QMediaObject *object = new MockMediaObject(0, mockMediaRecorderService); + QVERIFY(object->isAvailable()); + + QAudioProbe probe; + QVERIFY(!probe.isActive()); + QVERIFY(probe.setSource(object)); + QVERIFY(probe.isActive()); + probe.setSource((QMediaObject*)0); + QVERIFY(!probe.isActive()); + delete object; +} + +QTEST_GUILESS_MAIN(tst_QAudioProbe) + +#include "tst_qaudioprobe.moc" diff --git a/tests/auto/unit/qmultimedia_common/mockaudioprobecontrol.h b/tests/auto/unit/qmultimedia_common/mockaudioprobecontrol.h new file mode 100644 index 0000000..9aa121e --- /dev/null +++ b/tests/auto/unit/qmultimedia_common/mockaudioprobecontrol.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 MOCKAUDIOPROBECONTROL_H +#define MOCKAUDIOPROBECONTROL_H + +#include "qmediaaudioprobecontrol.h" + +class MockAudioProbeControl : public QMediaAudioProbeControl +{ + Q_OBJECT +public: + MockAudioProbeControl(QObject *parent): + QMediaAudioProbeControl(parent) + { + } + + ~MockAudioProbeControl() {} + +private: +}; + +#endif // MOCKAUDIOPROBECONTROL_H diff --git a/tests/auto/unit/qmultimedia_common/mockmediarecorderservice.h b/tests/auto/unit/qmultimedia_common/mockmediarecorderservice.h index 4ff8c07..f642c43 100644 --- a/tests/auto/unit/qmultimedia_common/mockmediarecorderservice.h +++ b/tests/auto/unit/qmultimedia_common/mockmediarecorderservice.h @@ -51,6 +51,7 @@ #include "mockmediacontainercontrol.h" #include "mockmetadatawritercontrol.h" #include "mockavailabilitycontrol.h" +#include "mockaudioprobecontrol.h" class MockMediaRecorderService : public QMediaService { @@ -67,6 +68,7 @@ public: mockFormatControl = new MockMediaContainerControl(this); mockVideoEncoderControl = new MockVideoEncoderControl(this); mockMetaDataControl = new MockMetaDataWriterControl(this); + mockAudioProbeControl = new MockAudioProbeControl(this); } QMediaControl* requestControl(const char *name) @@ -85,6 +87,8 @@ public: return mockMetaDataControl; if (hasControls && qstrcmp(name, QMediaAvailabilityControl_iid) == 0) return mockAvailabilityControl; + if (hasControls && qstrcmp(name, QMediaAudioProbeControl_iid) == 0) + return mockAudioProbeControl; return 0; } @@ -100,6 +104,7 @@ public: QVideoEncoderControl *mockVideoEncoderControl; MockMetaDataWriterControl *mockMetaDataControl; MockAvailabilityControl *mockAvailabilityControl; + MockAudioProbeControl *mockAudioProbeControl; bool hasControls; }; diff --git a/tests/auto/unit/qmultimedia_common/mockrecorder.pri b/tests/auto/unit/qmultimedia_common/mockrecorder.pri index 6f8438d..9d2e533 100644 --- a/tests/auto/unit/qmultimedia_common/mockrecorder.pri +++ b/tests/auto/unit/qmultimedia_common/mockrecorder.pri @@ -9,6 +9,7 @@ HEADERS *= \ ../qmultimedia_common/mockvideoencodercontrol.h \ ../qmultimedia_common/mockaudioencodercontrol.h \ ../qmultimedia_common/mockaudioendpointselector.h \ + ../qmultimedia_common/mockaudioprobecontrol.h \ # We also need all the container/metadata bits include(mockcontainer.pri) -- 2.7.4