summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@theqtcompany.com>2016-01-15 17:27:32 +0100
committerChristian Strømme <christian.stromme@theqtcompany.com>2016-01-15 17:28:17 +0100
commit84e426c3af2a3bb1b7f916e54263aea758db38d0 (patch)
tree4fe09a8da5b15ba466e5771239d06f29a6c123da /tests
parent84aaa48fdfc1f35c9870518a3d4b6f08a1f99449 (diff)
parent924dc7f48c7003b46079623738ae531f34aed903 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: src/plugins/android/src/mediacapture/qandroidcamerasession.cpp src/plugins/wmf/mftvideo.cpp Change-Id: I78868b416ea4baec89ca3e2dc9eb4712db16d5fc
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/integration/qaudiodecoderbackend/BLACKLIST4
-rw-r--r--tests/auto/integration/qmediaplayerbackend/BLACKLIST4
-rw-r--r--tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp11
-rw-r--r--tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp304
-rw-r--r--tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h46
-rw-r--r--tests/auto/unit/qmultimedia_common/mockplaylistservice.h2
-rw-r--r--tests/auto/unit/qmultimedia_common/mockreadonlyplaylistprovider.h1
7 files changed, 337 insertions, 35 deletions
diff --git a/tests/auto/integration/qaudiodecoderbackend/BLACKLIST b/tests/auto/integration/qaudiodecoderbackend/BLACKLIST
index bd2349568..038b89022 100644
--- a/tests/auto/integration/qaudiodecoderbackend/BLACKLIST
+++ b/tests/auto/integration/qaudiodecoderbackend/BLACKLIST
@@ -6,6 +6,7 @@ redhatenterpriselinuxworkstation-6.6
osx-10.8
osx-10.9
osx-10.10
+osx-10.11
windows 32bit developer-build
windows 64bit developer-build
@@ -15,6 +16,7 @@ redhatenterpriselinuxworkstation-6.6
osx-10.8
osx-10.9
osx-10.10
+osx-10.11
windows 32bit developer-build
windows 64bit developer-build
@@ -24,6 +26,7 @@ redhatenterpriselinuxworkstation-6.6
osx-10.8
osx-10.9
osx-10.10
+osx-10.11
windows 32bit developer-build
windows 64bit developer-build
@@ -33,5 +36,6 @@ redhatenterpriselinuxworkstation-6.6
osx-10.8
osx-10.9
osx-10.10
+osx-10.11
windows 32bit developer-build
windows 64bit developer-build
diff --git a/tests/auto/integration/qmediaplayerbackend/BLACKLIST b/tests/auto/integration/qmediaplayerbackend/BLACKLIST
index b9907f305..9f0d4b746 100644
--- a/tests/auto/integration/qmediaplayerbackend/BLACKLIST
+++ b/tests/auto/integration/qmediaplayerbackend/BLACKLIST
@@ -3,6 +3,7 @@
osx-10.8
osx-10.9
osx-10.10
+osx-10.11
windows 32bit developer-build
windows 64bit developer-build
@@ -48,6 +49,9 @@ redhatenterpriselinuxworkstation-6.6
[seekPauseSeek]
redhatenterpriselinuxworkstation-6.6
+[seekInStoppedState]
+redhatenterpriselinuxworkstation-6.6
+
[subsequentPlayback]
redhatenterpriselinuxworkstation-6.6
diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
index 916f70eff..c032734c5 100644
--- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
+++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
@@ -220,13 +220,13 @@ void tst_QMediaPlayerBackend::initTestCase()
qRegisterMetaType<QMediaContent>();
QStringList mediaCandidates;
- mediaCandidates << QFINDTESTDATA("testdata/colors.ogv");
mediaCandidates << QFINDTESTDATA("testdata/colors.mp4");
+ mediaCandidates << QFINDTESTDATA("testdata/colors.ogv");
localVideoFile = selectMediaFile(mediaCandidates);
mediaCandidates.clear();
- mediaCandidates << QFINDTESTDATA("testdata/nokia-tune.mkv");
mediaCandidates << QFINDTESTDATA("testdata/nokia-tune.mp3");
+ mediaCandidates << QFINDTESTDATA("testdata/nokia-tune.mkv");
localCompressedSoundFile = selectMediaFile(mediaCandidates);
localFileWithMetadata = selectMediaFile(QStringList() << QFINDTESTDATA("testdata/nokia-tune.mp3"));
@@ -478,7 +478,7 @@ void tst_QMediaPlayerBackend::processEOS()
//position is reset to start
QTRY_VERIFY(player.position() < 100);
- QVERIFY(positionSpy.count() > 0);
+ QTRY_VERIFY(positionSpy.count() > 0);
QCOMPARE(positionSpy.first()[0].value<qint64>(), 0);
QCOMPARE(player.state(), QMediaPlayer::PlayingState);
@@ -720,7 +720,7 @@ void tst_QMediaPlayerBackend::seekPauseSeek()
player.pause();
QTRY_COMPARE(player.state(), QMediaPlayer::PausedState); // it might take some time for the operation to be completed
- QTRY_COMPARE(surface->m_frameList.size(), 1); // we must see a frame at position 7000 here
+ QTRY_VERIFY(!surface->m_frameList.isEmpty()); // we must see a frame at position 7000 here
{
QVideoFrame frame = surface->m_frameList.back();
@@ -739,12 +739,13 @@ void tst_QMediaPlayerBackend::seekPauseSeek()
frame.unmap();
}
+ surface->m_frameList.clear();
positionSpy.clear();
position = 12000;
player.setPosition(position);
QTRY_VERIFY(!positionSpy.isEmpty() && qAbs(player.position() - position) < (qint64)500);
QCOMPARE(player.state(), QMediaPlayer::PausedState);
- QCOMPARE(surface->m_frameList.size(), 2);
+ QVERIFY(!surface->m_frameList.isEmpty());
{
QVideoFrame frame = surface->m_frameList.back();
diff --git a/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp b/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp
index daecda82b..104046d0e 100644
--- a/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp
+++ b/tests/auto/unit/qmediaplaylist/tst_qmediaplaylist.cpp
@@ -51,14 +51,16 @@
QT_USE_NAMESPACE
-class MockReadOnlyPlaylistObject : public QMediaObject
+class MockPlaylistObject : public QMediaObject
{
Q_OBJECT
public:
- MockReadOnlyPlaylistObject(QObject *parent = 0)
- :QMediaObject(parent, new MockPlaylistService)
+ MockPlaylistObject(QObject *parent = 0)
+ : QMediaObject(parent, mockService = new MockPlaylistService)
{
}
+
+ MockPlaylistService *mockService;
};
class tst_QMediaPlaylist : public QObject
@@ -711,7 +713,9 @@ void tst_QMediaPlaylist::shuffle()
void tst_QMediaPlaylist::readOnlyPlaylist()
{
- MockReadOnlyPlaylistObject mediaObject;
+ MockPlaylistObject mediaObject;
+ mediaObject.mockService->mockControl->setReadOnly(true);
+
QMediaPlaylist playlist;
mediaObject.bind(&playlist);
@@ -777,26 +781,280 @@ void tst_QMediaPlaylist::readOnlyPlaylist()
void tst_QMediaPlaylist::setMediaObject()
{
- MockReadOnlyPlaylistObject mediaObject;
-
- QMediaPlaylist playlist;
- QVERIFY(playlist.mediaObject() == 0);
- QVERIFY(!playlist.isReadOnly());
-
- mediaObject.bind(&playlist);
- QCOMPARE(playlist.mediaObject(), qobject_cast<QMediaObject*>(&mediaObject));
- QCOMPARE(playlist.mediaCount(), 3);
- QVERIFY(playlist.isReadOnly());
-
- mediaObject.unbind(&playlist);
- QVERIFY(playlist.mediaObject() == 0);
- QCOMPARE(playlist.mediaCount(), 0);
- QVERIFY(!playlist.isReadOnly());
+ QMediaContent content0(QUrl(QLatin1String("test://audio/song1.mp3")));
+ QMediaContent content1(QUrl(QLatin1String("test://audio/song2.mp3")));
+ QMediaContent content2(QUrl(QLatin1String("test://video/movie1.mp4")));
+ QMediaContent content3(QUrl(QLatin1String("test://video/movie2.mp4")));
- mediaObject.bind(&playlist);
- QCOMPARE(playlist.mediaObject(), qobject_cast<QMediaObject*>(&mediaObject));
- QCOMPARE(playlist.mediaCount(), 3);
- QVERIFY(playlist.isReadOnly());
+ {
+ MockPlaylistObject mediaObject;
+
+ QMediaPlaylist playlist;
+ QSignalSpy currentIndexSpy(&playlist, SIGNAL(currentIndexChanged(int)));
+ QSignalSpy playbackModeSpy(&playlist, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)));
+ QSignalSpy mediaAboutToBeInsertedSpy(&playlist, SIGNAL(mediaAboutToBeInserted(int, int)));
+ QSignalSpy mediaInsertedSpy(&playlist, SIGNAL(mediaInserted(int, int)));
+ QSignalSpy mediaAboutToBeRemovedSpy(&playlist, SIGNAL(mediaAboutToBeRemoved(int, int)));
+ QSignalSpy mediaRemovedSpy(&playlist, SIGNAL(mediaRemoved(int, int)));
+ QSignalSpy mediaChangedSpy(&playlist, SIGNAL(mediaChanged(int, int)));
+
+ QVERIFY(playlist.isEmpty());
+
+ mediaObject.bind(&playlist);
+
+ // Playlist is now using the service's control, nothing should have changed
+ QVERIFY(playlist.isEmpty());
+ QCOMPARE(playlist.currentIndex(), -1);
+ QCOMPARE(playlist.playbackMode(), QMediaPlaylist::Sequential);
+ QCOMPARE(currentIndexSpy.count(), 0);
+ QCOMPARE(playbackModeSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(mediaInsertedSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(mediaRemovedSpy.count(), 0);
+ QCOMPARE(mediaChangedSpy.count(), 0);
+
+ // add items to service's playlist control
+ playlist.addMedia(content0);
+ playlist.addMedia(content1);
+ playlist.setCurrentIndex(1);
+ playlist.setPlaybackMode(QMediaPlaylist::Random);
+ QCOMPARE(playlist.mediaCount(), 2);
+ QCOMPARE(playlist.currentIndex(), 1);
+ QCOMPARE(playlist.currentMedia(), content1);
+ QCOMPARE(playlist.playbackMode(), QMediaPlaylist::Random);
+
+ currentIndexSpy.clear();
+ playbackModeSpy.clear();
+ mediaAboutToBeInsertedSpy.clear();
+ mediaInsertedSpy.clear();
+ mediaAboutToBeRemovedSpy.clear();
+ mediaRemovedSpy.clear();
+ mediaChangedSpy.clear();
+
+ // unbind the playlist, reverting back to the internal control.
+ // playlist content should't have changed.
+ mediaObject.unbind(&playlist);
+ QCOMPARE(playlist.mediaCount(), 2);
+ QCOMPARE(playlist.currentIndex(), 1);
+ QCOMPARE(playlist.currentMedia(), content1);
+ QCOMPARE(playlist.playbackMode(), QMediaPlaylist::Random);
+ QCOMPARE(playbackModeSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(mediaInsertedSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(mediaRemovedSpy.count(), 0);
+ QCOMPARE(mediaChangedSpy.count(), 0);
+ }
+ {
+ MockPlaylistObject mediaObject;
+
+ QMediaPlaylist playlist;
+ QVERIFY(playlist.isEmpty());
+ // Add items to playlist before binding to the service (internal control)
+ playlist.addMedia(content0);
+ playlist.addMedia(content1);
+ playlist.addMedia(content2);
+ playlist.setCurrentIndex(2);
+ playlist.setPlaybackMode(QMediaPlaylist::CurrentItemOnce);
+
+ QSignalSpy currentIndexSpy(&playlist, SIGNAL(currentIndexChanged(int)));
+ QSignalSpy playbackModeSpy(&playlist, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)));
+ QSignalSpy mediaAboutToBeInsertedSpy(&playlist, SIGNAL(mediaAboutToBeInserted(int, int)));
+ QSignalSpy mediaInsertedSpy(&playlist, SIGNAL(mediaInserted(int, int)));
+ QSignalSpy mediaAboutToBeRemovedSpy(&playlist, SIGNAL(mediaAboutToBeRemoved(int, int)));
+ QSignalSpy mediaRemovedSpy(&playlist, SIGNAL(mediaRemoved(int, int)));
+ QSignalSpy mediaChangedSpy(&playlist, SIGNAL(mediaChanged(int, int)));
+
+ // Bind playlist, content should be unchanged
+ mediaObject.bind(&playlist);
+ QCOMPARE(playlist.mediaCount(), 3);
+ QCOMPARE(playlist.currentIndex(), 2);
+ QCOMPARE(playlist.currentMedia(), content2);
+ QCOMPARE(playlist.playbackMode(), QMediaPlaylist::CurrentItemOnce);
+ QCOMPARE(currentIndexSpy.count(), 0);
+ QCOMPARE(playbackModeSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(mediaInsertedSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(mediaRemovedSpy.count(), 0);
+ QCOMPARE(mediaChangedSpy.count(), 0);
+
+ // Clear playlist content (service's playlist control)
+ playlist.clear();
+ playlist.setCurrentIndex(-1);
+ playlist.setPlaybackMode(QMediaPlaylist::Random);
+
+ currentIndexSpy.clear();
+ playbackModeSpy.clear();
+ mediaAboutToBeInsertedSpy.clear();
+ mediaInsertedSpy.clear();
+ mediaAboutToBeRemovedSpy.clear();
+ mediaRemovedSpy.clear();
+ mediaChangedSpy.clear();
+
+ // unbind playlist from service, reverting back to the internal control.
+ // playlist should still be empty
+ mediaObject.unbind(&playlist);
+ QCOMPARE(playlist.mediaCount(), 0);
+ QCOMPARE(playlist.currentIndex(), -1);
+ QCOMPARE(playlist.currentMedia(), QMediaContent());
+ QCOMPARE(playlist.playbackMode(), QMediaPlaylist::Random);
+ QCOMPARE(playbackModeSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(mediaInsertedSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(mediaRemovedSpy.count(), 0);
+ QCOMPARE(mediaChangedSpy.count(), 0);
+ }
+ {
+ MockPlaylistObject mediaObject;
+
+ QMediaPlaylist playlist;
+ QVERIFY(playlist.isEmpty());
+ // Add items to playlist before attaching to media player (internal control)
+ playlist.addMedia(content0);
+ playlist.addMedia(content1);
+ playlist.setCurrentIndex(-1);
+ playlist.setPlaybackMode(QMediaPlaylist::CurrentItemOnce);
+
+ // Add items to service's playlist before binding
+ QMediaPlaylistProvider *pp = mediaObject.mockService->mockControl->playlistProvider();
+ pp->addMedia(content2);
+ pp->addMedia(content3);
+ mediaObject.mockService->mockControl->setCurrentIndex(1);
+ mediaObject.mockService->mockControl->setPlaybackMode(QMediaPlaylist::Random);
+
+ QSignalSpy currentIndexSpy(&playlist, SIGNAL(currentIndexChanged(int)));
+ QSignalSpy playbackModeSpy(&playlist, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)));
+ QSignalSpy mediaAboutToBeInsertedSpy(&playlist, SIGNAL(mediaAboutToBeInserted(int, int)));
+ QSignalSpy mediaInsertedSpy(&playlist, SIGNAL(mediaInserted(int, int)));
+ QSignalSpy mediaAboutToBeRemovedSpy(&playlist, SIGNAL(mediaAboutToBeRemoved(int, int)));
+ QSignalSpy mediaRemovedSpy(&playlist, SIGNAL(mediaRemoved(int, int)));
+ QSignalSpy mediaChangedSpy(&playlist, SIGNAL(mediaChanged(int, int)));
+
+ // Bind playlist, it should contain only what was explicitly added to the playlist.
+ // Anything that was present in the service's control should have been cleared
+ mediaObject.bind(&playlist);
+ QCOMPARE(playlist.mediaCount(), 2);
+ QCOMPARE(playlist.currentIndex(), -1);
+ QCOMPARE(playlist.playbackMode(), QMediaPlaylist::CurrentItemOnce);
+ QCOMPARE(currentIndexSpy.count(), 0);
+ QCOMPARE(playbackModeSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(mediaInsertedSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(mediaRemovedSpy.count(), 0);
+ QCOMPARE(mediaChangedSpy.count(), 0);
+
+ // do some changes
+ playlist.removeMedia(0); // content0
+ playlist.addMedia(content3);
+ playlist.setCurrentIndex(0);
+
+ currentIndexSpy.clear();
+ playbackModeSpy.clear();
+ mediaAboutToBeInsertedSpy.clear();
+ mediaInsertedSpy.clear();
+ mediaAboutToBeRemovedSpy.clear();
+ mediaRemovedSpy.clear();
+ mediaChangedSpy.clear();
+
+ // unbind playlist from service
+ mediaObject.unbind(&playlist);
+ QCOMPARE(playlist.mediaCount(), 2);
+ QCOMPARE(playlist.currentIndex(), 0);
+ QCOMPARE(playlist.currentMedia(), content1);
+ QCOMPARE(playlist.playbackMode(), QMediaPlaylist::CurrentItemOnce);
+ QCOMPARE(currentIndexSpy.count(), 0);
+ QCOMPARE(playbackModeSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(mediaInsertedSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(mediaRemovedSpy.count(), 0);
+ QCOMPARE(mediaChangedSpy.count(), 0);
+
+ // bind again, nothing should have changed
+ mediaObject.bind(&playlist);
+ QCOMPARE(playlist.mediaCount(), 2);
+ QCOMPARE(playlist.currentIndex(), 0);
+ QCOMPARE(playlist.currentMedia(), content1);
+ QCOMPARE(playlist.playbackMode(), QMediaPlaylist::CurrentItemOnce);
+ QCOMPARE(currentIndexSpy.count(), 0);
+ QCOMPARE(playbackModeSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(mediaInsertedSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(mediaRemovedSpy.count(), 0);
+ QCOMPARE(mediaChangedSpy.count(), 0);
+ }
+ {
+ MockPlaylistObject mediaObject;
+ mediaObject.mockService->mockControl->setReadOnly(true);
+
+ QMediaPlaylist playlist;
+ QVERIFY(playlist.isEmpty());
+ // Add items to playlist before binding to the service internal control)
+ playlist.addMedia(content0);
+ playlist.addMedia(content1);
+ playlist.setCurrentIndex(-1);
+ playlist.setPlaybackMode(QMediaPlaylist::CurrentItemOnce);
+
+ QSignalSpy currentIndexSpy(&playlist, SIGNAL(currentIndexChanged(int)));
+ QSignalSpy playbackModeSpy(&playlist, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)));
+ QSignalSpy mediaAboutToBeInsertedSpy(&playlist, SIGNAL(mediaAboutToBeInserted(int, int)));
+ QSignalSpy mediaInsertedSpy(&playlist, SIGNAL(mediaInserted(int, int)));
+ QSignalSpy mediaAboutToBeRemovedSpy(&playlist, SIGNAL(mediaAboutToBeRemoved(int, int)));
+ QSignalSpy mediaRemovedSpy(&playlist, SIGNAL(mediaRemoved(int, int)));
+ QSignalSpy mediaChangedSpy(&playlist, SIGNAL(mediaChanged(int, int)));
+
+ // Bind playlist. Since the service's control is read-only, no synchronization
+ // should be done with the internal control. The mediaRemoved() and mediaInserted()
+ // should be emitted to notify about the change.
+ mediaObject.bind(&playlist);
+ QCOMPARE(playlist.mediaCount(), 3);
+ QCOMPARE(playlist.currentIndex(), -1);
+ QCOMPARE(playlist.playbackMode(), QMediaPlaylist::CurrentItemOnce);
+ QCOMPARE(currentIndexSpy.count(), 0);
+ QCOMPARE(playbackModeSpy.count(), 0);
+
+ QCOMPARE(mediaAboutToBeRemovedSpy.count(), 1);
+ QCOMPARE(mediaAboutToBeRemovedSpy.last().at(0).toInt(), 0);
+ QCOMPARE(mediaAboutToBeRemovedSpy.last().at(1).toInt(), 1);
+ QCOMPARE(mediaRemovedSpy.count(), 1);
+ QCOMPARE(mediaRemovedSpy.last().at(0).toInt(), 0);
+ QCOMPARE(mediaRemovedSpy.last().at(1).toInt(), 1);
+
+ QCOMPARE(mediaAboutToBeInsertedSpy.count(), 1);
+ QCOMPARE(mediaAboutToBeInsertedSpy.last().at(0).toInt(), 0);
+ QCOMPARE(mediaAboutToBeInsertedSpy.last().at(1).toInt(), 2);
+ QCOMPARE(mediaInsertedSpy.count(), 1);
+ QCOMPARE(mediaInsertedSpy.last().at(0).toInt(), 0);
+ QCOMPARE(mediaInsertedSpy.last().at(1).toInt(), 2);
+
+ QCOMPARE(mediaChangedSpy.count(), 0);
+
+ currentIndexSpy.clear();
+ playbackModeSpy.clear();
+ mediaAboutToBeInsertedSpy.clear();
+ mediaInsertedSpy.clear();
+ mediaAboutToBeRemovedSpy.clear();
+ mediaRemovedSpy.clear();
+ mediaChangedSpy.clear();
+
+ // detach playlist from player
+ mediaObject.unbind(&playlist);
+ QCOMPARE(playlist.mediaCount(), 3);
+ QCOMPARE(playlist.currentIndex(), -1);
+ QCOMPARE(playlist.playbackMode(), QMediaPlaylist::CurrentItemOnce);
+ QCOMPARE(currentIndexSpy.count(), 0);
+ QCOMPARE(playbackModeSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(mediaInsertedSpy.count(), 0);
+ QCOMPARE(mediaAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(mediaRemovedSpy.count(), 0);
+ QCOMPARE(mediaChangedSpy.count(), 0);
+ }
}
void tst_QMediaPlaylist::testCurrentIndexChanged_signal()
diff --git a/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h b/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h
index 6620aa763..9f4eabf38 100644
--- a/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h
+++ b/tests/auto/unit/qmultimedia_common/mockmediaplaylistcontrol.h
@@ -36,24 +36,52 @@
#include <private/qmediaplaylistcontrol_p.h>
#include <private/qmediaplaylistnavigator_p.h>
+#include <private/qmedianetworkplaylistprovider_p.h>
#include "mockreadonlyplaylistprovider.h"
-// Hmm, read only.
class MockMediaPlaylistControl : public QMediaPlaylistControl
{
- Q_OBJECT
public:
- MockMediaPlaylistControl(QObject *parent) : QMediaPlaylistControl(parent)
+ MockMediaPlaylistControl(bool readonly = false, QObject *parent = 0)
+ : QMediaPlaylistControl(parent)
+ , m_navigator(0)
+ , m_playlist(0)
+ , m_ownsProvider(false)
+ , m_readOnly(readonly)
{
- m_navigator = new QMediaPlaylistNavigator(new MockReadOnlyPlaylistProvider(this), this);
+ reset();
}
~MockMediaPlaylistControl()
{
}
- QMediaPlaylistProvider* playlistProvider() const { return m_navigator->playlist(); }
+ void reset()
+ {
+ delete m_navigator;
+ if (m_ownsProvider)
+ delete m_playlist;
+
+ if (m_readOnly)
+ m_playlist = new MockReadOnlyPlaylistProvider(this);
+ else
+ m_playlist = new QMediaNetworkPlaylistProvider(this);
+
+ m_ownsProvider = true;
+ m_navigator = new QMediaPlaylistNavigator(m_playlist, this);
+ }
+
+ void setReadOnly(bool ro)
+ {
+ if (m_readOnly == ro)
+ return;
+
+ m_readOnly = ro;
+ reset();
+ }
+
+ QMediaPlaylistProvider* playlistProvider() const { return m_playlist; }
bool setPlaylistProvider(QMediaPlaylistProvider *newProvider)
{
bool bMediaContentChanged = false;
@@ -70,6 +98,11 @@ public:
emit currentMediaChanged(newProvider->media(i));
}
+ if (m_ownsProvider)
+ delete m_playlist;
+ m_playlist = newProvider;
+ m_ownsProvider = false;
+
m_navigator->setPlaylist(newProvider);
return true;
}
@@ -99,6 +132,9 @@ public:
private:
QMediaPlaylistNavigator *m_navigator;
+ QMediaPlaylistProvider *m_playlist;
+ bool m_ownsProvider;
+ bool m_readOnly;
};
#endif // MOCKMEDIAPLAYLISTCONTROL_H
diff --git a/tests/auto/unit/qmultimedia_common/mockplaylistservice.h b/tests/auto/unit/qmultimedia_common/mockplaylistservice.h
index 95d95dbff..6c038abfe 100644
--- a/tests/auto/unit/qmultimedia_common/mockplaylistservice.h
+++ b/tests/auto/unit/qmultimedia_common/mockplaylistservice.h
@@ -44,7 +44,7 @@ class MockPlaylistService : public QMediaService
public:
MockPlaylistService():QMediaService(0)
{
- mockControl = new MockMediaPlaylistControl(this);
+ mockControl = new MockMediaPlaylistControl(false, this);
}
~MockPlaylistService()
diff --git a/tests/auto/unit/qmultimedia_common/mockreadonlyplaylistprovider.h b/tests/auto/unit/qmultimedia_common/mockreadonlyplaylistprovider.h
index 50747c1ad..39b1598b0 100644
--- a/tests/auto/unit/qmultimedia_common/mockreadonlyplaylistprovider.h
+++ b/tests/auto/unit/qmultimedia_common/mockreadonlyplaylistprovider.h
@@ -38,7 +38,6 @@
class MockReadOnlyPlaylistProvider : public QMediaPlaylistProvider
{
- Q_OBJECT
public:
MockReadOnlyPlaylistProvider(QObject *parent)
:QMediaPlaylistProvider(parent)