diff options
Diffstat (limited to 'tests/auto/unit/qmediaobject/tst_qmediaobject.cpp')
-rw-r--r-- | tests/auto/unit/qmediaobject/tst_qmediaobject.cpp | 502 |
1 files changed, 0 insertions, 502 deletions
diff --git a/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp b/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp deleted file mode 100644 index f1d5cc327..000000000 --- a/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp +++ /dev/null @@ -1,502 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//TESTED_COMPONENT=src/multimedia - -#include <QtTest/QtTest> - -#include <QtCore/qtimer.h> - -#include <QtMultimedia/qmediametadata.h> -#include <qmediaobject.h> -#include <qmediaservice.h> -#include <qmetadatareadercontrol.h> -#include <qaudioinputselectorcontrol.h> - -#include "mockmediarecorderservice.h" -#include "mockmediaserviceprovider.h" -#include "mockmetadatareadercontrol.h" -#include "mockavailabilitycontrol.h" - -class QtTestMediaObjectService : public QMediaService -{ - Q_OBJECT -public: - QtTestMediaObjectService(QObject *parent = 0, MockAvailabilityControl *availability = 0) - : QMediaService(parent) - , availabilityControl(availability) - , metaDataRef(0) - , hasMetaData(true) - { - } - - QMediaControl *requestControl(const char *iid) - { - if (hasMetaData && qstrcmp(iid, QMetaDataReaderControl_iid) == 0) - return &metaData; - else if (qstrcmp(iid, QMediaAvailabilityControl_iid) == 0) - return availabilityControl; - else - return 0; - } - - void releaseControl(QMediaControl *) - { - } - - MockMetaDataReaderControl metaData; - MockAvailabilityControl *availabilityControl; - int metaDataRef; - bool hasMetaData; -}; - -QT_USE_NAMESPACE - -class tst_QMediaObject : public QObject -{ - Q_OBJECT - -private slots: - void propertyWatch(); - void notifySignals_data(); - void notifySignals(); - void notifyInterval_data(); - void notifyInterval(); - - void nullMetaDataControl(); - void isMetaDataAvailable(); - void metaDataChanged(); - void metaData_data(); - void metaData(); - void availability(); - - void service(); - -private: - void setupNotifyTests(); -}; - -class QtTestMediaObject : public QMediaObject -{ - Q_OBJECT - Q_PROPERTY(int a READ a WRITE setA NOTIFY aChanged) - Q_PROPERTY(int b READ b WRITE setB NOTIFY bChanged) - Q_PROPERTY(int c READ c WRITE setC NOTIFY cChanged) - Q_PROPERTY(int d READ d WRITE setD) -public: - QtTestMediaObject(QMediaService *service = 0): QMediaObject(0, service), m_a(0), m_b(0), m_c(0), m_d(0) {} - - using QMediaObject::addPropertyWatch; - using QMediaObject::removePropertyWatch; - - int a() const { return m_a; } - void setA(int a) { m_a = a; } - - int b() const { return m_b; } - void setB(int b) { m_b = b; } - - int c() const { return m_c; } - void setC(int c) { m_c = c; } - - int d() const { return m_d; } - void setD(int d) { m_d = d; } - -Q_SIGNALS: - void aChanged(int a); - void bChanged(int b); - void cChanged(int c); - -private: - int m_a; - int m_b; - int m_c; - int m_d; -}; - -void tst_QMediaObject::propertyWatch() -{ - QtTestMediaObject object; - object.setNotifyInterval(0); - - QEventLoop loop; - connect(&object, SIGNAL(aChanged(int)), &QTestEventLoop::instance(), SLOT(exitLoop())); - connect(&object, SIGNAL(bChanged(int)), &QTestEventLoop::instance(), SLOT(exitLoop())); - connect(&object, SIGNAL(cChanged(int)), &QTestEventLoop::instance(), SLOT(exitLoop())); - - QSignalSpy aSpy(&object, SIGNAL(aChanged(int))); - QSignalSpy bSpy(&object, SIGNAL(bChanged(int))); - QSignalSpy cSpy(&object, SIGNAL(cChanged(int))); - - QTestEventLoop::instance().enterLoop(1); - - QCOMPARE(aSpy.count(), 0); - QCOMPARE(bSpy.count(), 0); - QCOMPARE(cSpy.count(), 0); - - int aCount = 0; - int bCount = 0; - int cCount = 0; - - object.addPropertyWatch("a"); - - QTestEventLoop::instance().enterLoop(1); - - QVERIFY(aSpy.count() > aCount); - QCOMPARE(bSpy.count(), 0); - QCOMPARE(cSpy.count(), 0); - QCOMPARE(aSpy.last().value(0).toInt(), 0); - - aCount = aSpy.count(); - - object.setA(54); - object.setB(342); - object.setC(233); - - QTestEventLoop::instance().enterLoop(1); - - QVERIFY(aSpy.count() > aCount); - QCOMPARE(bSpy.count(), 0); - QCOMPARE(cSpy.count(), 0); - QCOMPARE(aSpy.last().value(0).toInt(), 54); - - aCount = aSpy.count(); - - object.addPropertyWatch("b"); - object.addPropertyWatch("d"); - object.removePropertyWatch("e"); - object.setA(43); - object.setB(235); - object.setC(90); - - QTestEventLoop::instance().enterLoop(1); - - QVERIFY(aSpy.count() > aCount); - QVERIFY(bSpy.count() > bCount); - QCOMPARE(cSpy.count(), 0); - QCOMPARE(aSpy.last().value(0).toInt(), 43); - QCOMPARE(bSpy.last().value(0).toInt(), 235); - - aCount = aSpy.count(); - bCount = bSpy.count(); - - object.removePropertyWatch("a"); - object.addPropertyWatch("c"); - object.addPropertyWatch("e"); - - QTestEventLoop::instance().enterLoop(1); - - QCOMPARE(aSpy.count(), aCount); - QVERIFY(bSpy.count() > bCount); - QVERIFY(cSpy.count() > cCount); - QCOMPARE(bSpy.last().value(0).toInt(), 235); - QCOMPARE(cSpy.last().value(0).toInt(), 90); - - bCount = bSpy.count(); - cCount = cSpy.count(); - - object.setA(435); - object.setC(9845); - - QTestEventLoop::instance().enterLoop(1); - - QCOMPARE(aSpy.count(), aCount); - QVERIFY(bSpy.count() > bCount); - QVERIFY(cSpy.count() > cCount); - QCOMPARE(bSpy.last().value(0).toInt(), 235); - QCOMPARE(cSpy.last().value(0).toInt(), 9845); - - bCount = bSpy.count(); - cCount = cSpy.count(); - - object.setA(8432); - object.setB(324); - object.setC(443); - object.removePropertyWatch("c"); - object.removePropertyWatch("d"); - - QTestEventLoop::instance().enterLoop(1); - - QCOMPARE(aSpy.count(), aCount); - QVERIFY(bSpy.count() > bCount); - QCOMPARE(cSpy.count(), cCount); - QCOMPARE(bSpy.last().value(0).toInt(), 324); - QCOMPARE(cSpy.last().value(0).toInt(), 9845); - - bCount = bSpy.count(); - - object.removePropertyWatch("b"); - - QTestEventLoop::instance().enterLoop(1); - - QCOMPARE(aSpy.count(), aCount); - QCOMPARE(bSpy.count(), bCount); - QCOMPARE(cSpy.count(), cCount); -} - -void tst_QMediaObject::setupNotifyTests() -{ - QTest::addColumn<int>("interval"); - QTest::addColumn<int>("count"); - - QTest::newRow("single 750ms") - << 750 - << 1; - QTest::newRow("single 600ms") - << 600 - << 1; - QTest::newRow("x3 300ms") - << 300 - << 3; - QTest::newRow("x5 180ms") - << 180 - << 5; -} - -void tst_QMediaObject::notifySignals_data() -{ - setupNotifyTests(); -} - -void tst_QMediaObject::notifySignals() -{ - QFETCH(int, interval); - QFETCH(int, count); - - QtTestMediaObject object; - QSignalSpy spy(&object, SIGNAL(aChanged(int))); - - object.setNotifyInterval(interval); - object.addPropertyWatch("a"); - - QElapsedTimer timer; - timer.start(); - - QTRY_COMPARE(spy.count(), count); -} - -void tst_QMediaObject::notifyInterval_data() -{ - setupNotifyTests(); -} - -void tst_QMediaObject::notifyInterval() -{ - QFETCH(int, interval); - - QtTestMediaObject object; - QSignalSpy spy(&object, SIGNAL(notifyIntervalChanged(int))); - - object.setNotifyInterval(interval); - QCOMPARE(object.notifyInterval(), interval); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.last().value(0).toInt(), interval); - - object.setNotifyInterval(interval); - QCOMPARE(object.notifyInterval(), interval); - QCOMPARE(spy.count(), 1); -} - -void tst_QMediaObject::nullMetaDataControl() -{ - const QString titleKey(QLatin1String("Title")); - const QString title(QLatin1String("Host of Seraphim")); - - QtTestMediaObjectService service; - service.hasMetaData = false; - - QtTestMediaObject object(&service); - - QSignalSpy spy(&object, SIGNAL(metaDataChanged())); - - QCOMPARE(object.isMetaDataAvailable(), false); - - QCOMPARE(object.metaData(QMediaMetaData::Title).toString(), QString()); - QCOMPARE(object.availableMetaData(), QStringList()); - QCOMPARE(spy.count(), 0); -} - -void tst_QMediaObject::isMetaDataAvailable() -{ - QtTestMediaObjectService service; - service.metaData.setMetaDataAvailable(false); - - QtTestMediaObject object(&service); - QCOMPARE(object.isMetaDataAvailable(), false); - - QSignalSpy spy(&object, SIGNAL(metaDataAvailableChanged(bool))); - service.metaData.setMetaDataAvailable(true); - - QCOMPARE(object.isMetaDataAvailable(), true); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).at(0).toBool(), true); - - service.metaData.setMetaDataAvailable(false); - - QCOMPARE(object.isMetaDataAvailable(), false); - QCOMPARE(spy.count(), 2); - QCOMPARE(spy.at(1).at(0).toBool(), false); -} - -void tst_QMediaObject::metaDataChanged() -{ - QtTestMediaObjectService service; - QtTestMediaObject object(&service); - - QSignalSpy changedSpy(&object, SIGNAL(metaDataChanged())); - QSignalSpy changedWithValueSpy(&object, SIGNAL(metaDataChanged(QString,QVariant))); - - service.metaData.setMetaData("key", "Value"); - QCOMPARE(changedSpy.count(), 1); - QCOMPARE(changedWithValueSpy.count(), 1); - QCOMPARE(changedWithValueSpy.last()[0], QVariant("key")); - QCOMPARE(changedWithValueSpy.last()[1].value<QVariant>(), QVariant("Value")); - - service.metaData.setMetaData("key", "Value"); - QCOMPARE(changedSpy.count(), 1); - QCOMPARE(changedWithValueSpy.count(), 1); - - service.metaData.setMetaData("key2", "Value"); - QCOMPARE(changedSpy.count(), 2); - QCOMPARE(changedWithValueSpy.count(), 2); - QCOMPARE(changedWithValueSpy.last()[0], QVariant("key2")); - QCOMPARE(changedWithValueSpy.last()[1].value<QVariant>(), QVariant("Value")); -} - -void tst_QMediaObject::metaData_data() -{ - QTest::addColumn<QString>("artist"); - QTest::addColumn<QString>("title"); - QTest::addColumn<QString>("genre"); - - QTest::newRow("") - << QString::fromLatin1("Dead Can Dance") - << QString::fromLatin1("Host of Seraphim") - << QString::fromLatin1("Awesome"); -} - -void tst_QMediaObject::metaData() -{ - QFETCH(QString, artist); - QFETCH(QString, title); - QFETCH(QString, genre); - - QtTestMediaObjectService service; - service.metaData.populateMetaData(); - - QtTestMediaObject object(&service); - QVERIFY(object.availableMetaData().isEmpty()); - - service.metaData.m_data.insert(QMediaMetaData::AlbumArtist, artist); - service.metaData.m_data.insert(QMediaMetaData::Title, title); - service.metaData.m_data.insert(QMediaMetaData::Genre, genre); - - QCOMPARE(object.metaData(QMediaMetaData::AlbumArtist).toString(), artist); - QCOMPARE(object.metaData(QMediaMetaData::Title).toString(), title); - - QStringList metaDataKeys = object.availableMetaData(); - QCOMPARE(metaDataKeys.size(), 3); - QVERIFY(metaDataKeys.contains(QMediaMetaData::AlbumArtist)); - QVERIFY(metaDataKeys.contains(QMediaMetaData::Title)); - QVERIFY(metaDataKeys.contains(QMediaMetaData::Genre)); -} - -void tst_QMediaObject::availability() -{ - { - QtTestMediaObject nullObject(0); - QCOMPARE(nullObject.isAvailable(), false); - QCOMPARE(nullObject.availability(), QMultimedia::ServiceMissing); - } - - { - QtTestMediaObjectService service; - QtTestMediaObject object(&service); - QCOMPARE(object.isAvailable(), true); - QCOMPARE(object.availability(), QMultimedia::Available); - } - - { - MockAvailabilityControl available(QMultimedia::Available); - QtTestMediaObjectService service(0, &available); - QtTestMediaObject object(&service); - QSignalSpy availabilitySpy(&object, SIGNAL(availabilityChanged(bool))); - QSignalSpy availabilityStatusSpy(&object, SIGNAL(availabilityChanged(QMultimedia::AvailabilityStatus))); - - QCOMPARE(object.isAvailable(), true); - QCOMPARE(object.availability(), QMultimedia::Available); - - available.setAvailability(QMultimedia::Busy); - QCOMPARE(object.isAvailable(), false); - QCOMPARE(object.availability(), QMultimedia::Busy); - QCOMPARE(availabilitySpy.count(), 1); - QCOMPARE(availabilityStatusSpy.count(), 1); - - available.setAvailability(QMultimedia::Available); - QCOMPARE(object.isAvailable(), true); - QCOMPARE(object.availability(), QMultimedia::Available); - QCOMPARE(availabilitySpy.count(), 2); - QCOMPARE(availabilityStatusSpy.count(), 2); - } - - { - MockAvailabilityControl available(QMultimedia::Busy); - QtTestMediaObjectService service(0, &available); - QtTestMediaObject object(&service); - QSignalSpy availabilitySpy(&object, SIGNAL(availabilityChanged(bool))); - QSignalSpy availabilityStatusSpy(&object, SIGNAL(availabilityChanged(QMultimedia::AvailabilityStatus))); - - QCOMPARE(object.isAvailable(), false); - QCOMPARE(object.availability(), QMultimedia::Busy); - - available.setAvailability(QMultimedia::Available); - QCOMPARE(object.isAvailable(), true); - QCOMPARE(object.availability(), QMultimedia::Available); - QCOMPARE(availabilitySpy.count(), 1); - QCOMPARE(availabilityStatusSpy.count(), 1); - } -} - - void tst_QMediaObject::service() - { - // Create the mediaobject with service. - QtTestMediaObjectService service; - QtTestMediaObject mediaObject1(&service); - - // Get service and Compare if it equal to the service passed as an argument in mediaObject1. - QMediaService *service1 = mediaObject1.service(); - QVERIFY(service1 != NULL); - QCOMPARE(service1,&service); - - // Create the mediaobject with empty service and verify that service() returns NULL. - QtTestMediaObject mediaObject2; - QMediaService *service2 = mediaObject2.service(); - QVERIFY(service2 == NULL); -} - -QTEST_GUILESS_MAIN(tst_QMediaObject) -#include "tst_qmediaobject.moc" |