diff options
author | Michael Goddard <michael.goddard@nokia.com> | 2011-11-04 13:38:44 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-04 08:19:17 +0100 |
commit | e3a8c165eabe139d71a762089ab396e5b492c70b (patch) | |
tree | 16d9960d2d20d65e0a5d1becc181c0a7b095d0aa /tests/auto/unit/qradiotuner | |
parent | 7dfb883df639f8d80cec7bd2c51eb37561bc4522 (diff) |
Rearrange the automatic tests.
Split them into unit and integration tests. Integration tests really
need to be run on the real platform (not in a VM etc) since they are
somewhat unstable or nonfunctional otherwise.
A few tests were previously broken by QUrl changes and they were repaired.
Removed one test since it was not providing a lot of value.
There are still a number of tests that rely on Q_AUTOTEST_EXPORT symbols.
Change-Id: Ic402abf0af946baa5945075d975b3f584f9ef280
Reviewed-by: Kalle Lehtonen <kalle.ju.lehtonen@nokia.com>
Diffstat (limited to 'tests/auto/unit/qradiotuner')
-rwxr-xr-x | tests/auto/unit/qradiotuner/main.cpp | 53 | ||||
-rw-r--r-- | tests/auto/unit/qradiotuner/qradiotuner.pro | 11 | ||||
-rw-r--r-- | tests/auto/unit/qradiotuner/tst_qradiotuner.cpp | 336 | ||||
-rw-r--r-- | tests/auto/unit/qradiotuner/tst_qradiotuner.h | 87 |
4 files changed, 487 insertions, 0 deletions
diff --git a/tests/auto/unit/qradiotuner/main.cpp b/tests/auto/unit/qradiotuner/main.cpp new file mode 100755 index 000000000..b2d6fd2b1 --- /dev/null +++ b/tests/auto/unit/qradiotuner/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_qradiotuner.h" + +int main(int argc, char**argv) +{ + QCoreApplication app(argc,argv); + int ret; + tst_QRadioTuner test_api; + ret = QTest::qExec(&test_api, argc, argv); + return ret; +} diff --git a/tests/auto/unit/qradiotuner/qradiotuner.pro b/tests/auto/unit/qradiotuner/qradiotuner.pro new file mode 100644 index 000000000..3d3a21f5d --- /dev/null +++ b/tests/auto/unit/qradiotuner/qradiotuner.pro @@ -0,0 +1,11 @@ +CONFIG += testcase +TARGET = tst_qradiotuner + +QT += multimedia-private testlib +CONFIG += no_private_qt_headers_warning + +HEADERS += tst_qradiotuner.h +SOURCES += main.cpp tst_qradiotuner.cpp + +include (../qmultimedia_common/mock.pri) +include (../qmultimedia_common/mockradio.pri) diff --git a/tests/auto/unit/qradiotuner/tst_qradiotuner.cpp b/tests/auto/unit/qradiotuner/tst_qradiotuner.cpp new file mode 100644 index 000000000..c42642283 --- /dev/null +++ b/tests/auto/unit/qradiotuner/tst_qradiotuner.cpp @@ -0,0 +1,336 @@ +/**************************************************************************** +** +** 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_qradiotuner.h" + +QT_USE_NAMESPACE + +void tst_QRadioTuner::initTestCase() +{ + qRegisterMetaType<QRadioTuner::State>("QRadioTuner::State"); + qRegisterMetaType<QRadioTuner::Band>("QRadioTuner::Band"); + + mock = new MockRadioTunerControl(this); + service = new MockMediaService(this, mock); + provider = new MockMediaServiceProvider(service); + radio = new QRadioTuner(0,provider); + QVERIFY(radio->service() != 0); + QVERIFY(radio->isAvailable()); + QVERIFY(radio->availabilityError() == QtMultimedia::NoError); + + QSignalSpy stateSpy(radio, SIGNAL(stateChanged(QRadioTuner::State))); + + QCOMPARE(radio->state(), QRadioTuner::StoppedState); + radio->start(); + QVERIFY(radio->availabilityError() == QtMultimedia::NoError); + QCOMPARE(radio->state(), QRadioTuner::ActiveState); + + QCOMPARE(stateSpy.count(), 1); + QCOMPARE(stateSpy.first()[0].value<QRadioTuner::State>(), QRadioTuner::ActiveState); +} + +void tst_QRadioTuner::cleanupTestCase() +{ + QVERIFY(radio->error() == QRadioTuner::NoError); + QVERIFY(radio->errorString().isEmpty()); + + QSignalSpy stateSpy(radio, SIGNAL(stateChanged(QRadioTuner::State))); + + radio->stop(); + QVERIFY(radio->availabilityError() == QtMultimedia::NoError); + QCOMPARE(radio->state(), QRadioTuner::StoppedState); + QCOMPARE(stateSpy.count(), 1); + + QCOMPARE(stateSpy.first()[0].value<QRadioTuner::State>(), QRadioTuner::StoppedState); + + delete radio; + delete service; + delete provider; +} + +void tst_QRadioTuner::testNullService() +{ + const QPair<int, int> nullRange(0, 0); + + MockMediaServiceProvider provider(0); + QRadioTuner radio(0, &provider); + QVERIFY(!radio.isAvailable()); + radio.start(); + QCOMPARE(radio.error(), QRadioTuner::ResourceError); + QCOMPARE(radio.errorString(), QString()); + QCOMPARE(radio.band(), QRadioTuner::FM); + QCOMPARE(radio.isBandSupported(QRadioTuner::AM), false); + QCOMPARE(radio.isBandSupported(QRadioTuner::FM), false); + QCOMPARE(radio.frequency(), 0); + QCOMPARE(radio.frequencyStep(QRadioTuner::AM), 0); + QCOMPARE(radio.frequencyStep(QRadioTuner::FM), 0); + QCOMPARE(radio.frequencyRange(QRadioTuner::AM), nullRange); + QCOMPARE(radio.frequencyRange(QRadioTuner::FM), nullRange); + QCOMPARE(radio.isStereo(), false); + QCOMPARE(radio.stereoMode(), QRadioTuner::Auto); + QCOMPARE(radio.signalStrength(), 0); + QCOMPARE(radio.volume(), 0); + QCOMPARE(radio.isMuted(), false); + QCOMPARE(radio.isSearching(), false); + radio.stop(); +} + +void tst_QRadioTuner::testNullControl() +{ + const QPair<int, int> nullRange(0, 0); + + MockMediaService service(0, 0); + MockMediaServiceProvider provider(&service); + QRadioTuner radio(0, &provider); + QVERIFY(!radio.isAvailable()); + radio.start(); + + QCOMPARE(radio.error(), QRadioTuner::ResourceError); + QCOMPARE(radio.errorString(), QString()); + + QCOMPARE(radio.band(), QRadioTuner::FM); + QCOMPARE(radio.isBandSupported(QRadioTuner::AM), false); + QCOMPARE(radio.isBandSupported(QRadioTuner::FM), false); + QCOMPARE(radio.frequency(), 0); + QCOMPARE(radio.frequencyStep(QRadioTuner::AM), 0); + QCOMPARE(radio.frequencyStep(QRadioTuner::FM), 0); + QCOMPARE(radio.frequencyRange(QRadioTuner::AM), nullRange); + QCOMPARE(radio.frequencyRange(QRadioTuner::FM), nullRange); + { + QSignalSpy bandSpy(&radio, SIGNAL(bandChanged(QRadioTuner::Band))); + QSignalSpy frequencySpy(&radio, SIGNAL(frequencyChanged(int))); + + radio.setFrequency(107500); + QCOMPARE(radio.band(), QRadioTuner::FM); + QCOMPARE(radio.frequency(), 0); + QCOMPARE(bandSpy.count(), 0); + QCOMPARE(frequencySpy.count(), 0); + + radio.setBand(QRadioTuner::AM); + QCOMPARE(radio.band(), QRadioTuner::FM); + QCOMPARE(radio.frequency(), 0); + QCOMPARE(bandSpy.count(), 0); + QCOMPARE(frequencySpy.count(), 0); + } + QCOMPARE(radio.isStereo(), false); + QCOMPARE(radio.stereoMode(), QRadioTuner::Auto); + + radio.setStereoMode(QRadioTuner::ForceStereo); + QCOMPARE(radio.stereoMode(), QRadioTuner::Auto); + + QCOMPARE(radio.signalStrength(), 0); + + QCOMPARE(radio.volume(), 0); + QCOMPARE(radio.isMuted(), false); + { + QSignalSpy volumeSpy(&radio, SIGNAL(volumeChanged(int))); + QSignalSpy muteSpy(&radio, SIGNAL(mutedChanged(bool))); + + radio.setVolume(76); + QCOMPARE(radio.volume(), 0); + QCOMPARE(volumeSpy.count(), 0); + + radio.setMuted(true); + QCOMPARE(radio.isMuted(), false); + QCOMPARE(muteSpy.count(), 0); + } + QCOMPARE(radio.isSearching(), false); + { + QSignalSpy spy(&radio, SIGNAL(searchingChanged(bool))); + + radio.searchBackward(); + QCOMPARE(radio.isSearching(), false); + QCOMPARE(spy.count(), 0); + + radio.searchForward(); + 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); + } + + radio.stop(); +} + +void tst_QRadioTuner::testBand() +{ + QVERIFY(radio->isBandSupported(QRadioTuner::FM)); + QVERIFY(!radio->isBandSupported(QRadioTuner::SW)); + + if(radio->isBandSupported(QRadioTuner::AM)) { + QSignalSpy readSignal(radio, SIGNAL(bandChanged(QRadioTuner::Band))); + radio->setBand(QRadioTuner::AM); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(radio->band() == QRadioTuner::AM); + QVERIFY(readSignal.count() == 1); + } +} + +void tst_QRadioTuner::testFrequency() +{ + QSignalSpy readSignal(radio, SIGNAL(frequencyChanged(int))); + radio->setFrequency(104500000); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(radio->frequency() == 104500000); + QVERIFY(readSignal.count() == 1); + + QVERIFY(radio->frequencyStep(QRadioTuner::FM) == 1); + QPair<int,int> test = radio->frequencyRange(QRadioTuner::FM); + QVERIFY(test.first == 1); + QVERIFY(test.second == 2); +} + +void tst_QRadioTuner::testMute() +{ + QSignalSpy readSignal(radio, SIGNAL(mutedChanged(bool))); + radio->setMuted(true); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(radio->isMuted()); + QVERIFY(readSignal.count() == 1); +} + +void tst_QRadioTuner::testSearch() +{ + QSignalSpy readSignal(radio, SIGNAL(searchingChanged(bool))); + QVERIFY(!radio->isSearching()); + + radio->searchForward(); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(radio->isSearching()); + QVERIFY(readSignal.count() == 1); + + radio->cancelSearch(); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(!radio->isSearching()); + QVERIFY(readSignal.count() == 2); + + radio->searchBackward(); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(radio->isSearching()); + QVERIFY(readSignal.count() == 3); + + radio->cancelSearch(); + QVERIFY(!radio->isSearching()); +} + +void tst_QRadioTuner::testVolume() +{ + QVERIFY(radio->volume() == 100); + QSignalSpy readSignal(radio, SIGNAL(volumeChanged(int))); + radio->setVolume(50); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(radio->volume() == 50); + QVERIFY(readSignal.count() == 1); +} + +void tst_QRadioTuner::testSignal() +{ + QVERIFY(radio->signalStrength() == 0); + // There is no set of this only a get, do nothing else. +} + +void tst_QRadioTuner::testStereo() +{ + /* no set function to toggle stereo status; + cannot emit stereoStatusChanged() signal */ + + QVERIFY(radio->isStereo()); + radio->setStereoMode(QRadioTuner::ForceMono); + 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() +{ + qRegisterMetaType<QRadioTuner::Error>("QRadioTuner::Error"); + QObject obj; + MockRadioTunerControl dctrl(&obj); + MockMediaService service(&obj, &dctrl); + MockMediaServiceProvider provider(&service); + QRadioTuner radio(0,&provider); + QSignalSpy spy(&radio, SIGNAL(error(QRadioTuner::Error))); + QVERIFY(radio.service() != 0); + QVERIFY(radio.isAvailable()); + radio.start(); + radio.setBand(QRadioTuner::FM); + QVERIFY(spy.count() == 1); + QVERIFY(qvariant_cast<QRadioTuner::Error>(spy.at(0).at(0)) == QRadioTuner::NoError); + QVERIFY(radio.error() == QRadioTuner::NoError); + QVERIFY(radio.error() != QRadioTuner::OpenError); + QVERIFY(radio.errorString().isEmpty()); + spy.clear(); + + /* emits QRadioTuner::OutOfRangeError if band is set to FM2 or LW + and frequency set to >= 148500000 */ + + radio.setBand(QRadioTuner::LW); + radio.setBand(QRadioTuner::FM2); + radio.setFrequency(148500000); + QVERIFY(spy.count() == 3); + QVERIFY(qvariant_cast<QRadioTuner::Error>(spy.at(0).at(0)) == QRadioTuner::OutOfRangeError); + QVERIFY(qvariant_cast<QRadioTuner::Error>(spy.at(1).at(0)) == QRadioTuner::OutOfRangeError); + QVERIFY(qvariant_cast<QRadioTuner::Error>(spy.at(2).at(0)) == QRadioTuner::OutOfRangeError); + QVERIFY(radio.error() == QRadioTuner::OutOfRangeError); + QVERIFY2(!radio.errorString().isEmpty(), "band and range not supported"); + spy.clear(); + radio.stop(); +} diff --git a/tests/auto/unit/qradiotuner/tst_qradiotuner.h b/tests/auto/unit/qradiotuner/tst_qradiotuner.h new file mode 100644 index 000000000..364f5e2d9 --- /dev/null +++ b/tests/auto/unit/qradiotuner/tst_qradiotuner.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** 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_QRADIOTUNER_H +#define TST_QRADIOTUNER_H + +#include <QtTest/QtTest> +#include <QDebug> +#include <QTimer> + +#include <qmediaobject.h> +#include <qmediacontrol.h> +#include <qmediaservice.h> +#include <qradiotunercontrol.h> +#include <qradiotuner.h> + +#include "mockmediaserviceprovider.h" +#include "mockmediaservice.h" +#include "mockradiotunercontrol.h" + +QT_USE_NAMESPACE + +class tst_QRadioTuner: public QObject +{ + Q_OBJECT + +public slots: + void initTestCase(); + void cleanupTestCase(); + +private slots: + void testNullService(); + void testNullControl(); + void testBand(); + void testFrequency(); + void testMute(); + void testSearch(); + void testVolume(); + void testSignal(); + void testStereo(); + void testSearchAllStations(); + void errorSignal(); + +private: + MockRadioTunerControl *mock; + MockMediaService *service; + MockMediaServiceProvider *provider; + QRadioTuner *radio; +}; +#endif |