summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJames McDonnell <jmcdonnell@blackberry.com>2017-03-28 17:23:25 -0400
committerJames McDonnell <jmcdonnell@blackberry.com>2017-10-23 14:10:43 +0000
commit82694e41b1d37e04ecc911f420ad4317220f8180 (patch)
tree831804b09c5fc36be0e103444c596149771d4a78 /tests
parent66c0334a3c4cb8deb63c67aa70da3f4ed94f89a4 (diff)
Propagate customAudioRole into the QML classes
Propagate customAudioRole into the Audio, MediaPlayer and Video classes. [ChangeLog][Audio/Video/MediaPlayer] Added customAudioRole string property to enable use of audio roles beyond those available via the audioRole enum property. Change-Id: If3c4ec20f014653d31d1fa0d1ad925084f446478 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp150
1 files changed, 150 insertions, 0 deletions
diff --git a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp
index 5ff557ef6..b270e93eb 100644
--- a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp
+++ b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp
@@ -74,6 +74,13 @@ private slots:
void error();
void loops();
void audioRole();
+ void customAudioRole();
+
+private:
+ void enumerator(const QMetaObject *object, const char *name, QMetaEnum *result);
+ QMetaEnum enumerator(const QMetaObject *object, const char *name);
+ void keyToValue(const QMetaEnum &enumeration, const char *key, int *result);
+ int keyToValue(const QMetaEnum &enumeration, const char *key);
};
Q_DECLARE_METATYPE(QDeclarativeAudio::Error);
@@ -1051,6 +1058,149 @@ void tst_QDeclarativeAudio::audioRole()
}
}
+void tst_QDeclarativeAudio::customAudioRole()
+{
+ MockMediaPlayerService mockService;
+ MockMediaServiceProvider mockProvider(&mockService);
+ QMediaServiceProvider::setDefaultServiceProvider(&mockProvider);
+
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.setData("import QtQuick 2.0 \n import QtMultimedia 5.11 \n Audio { }", QUrl());
+
+ {
+ mockService.setHasCustomAudioRole(false);
+ QObject *audio = component.create();
+ QVERIFY(audio);
+
+ QMetaEnum audioRoleEnum = enumerator(audio->metaObject(), "AudioRole");
+ int AudioRole_UnknownRoleValue = keyToValue(audioRoleEnum, "UnknownRole");
+ QVERIFY(!QTest::currentTestFailed());
+
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+
+ QSignalSpy spyRole(audio, SIGNAL(audioRoleChanged()));
+ QSignalSpy spyCustomRole(audio, SIGNAL(customAudioRoleChanged()));
+ audio->setProperty("customAudioRole", QStringLiteral("customRole"));
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_UnknownRoleValue);
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+ QCOMPARE(spyRole.count(), 0);
+ QCOMPARE(spyCustomRole.count(), 0);
+ }
+
+ {
+ mockService.reset();
+ mockService.setHasAudioRole(false);
+
+ QObject *audio = component.create();
+ QVERIFY(audio);
+
+ QMetaEnum audioRoleEnum = enumerator(audio->metaObject(), "AudioRole");
+ int AudioRole_UnknownRoleValue = keyToValue(audioRoleEnum, "UnknownRole");
+ QVERIFY(!QTest::currentTestFailed());
+
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+
+ QSignalSpy spyRole(audio, SIGNAL(audioRoleChanged()));
+ QSignalSpy spyCustomRole(audio, SIGNAL(customAudioRoleChanged()));
+ audio->setProperty("customAudioRole", QStringLiteral("customRole"));
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_UnknownRoleValue);
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+ QCOMPARE(spyRole.count(), 0);
+ QCOMPARE(spyCustomRole.count(), 0);
+ }
+
+ {
+ mockService.reset();
+
+ QObject *audio = component.create();
+ QVERIFY(audio);
+
+ QMetaEnum audioRoleEnum = enumerator(audio->metaObject(), "AudioRole");
+ int AudioRole_UnknownRoleValue = keyToValue(audioRoleEnum, "UnknownRole");
+ int AudioRole_CustomRoleValue = keyToValue(audioRoleEnum, "CustomRole");
+ int AudioRole_MusicRoleValue = keyToValue(audioRoleEnum, "MusicRole");
+ QVERIFY(!QTest::currentTestFailed());
+
+ QSignalSpy spyRole(audio, SIGNAL(audioRoleChanged()));
+ QSignalSpy spyCustomRole(audio, SIGNAL(customAudioRoleChanged()));
+
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_UnknownRoleValue);
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+
+ QString customRole(QStringLiteral("customRole"));
+ audio->setProperty("customAudioRole", customRole);
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_CustomRoleValue);
+ QCOMPARE(audio->property("customAudioRole").toString(), customRole);
+ QCOMPARE(mockService.mockAudioRoleControl->audioRole(), QAudio::CustomRole);
+ QCOMPARE(mockService.mockCustomAudioRoleControl->customAudioRole(), customRole);
+ QCOMPARE(spyRole.count(), 1);
+ QCOMPARE(spyCustomRole.count(), 1);
+
+ spyRole.clear();
+ spyCustomRole.clear();
+
+ QString customRole2(QStringLiteral("customRole2"));
+ audio->setProperty("customAudioRole", customRole2);
+ QCOMPARE(audio->property("customAudioRole").toString(), customRole2);
+ QCOMPARE(mockService.mockCustomAudioRoleControl->customAudioRole(), customRole2);
+ QCOMPARE(spyRole.count(), 0);
+ QCOMPARE(spyCustomRole.count(), 1);
+
+ spyRole.clear();
+ spyCustomRole.clear();
+
+ audio->setProperty("audioRole", AudioRole_MusicRoleValue);
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_MusicRoleValue);
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+ QCOMPARE(mockService.mockAudioRoleControl->audioRole(), QAudio::MusicRole);
+ QVERIFY(mockService.mockCustomAudioRoleControl->customAudioRole().isEmpty());
+ QCOMPARE(spyRole.count(), 1);
+ QCOMPARE(spyCustomRole.count(), 1);
+
+ spyRole.clear();
+ spyCustomRole.clear();
+
+ audio->setProperty("audioRole", AudioRole_CustomRoleValue);
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_CustomRoleValue);
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+ QCOMPARE(mockService.mockAudioRoleControl->audioRole(), QAudio::CustomRole);
+ QVERIFY(mockService.mockCustomAudioRoleControl->customAudioRole().isEmpty());
+ QCOMPARE(spyRole.count(), 1);
+ QCOMPARE(spyCustomRole.count(), 0);
+ }
+}
+
+void tst_QDeclarativeAudio::enumerator(const QMetaObject *object,
+ const char *name,
+ QMetaEnum *result)
+{
+ int index = object->indexOfEnumerator(name);
+ QVERIFY(index >= 0);
+ *result = object->enumerator(index);
+}
+
+QMetaEnum tst_QDeclarativeAudio::enumerator(const QMetaObject *object, const char *name)
+{
+ QMetaEnum result;
+ enumerator(object, name, &result);
+ return result;
+}
+
+void tst_QDeclarativeAudio::keyToValue(const QMetaEnum &enumeration, const char *key, int *result)
+{
+ bool ok = false;
+ *result = enumeration.keyToValue(key, &ok);
+ QVERIFY(ok);
+}
+
+int tst_QDeclarativeAudio::keyToValue(const QMetaEnum &enumeration, const char *key)
+{
+ int result;
+ keyToValue(enumeration, key, &result);
+ return result;
+}
+
QTEST_MAIN(tst_QDeclarativeAudio)
#include "tst_qdeclarativeaudio.moc"