diff options
author | Sami Nurmenniemi <ext-sami.nurmenniemi@nokia.com> | 2011-10-11 09:06:12 +0300 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-21 03:40:14 +0200 |
commit | 6aea1a22eeebfe040a330d746de9e9d2cc99b130 (patch) | |
tree | 62cc58c369f866cfaaeb78f2284a94994b9b8180 /tests/auto | |
parent | cbb21e30d5cd18d17d60a049087f98a82c2862b9 (diff) |
Added RDS functionality to the QRadioTuner/QDeclarativeRadio
Change-Id: I865e3caba82977002cf1f01f1d64ee0a42de77c6
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/multimedia.pro | 1 | ||||
-rw-r--r-- | tests/auto/qmultimedia_common/mockradio.pri | 3 | ||||
-rw-r--r-- | tests/auto/qmultimedia_common/mockradiodatacontrol.h | 157 | ||||
-rw-r--r-- | tests/auto/qmultimedia_common/mockradiotunercontrol.h | 26 | ||||
-rwxr-xr-x | tests/auto/qradiodata/main.cpp | 53 | ||||
-rw-r--r-- | tests/auto/qradiodata/qradiodata.pro | 11 | ||||
-rw-r--r-- | tests/auto/qradiodata/tst_qradiodata.cpp | 148 | ||||
-rw-r--r-- | tests/auto/qradiodata/tst_qradiodata.h | 80 | ||||
-rw-r--r-- | tests/auto/qradiotuner/tst_qradiotuner.cpp | 17 | ||||
-rw-r--r-- | tests/auto/qradiotuner/tst_qradiotuner.h | 1 |
10 files changed, 496 insertions, 1 deletions
diff --git a/tests/auto/multimedia.pro b/tests/auto/multimedia.pro index 307a25256..07289e266 100644 --- a/tests/auto/multimedia.pro +++ b/tests/auto/multimedia.pro @@ -18,6 +18,7 @@ SUBDIRS += \ qmediaservice \ qmediatimerange \ qradiotuner \ + qradiodata \ qvideoframe \ qvideosurfaceformat \ qmetadatareadercontrol \ diff --git a/tests/auto/qmultimedia_common/mockradio.pri b/tests/auto/qmultimedia_common/mockradio.pri index a56564f98..0f7f84a2f 100644 --- a/tests/auto/qmultimedia_common/mockradio.pri +++ b/tests/auto/qmultimedia_common/mockradio.pri @@ -4,4 +4,5 @@ INCLUDEPATH += . HEADERS += \ - ../qmultimedia_common/mockradiotunercontrol.h + ../qmultimedia_common/mockradiotunercontrol.h \ + ../qmultimedia_common/mockradiodatacontrol.h diff --git a/tests/auto/qmultimedia_common/mockradiodatacontrol.h b/tests/auto/qmultimedia_common/mockradiodatacontrol.h new file mode 100644 index 000000000..ca6eb4020 --- /dev/null +++ b/tests/auto/qmultimedia_common/mockradiodatacontrol.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** 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 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 MOCKRADIODATACONTROL_H +#define MOCKRADIODATACONTROL_H + +#include "qradiodatacontrol.h" + +class MockRadioDataControl : public QRadioDataControl +{ + Q_OBJECT + +public: + MockRadioDataControl(QObject *parent): + QRadioDataControl(parent), m_err(QRadioData::NoError), + m_errstr("") + { + } + + using QRadioDataControl::error; + + bool isAvailable() const + { + return true; + } + QtMultimedia::AvailabilityError availabilityError() const + { + return QtMultimedia::NoError; + } + + QRadioData::Error error() const + { + return m_err; + } + + QString errorString() const + { + return m_errstr; + } + + QString stationId() const + { + return m_stationId; + } + + QRadioData::ProgramType programType() const + { + return m_programType; + } + + QString programTypeName() const + { + return m_programTypeName; + } + + QString stationName() const + { + return m_stationName; + } + + QString radioText() const + { + return m_radioText; + } + + void setAlternativeFrequenciesEnabled(bool enabled) + { + m_alternativeFrequenciesEnabled = enabled; + emit alternativeFrequenciesEnabledChanged(m_alternativeFrequenciesEnabled); + } + + bool isAlternativeFrequenciesEnabled() const + { + return m_alternativeFrequenciesEnabled; + } + + void forceRT( QString text ) + { + m_radioText = text; + emit radioTextChanged(m_radioText); + } + + void forceProgramType( int pty ) + { + m_programType = static_cast<QRadioData::ProgramType>(pty); + emit programTypeChanged(m_programType); + } + + void forcePTYN( QString ptyn ) + { + m_programTypeName = ptyn; + emit programTypeNameChanged(m_programTypeName); + } + + void forcePI( QString pi ) + { + m_stationId = pi; + emit stationIdChanged(m_stationId); + } + + void forcePS( QString ps ) + { + m_stationName = ps; + emit stationNameChanged(m_stationName); + } + +public: + QString m_radioText; + QRadioData::ProgramType m_programType; + QString m_programTypeName; + QString m_stationId; + QString m_stationName; + bool m_alternativeFrequenciesEnabled; + + QRadioData::Error m_err; + QString m_errstr; +}; + +#endif // MOCKRADIODATACONTROL_H diff --git a/tests/auto/qmultimedia_common/mockradiotunercontrol.h b/tests/auto/qmultimedia_common/mockradiotunercontrol.h index 5e2d015f9..664825356 100644 --- a/tests/auto/qmultimedia_common/mockradiotunercontrol.h +++ b/tests/auto/qmultimedia_common/mockradiotunercontrol.h @@ -216,6 +216,32 @@ public: emit searchingChanged(m_searching); } + void findNewStation( int frequency, QString stationId ) + { + setFrequency(frequency); + emit stationFound( frequency, stationId ); + } + + void searchAllStations(QRadioTuner::SearchMode searchMode = QRadioTuner::SearchFast) + { + QString programmeIdentifiers[3] = { "", "", "" }; + + if ( searchMode == QRadioTuner::SearchGetStationId ) { + programmeIdentifiers[0] = QString("MockProgramPI1"); + programmeIdentifiers[1] = QString("MockProgramPI2"); + programmeIdentifiers[2] = QString("MockProgramPI3"); + } + m_searching = true; + emit searchingChanged(m_searching); + + findNewStation(88300000, programmeIdentifiers[0]); + findNewStation(95100000, programmeIdentifiers[1]); + findNewStation(103100000, programmeIdentifiers[2]); + + m_searching = false; + emit searchingChanged(m_searching); + } + void start() { if (!m_active) { diff --git a/tests/auto/qradiodata/main.cpp b/tests/auto/qradiodata/main.cpp new file mode 100755 index 000000000..1bd2e27be --- /dev/null +++ b/tests/auto/qradiodata/main.cpp @@ -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_qradiodata.h" + +int main(int argc, char**argv) +{ + QCoreApplication app(argc,argv); + int ret; + tst_QRadioData test_api; + ret = QTest::qExec(&test_api, argc, argv); + return ret; +} diff --git a/tests/auto/qradiodata/qradiodata.pro b/tests/auto/qradiodata/qradiodata.pro new file mode 100644 index 000000000..0e3c4edec --- /dev/null +++ b/tests/auto/qradiodata/qradiodata.pro @@ -0,0 +1,11 @@ +CONFIG += testcase +TARGET = tst_qradiodata + +QT += multimedia-private testlib +CONFIG += no_private_qt_headers_warning + +HEADERS += tst_qradiodata.h +SOURCES += main.cpp tst_qradiodata.cpp + +include (../qmultimedia_common/mock.pri) +include (../qmultimedia_common/mockradio.pri) diff --git a/tests/auto/qradiodata/tst_qradiodata.cpp b/tests/auto/qradiodata/tst_qradiodata.cpp new file mode 100644 index 000000000..157f63def --- /dev/null +++ b/tests/auto/qradiodata/tst_qradiodata.cpp @@ -0,0 +1,148 @@ +/**************************************************************************** +** +** 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_qradiodata.h" + +QT_USE_NAMESPACE + +void tst_QRadioData::initTestCase() +{ + qRegisterMetaType<QRadioData::ProgramType>("QRadioData::ProgramType"); + + mock = new MockRadioDataControl(this); + service = new MockMediaService(this, mock); + provider = new MockMediaServiceProvider(service); + radio = new QRadioData(0,provider); + QVERIFY(radio->service() != 0); + QVERIFY(radio->isAvailable()); + QVERIFY(radio->availabilityError() == QtMultimedia::NoError); +} + +void tst_QRadioData::cleanupTestCase() +{ + QVERIFY(radio->error() == QRadioData::NoError); + QVERIFY(radio->errorString().isEmpty()); + + delete radio; + delete service; + delete provider; +} + +void tst_QRadioData::testNullService() +{ + const QPair<int, int> nullRange(0, 0); + + MockMediaServiceProvider provider(0); + QRadioData radio(0, &provider); + QVERIFY(!radio.isAvailable()); + QCOMPARE(radio.error(), QRadioData::ResourceError); + QCOMPARE(radio.errorString(), QString()); + QCOMPARE(radio.stationId(), QString()); + QCOMPARE(radio.programType(), QRadioData::Undefined); + QCOMPARE(radio.programTypeName(), QString()); + QCOMPARE(radio.stationName(), QString()); + QCOMPARE(radio.radioText(), QString()); + QCOMPARE(radio.isAlternativeFrequenciesEnabled(), false); + +} + +void tst_QRadioData::testNullControl() +{ + const QPair<int, int> nullRange(0, 0); + + MockMediaService service(0, 0); + MockMediaServiceProvider provider(&service); + QRadioData radio(0, &provider); + QVERIFY(!radio.isAvailable()); + QCOMPARE(radio.error(), QRadioData::ResourceError); + QCOMPARE(radio.errorString(), QString()); + + QCOMPARE(radio.stationId(), QString()); + QCOMPARE(radio.programType(), QRadioData::Undefined); + QCOMPARE(radio.programTypeName(), QString()); + QCOMPARE(radio.stationName(), QString()); + QCOMPARE(radio.radioText(), QString()); + QCOMPARE(radio.isAlternativeFrequenciesEnabled(), false); + { + QSignalSpy spy(&radio, SIGNAL(alternativeFrequenciesEnabledChanged(bool))); + + radio.setAlternativeFrequenciesEnabled(true); + QCOMPARE(radio.isAlternativeFrequenciesEnabled(), false); + QCOMPARE(spy.count(), 0); + } +} + +void tst_QRadioData::testAlternativeFrequencies() +{ + QSignalSpy readSignal(radio, SIGNAL(alternativeFrequenciesEnabledChanged(bool))); + radio->setAlternativeFrequenciesEnabled(true); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(radio->isAlternativeFrequenciesEnabled() == true); + QVERIFY(readSignal.count() == 1); +} + +void tst_QRadioData::testRadioDataUpdates() +{ + QSignalSpy rtSpy(radio, SIGNAL(radioTextChanged(QString))); + QSignalSpy ptyPTYSpy(radio, SIGNAL(programTypeChanged(QRadioData::ProgramType))); + QSignalSpy ptynSpy(radio, SIGNAL(programTypeNameChanged(QString))); + QSignalSpy piSpy(radio, SIGNAL(stationIdChanged(QString))); + QSignalSpy psSpy(radio, SIGNAL(stationNameChanged(QString))); + mock->forceRT("Mock Radio Text"); + mock->forceProgramType(static_cast<int>(QRadioData::Sport)); + mock->forcePTYN("Mock Programme Type Name"); + mock->forcePI("Mock Programme Identification"); + mock->forcePS("Mock Programme Service"); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(rtSpy.count() == 1); + QVERIFY(ptyPTYSpy.count() == 1); + QVERIFY(ptynSpy.count() == 1); + QVERIFY(piSpy.count() == 1); + QVERIFY(psSpy.count() == 1); + qDebug()<<radio->radioText(); + QCOMPARE(radio->radioText(), QString("Mock Radio Text")); + QCOMPARE(radio->programType(), QRadioData::Sport); + QCOMPARE(radio->programTypeName(), QString("Mock Programme Type Name")); + QCOMPARE(radio->stationId(), QString("Mock Programme Identification")); + QCOMPARE(radio->stationName(), QString("Mock Programme Service")); +} diff --git a/tests/auto/qradiodata/tst_qradiodata.h b/tests/auto/qradiodata/tst_qradiodata.h new file mode 100644 index 000000000..985197566 --- /dev/null +++ b/tests/auto/qradiodata/tst_qradiodata.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** 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_QRADIODATA_H +#define TST_QRADIODATA_H + +#include <QtTest/QtTest> +#include <QDebug> +#include <QTimer> + +#include <qmediaobject.h> +#include <qmediacontrol.h> +#include <qmediaservice.h> +#include <qradiodatacontrol.h> +#include <qradiodata.h> + +#include "mockmediaserviceprovider.h" +#include "mockmediaservice.h" +#include "mockradiodatacontrol.h" + +QT_USE_NAMESPACE + +class tst_QRadioData: public QObject +{ + Q_OBJECT + +public slots: + void initTestCase(); + void cleanupTestCase(); + +private slots: + void testNullService(); + void testNullControl(); + void testAlternativeFrequencies(); + void testRadioDataUpdates(); + +private: + MockRadioDataControl *mock; + MockMediaService *service; + MockMediaServiceProvider *provider; + QRadioData *radio; +}; +#endif diff --git a/tests/auto/qradiotuner/tst_qradiotuner.cpp b/tests/auto/qradiotuner/tst_qradiotuner.cpp index 62db50ce1..c42642283 100644 --- a/tests/auto/qradiotuner/tst_qradiotuner.cpp +++ b/tests/auto/qradiotuner/tst_qradiotuner.cpp @@ -186,6 +186,10 @@ void tst_QRadioTuner::testNullControl() QCOMPARE(radio.isSearching(), false); QCOMPARE(spy.count(), 0); + radio.searchAllStations(); + QCOMPARE(radio.isSearching(), false); + QCOMPARE(spy.count(), 0); + radio.cancelSearch(); QCOMPARE(radio.isSearching(), false); QCOMPARE(spy.count(), 0); @@ -281,6 +285,19 @@ void tst_QRadioTuner::testStereo() QVERIFY(radio->stereoMode() == QRadioTuner::ForceMono); } +void tst_QRadioTuner::testSearchAllStations() +{ + QSignalSpy foundSpy(radio, SIGNAL(stationFound(int,QString))); + QSignalSpy completeSpy(radio, SIGNAL(searchingChanged(bool))); + radio->searchAllStations(QRadioTuner::SearchGetStationId); + QTestEventLoop::instance().enterLoop(1); + QCOMPARE(radio->frequency(), 103100000 ); + QCOMPARE(foundSpy.count(), 3); + QVERIFY(qvariant_cast<int>(foundSpy.at(2).at(0)) == 103100000 ); + QVERIFY(qvariant_cast<QString>(foundSpy.at(2).at(1)) == QString("MockProgramPI3") ); + QCOMPARE(completeSpy.count(), 2); +} + // QRadioTuner's errorsignal void tst_QRadioTuner::errorSignal() { diff --git a/tests/auto/qradiotuner/tst_qradiotuner.h b/tests/auto/qradiotuner/tst_qradiotuner.h index 34040ce77..364f5e2d9 100644 --- a/tests/auto/qradiotuner/tst_qradiotuner.h +++ b/tests/auto/qradiotuner/tst_qradiotuner.h @@ -75,6 +75,7 @@ private slots: void testVolume(); void testSignal(); void testStereo(); + void testSearchAllStations(); void errorSignal(); private: |