diff options
author | Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com> | 2012-01-18 14:46:58 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-19 03:56:45 +0100 |
commit | 69cef0c24c1f6500d6047ae9c093fda26cf203a6 (patch) | |
tree | 364a7e22759f574ef502bed240b7764b261edd56 /tests/auto/unit/qaudiorecorder | |
parent | 8c74e5e7e7a5654f1af670b6d40f98e736d1f7d9 (diff) |
Replaced QAudioCaptureSource with QAudioRecorder.
QAudioCaptureSource name is confusing, it's essentially an audio
recording service but it's not evident from API.
QAudioRecorder replaces QAudioCaptureSource+QMediaRecorder combination.
Change-Id: I0082d766fc0d1b8d5ecbfc527f13e715add730c8
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'tests/auto/unit/qaudiorecorder')
-rw-r--r-- | tests/auto/unit/qaudiorecorder/qaudiorecorder.pro | 10 | ||||
-rw-r--r-- | tests/auto/unit/qaudiorecorder/tst_qaudiorecorder.cpp | 205 |
2 files changed, 215 insertions, 0 deletions
diff --git a/tests/auto/unit/qaudiorecorder/qaudiorecorder.pro b/tests/auto/unit/qaudiorecorder/qaudiorecorder.pro new file mode 100644 index 000000000..ccb5531e7 --- /dev/null +++ b/tests/auto/unit/qaudiorecorder/qaudiorecorder.pro @@ -0,0 +1,10 @@ +CONFIG += testcase no_private_qt_headers_warning +TARGET = tst_qaudiorecorder + +QT += multimedia-private testlib + +SOURCES += tst_qaudiorecorder.cpp + +include (../qmultimedia_common/mock.pri) +include (../qmultimedia_common/mockrecorder.pri) + diff --git a/tests/auto/unit/qaudiorecorder/tst_qaudiorecorder.cpp b/tests/auto/unit/qaudiorecorder/tst_qaudiorecorder.cpp new file mode 100644 index 000000000..461a0bc76 --- /dev/null +++ b/tests/auto/unit/qaudiorecorder/tst_qaudiorecorder.cpp @@ -0,0 +1,205 @@ +/**************************************************************************** +** +** Copyright (C) 2012 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 <QtTest/QtTest> +#include <QDebug> + +#include <qaudioformat.h> + +#include <qaudiorecorder.h> +#include <qaudioencodercontrol.h> +#include <qmediarecordercontrol.h> +#include <qaudioendpointselector.h> +#include <qaudiodeviceinfo.h> +#include <qaudioinput.h> +#include <qmediaobject.h> + +//TESTED_COMPONENT=src/multimedia + +#include "mockmediaserviceprovider.h" +#include "mockmediarecorderservice.h" + +QT_USE_NAMESPACE + +class tst_QAudioRecorder: public QObject +{ + Q_OBJECT + +public slots: + void init(); + void cleanup(); + +private slots: + //void testNullService(); + //void testNullControl(); + void testAudioSource(); + void testOptions(); + void testDevices(); + void testAvailability(); + void testAvailableAudioInputChangedSignal(); + +private: + QAudioRecorder *audiosource; + MockMediaRecorderService *mockMediaRecorderService; + MockMediaServiceProvider *mockProvider; +}; + +void tst_QAudioRecorder::init() +{ + mockMediaRecorderService = new MockMediaRecorderService(this, new MockMediaRecorderControl(this)); + mockProvider = new MockMediaServiceProvider(mockMediaRecorderService); +} + +void tst_QAudioRecorder::cleanup() +{ + delete audiosource; + delete mockProvider; + audiosource = 0; + mockProvider = 0; +} +/* +void tst_QAudioRecorder::testNullService() +{ + MockProvider provider(0); + QAudioRecorder source(0, &provider); + + QCOMPARE(source.audioInputs().size(), 0); + QCOMPARE(source.defaultAudioInput(), QString()); + QCOMPARE(source.activeAudioInput(), QString()); +} +*/ +/* +void tst_QAudioRecorder::testNullControl() +{ + MockRecorderService service; + service.hasAudioDeviceControl = false; + MockProvider provider(&service); + QAudioRecorder source(0, &provider); + + QCOMPARE(source.audioInputs().size(), 0); + QCOMPARE(source.defaultAudioInput(), QString()); + QCOMPARE(source.activeAudioInput(), QString()); + + QCOMPARE(source.audioDescription("blah"), QString()); + + QSignalSpy deviceNameSpy(&source, SIGNAL(activeAudioInputChanged(QString))); + + source.setAudioInput("blah"); + QCOMPARE(deviceNameSpy.count(), 0); +} +*/ +void tst_QAudioRecorder::testAudioSource() +{ + audiosource = new QAudioRecorder(0, mockProvider); + + QCOMPARE(audiosource->mediaObject()->service(),(QMediaService *) mockMediaRecorderService); +} + +void tst_QAudioRecorder::testOptions() +{ + const QString codec(QLatin1String("audio/mpeg")); + + QStringList options = mockMediaRecorderService->mockAudioEncoderControl->supportedEncodingOptions(codec); + QCOMPARE(options.count(), 4); + mockMediaRecorderService->mockAudioEncoderControl->setEncodingOption(codec, options.first(),8000); + QVERIFY(mockMediaRecorderService->mockAudioEncoderControl->encodingOption(codec, options.first()).toInt() == 8000); +} + +void tst_QAudioRecorder::testDevices() +{ + audiosource = new QAudioRecorder(0,mockProvider); + QList<QString> devices = audiosource->audioInputs(); + QVERIFY(devices.size() > 0); + QVERIFY(devices.at(0).compare("device1") == 0); + QVERIFY(audiosource->audioInputDescription("device1").compare("dev1 comment") == 0); + QVERIFY(audiosource->defaultAudioInput() == "device1"); + QVERIFY(audiosource->isAvailable() == true); + + QSignalSpy checkSignal(audiosource, SIGNAL(audioInputChanged(QString))); + audiosource->setAudioInput("device2"); + QVERIFY(audiosource->audioInput().compare("device2") == 0); + QVERIFY(checkSignal.count() == 1); + QVERIFY(audiosource->isAvailable() == true); +} + +void tst_QAudioRecorder::testAvailability() +{ + MockMediaRecorderService service(this, new MockMediaRecorderControl(this)); + service.hasControls = false; + MockMediaServiceProvider provider(&service); + QAudioRecorder source(0, &provider); + + QVERIFY(source.isAvailable() == false); + QVERIFY(source.availabilityError() == QtMultimedia::ServiceMissingError); + + service.hasControls = true; + MockMediaServiceProvider provider2(&service); + QAudioRecorder source2(0, &provider2); + + QVERIFY(source2.isAvailable() == true); + QVERIFY(source2.availabilityError() == QtMultimedia::NoError); +} + +void tst_QAudioRecorder::testAvailableAudioInputChangedSignal() +{ + // The availabilityChangedSignal is implemented in QAudioRecorder. SO using it to test the signal. + audiosource = new QAudioRecorder(0, mockProvider); + + /* Spy the signal availableEndpointChanged and audioInputchanged */ + QSignalSpy changed(mockMediaRecorderService->mockAudioEndpointSelector, SIGNAL(availableEndpointsChanged())); + QSignalSpy audioInputchange(audiosource, SIGNAL(availableAudioInputsChanged())); + + /* Add the end points and verify if the available end point changed signal is emitted. */ + QMetaObject::invokeMethod(mockMediaRecorderService->mockAudioEndpointSelector, "addEndpoints"); + QVERIFY(changed.count() == 1); + QVERIFY(audioInputchange.count() == 1); + + /* Now try removes */ + changed.clear(); + audioInputchange.clear(); + QMetaObject::invokeMethod(mockMediaRecorderService->mockAudioEndpointSelector, "removeEndpoints"); + QVERIFY(changed.count() == 1); + QVERIFY(audioInputchange.count() == 1); +} + +QTEST_GUILESS_MAIN(tst_QAudioRecorder) + +#include "tst_qaudiorecorder.moc" |