diff options
author | Liang Qi <liang.qi@qt.io> | 2016-11-11 08:53:58 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-11-11 08:53:58 +0100 |
commit | d5ab3ab8703ef04cc06d78983bf1a39ecfe99bb4 (patch) | |
tree | 33e55f0cba22d73a7207b6237156daca1dcd624e /tests | |
parent | 0cb4dc5c1fded81b4f47945b51b8de0b0151bf67 (diff) | |
parent | d3a2d9c96994c56d67467c131b8f080510d1a8fd (diff) | |
download | qtmultimedia-d5ab3ab8703ef04cc06d78983bf1a39ecfe99bb4.tar.gz |
Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
qtmultimedia.pro
src/multimedia/playback/qmediaplayer.cpp
src/plugins/directshow/directshow.pro
tests/auto/integration/qmediaplayerbackend/BLACKLIST
Change-Id: I6dacdcbb223c1d12dd72eb308a67170983c709b3
Diffstat (limited to 'tests')
5 files changed, 161 insertions, 16 deletions
diff --git a/tests/auto/integration/qaudiodecoderbackend/BLACKLIST b/tests/auto/integration/qaudiodecoderbackend/BLACKLIST new file mode 100644 index 000000000..316c5a083 --- /dev/null +++ b/tests/auto/integration/qaudiodecoderbackend/BLACKLIST @@ -0,0 +1,2 @@ +# QTBUG-56796 +windows diff --git a/tests/auto/integration/qmediaplayerbackend/BLACKLIST b/tests/auto/integration/qmediaplayerbackend/BLACKLIST index 5560abf75..e826fc079 100644 --- a/tests/auto/integration/qmediaplayerbackend/BLACKLIST +++ b/tests/auto/integration/qmediaplayerbackend/BLACKLIST @@ -7,15 +7,13 @@ osx-10.11 windows 32bit developer-build windows 64bit developer-build -[construction] +# Media player plugin not built at the moment on this platform opensuse-13.1 64bit [loadMedia] -opensuse-13.1 64bit windows 64bit developer-build [unloadMedia] -opensuse-13.1 64bit windows 64bit developer-build [playPauseStop] @@ -23,25 +21,15 @@ linux windows 64bit developer-build [processEOS] -opensuse-13.1 64bit windows 64bit developer-build [deleteLaterAtEOS] -opensuse-13.1 64bit windows 64bit developer-build -[volumeAndMuted] -opensuse-13.1 64bit - -[volumeAcrossFiles] -opensuse-13.1 64bit - [initialVolume] -opensuse-13.1 64bit windows 64bit developer-build [playlist] -opensuse-13.1 64bit redhatenterpriselinuxworkstation-6.6 [seekPauseSeek] diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp index 1f1df9aac..e60ea2cd7 100644 --- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp +++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp @@ -71,6 +71,7 @@ private slots: void subsequentPlayback(); void probes(); void playlist(); + void playlistObject(); void surfaceTest_data(); void surfaceTest(); void metadata(); @@ -993,6 +994,7 @@ void tst_QMediaPlayerBackend::playlist() QSignalSpy mediaSpy(&player, SIGNAL(mediaChanged(QMediaContent))); QSignalSpy currentMediaSpy(&player, SIGNAL(currentMediaChanged(QMediaContent))); QSignalSpy stateSpy(&player, SIGNAL(stateChanged(QMediaPlayer::State))); + QSignalSpy mediaStatusSpy(&player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus))); QSignalSpy errorSpy(&player, SIGNAL(error(QMediaPlayer::Error))); QFileInfo fileInfo(QFINDTESTDATA("testdata/sample.m3u")); @@ -1001,8 +1003,8 @@ void tst_QMediaPlayerBackend::playlist() player.play(); QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 10000); - if (player.mediaStatus() == QMediaPlayer::InvalidMedia) - QSKIP("Media player does not support M3U playlists"); + if (player.mediaStatus() == QMediaPlayer::InvalidMedia || mediaSpy.count() == 1) + QSKIP("QMediaPlayer does not support loading M3U playlists as QMediaPlaylist"); QCOMPARE(mediaSpy.count(), 2); // sample.m3u -> sample.m3u resolved -> test.wav -> @@ -1015,10 +1017,12 @@ void tst_QMediaPlayerBackend::playlist() QCOMPARE(currentMediaSpy.count(), 11); QCOMPARE(stateSpy.count(), 2); QCOMPARE(errorSpy.count(), 0); + QCOMPARE(mediaStatusSpy.count(), 19); // 6 x (LoadingMedia -> BufferedMedia -> EndOfMedia) + NoMedia mediaSpy.clear(); currentMediaSpy.clear(); stateSpy.clear(); + mediaStatusSpy.clear(); errorSpy.clear(); player.play(); @@ -1027,10 +1031,12 @@ void tst_QMediaPlayerBackend::playlist() QCOMPARE(currentMediaSpy.count(), 8); QCOMPARE(stateSpy.count(), 2); QCOMPARE(errorSpy.count(), 0); + QCOMPARE(mediaStatusSpy.count(), 19); // 6 x (LoadingMedia -> BufferedMedia -> EndOfMedia) + NoMedia mediaSpy.clear(); currentMediaSpy.clear(); stateSpy.clear(); + mediaStatusSpy.clear(); errorSpy.clear(); // <<< Invalid - 1st pass >>> @@ -1045,10 +1051,12 @@ void tst_QMediaPlayerBackend::playlist() QCOMPARE(currentMediaSpy.count(), 4); QCOMPARE(stateSpy.count(), 2); QCOMPARE(errorSpy.count(), 1); + QCOMPARE(mediaStatusSpy.count(), 3); // LoadingMedia -> InvalidMedia -> NoMedia mediaSpy.clear(); currentMediaSpy.clear(); stateSpy.clear(); + mediaStatusSpy.clear(); errorSpy.clear(); // <<< Invalid - 2nd pass >>> @@ -1060,10 +1068,12 @@ void tst_QMediaPlayerBackend::playlist() QCOMPARE(currentMediaSpy.count(), 3); QCOMPARE(stateSpy.count(), 2); QCOMPARE(errorSpy.count(), 1); + QCOMPARE(mediaStatusSpy.count(), 3); // LoadingMedia -> InvalidMedia -> NoMedia mediaSpy.clear(); currentMediaSpy.clear(); stateSpy.clear(); + mediaStatusSpy.clear(); errorSpy.clear(); // <<< Invalid2 - 1st pass >>> @@ -1078,10 +1088,12 @@ void tst_QMediaPlayerBackend::playlist() QCOMPARE(currentMediaSpy.count(), 6); QCOMPARE(stateSpy.count(), 2); QCOMPARE(errorSpy.count(), 1); + QCOMPARE(mediaStatusSpy.count(), 9); // 3 x LoadingMedia + 2 x (BufferedMedia -> EndOfMedia) + InvalidMedia + NoMedia (not in this order) mediaSpy.clear(); currentMediaSpy.clear(); stateSpy.clear(); + mediaStatusSpy.clear(); errorSpy.clear(); // <<< Invalid2 - 2nd pass >>> @@ -1093,10 +1105,12 @@ void tst_QMediaPlayerBackend::playlist() QCOMPARE(currentMediaSpy.count(), 5); QCOMPARE(stateSpy.count(), 2); QCOMPARE(errorSpy.count(), 1); + QCOMPARE(mediaStatusSpy.count(), 9); // 3 x LoadingMedia + 2 x (BufferedMedia -> EndOfMedia) + InvalidMedia + NoMedia (not in this order) mediaSpy.clear(); currentMediaSpy.clear(); stateSpy.clear(); + mediaStatusSpy.clear(); errorSpy.clear(); // <<< Recursive - 1st pass >>> @@ -1115,10 +1129,13 @@ void tst_QMediaPlayerBackend::playlist() QCOMPARE(stateSpy.count(), 2); // there is one invalid media in the master playlist QCOMPARE(errorSpy.count(), 1); + QCOMPARE(mediaStatusSpy.count(), 6); // LoadingMedia -> InvalidMedia -> LoadingMedia -> BufferedMedia + // -> EndOfMedia -> NoMedia mediaSpy.clear(); currentMediaSpy.clear(); stateSpy.clear(); + mediaStatusSpy.clear(); errorSpy.clear(); // <<< Recursive - 2nd pass >>> @@ -1133,6 +1150,141 @@ void tst_QMediaPlayerBackend::playlist() QCOMPARE(stateSpy.count(), 2); // there is one invalid media in the master playlist QCOMPARE(errorSpy.count(), 1); + QCOMPARE(mediaStatusSpy.count(), 6); // LoadingMedia -> InvalidMedia -> LoadingMedia -> BufferedMedia + // -> EndOfMedia -> NoMedia +} + +void tst_QMediaPlayerBackend::playlistObject() +{ + QMediaPlayer player; + + QSignalSpy mediaSpy(&player, SIGNAL(mediaChanged(QMediaContent))); + QSignalSpy currentMediaSpy(&player, SIGNAL(currentMediaChanged(QMediaContent))); + QSignalSpy stateSpy(&player, SIGNAL(stateChanged(QMediaPlayer::State))); + QSignalSpy mediaStatusSpy(&player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus))); + QSignalSpy errorSpy(&player, SIGNAL(error(QMediaPlayer::Error))); + + // --- empty playlist + QMediaPlaylist emptyPlaylist; + player.setPlaylist(&emptyPlaylist); + + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 10000); + + QCOMPARE(mediaSpy.count(), 1); + QCOMPARE(currentMediaSpy.count(), 1); // Empty media + QCOMPARE(stateSpy.count(), 0); + QCOMPARE(errorSpy.count(), 0); + QCOMPARE(mediaStatusSpy.count(), 0); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + mediaStatusSpy.clear(); + errorSpy.clear(); + + // --- Valid playlist + QMediaPlaylist playlist; + playlist.addMedia(QUrl::fromLocalFile(QFileInfo(QFINDTESTDATA("testdata/test.wav")).absoluteFilePath())); + playlist.addMedia(QUrl::fromLocalFile(QFileInfo(QFINDTESTDATA("testdata/_test.wav")).absoluteFilePath())); + player.setPlaylist(&playlist); + + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 10000); + + QCOMPARE(mediaSpy.count(), 1); + QCOMPARE(currentMediaSpy.count(), 3); // test.wav -> _test.wav -> NoMedia + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 0); + QCOMPARE(mediaStatusSpy.count(), 7); // 2 x (LoadingMedia -> BufferedMedia -> EndOfMedia) + NoMedia + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + mediaStatusSpy.clear(); + errorSpy.clear(); + + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 10000); + + QCOMPARE(mediaSpy.count(), 0); + QCOMPARE(currentMediaSpy.count(), 4); // playlist -> test.wav -> _test.wav -> NoMedia + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 0); + QCOMPARE(mediaStatusSpy.count(), 7); // 2 x (LoadingMedia -> BufferedMedia -> EndOfMedia) + NoMedia + + player.setPlaylist(Q_NULLPTR); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + mediaStatusSpy.clear(); + errorSpy.clear(); + + // --- Nested playlist + QMediaPlaylist nestedPlaylist; + nestedPlaylist.addMedia(QUrl::fromLocalFile(QFileInfo(QFINDTESTDATA("testdata/_test.wav")).absoluteFilePath())); + nestedPlaylist.addMedia(QUrl::fromLocalFile(QFileInfo(QFINDTESTDATA("testdata/test.wav")).absoluteFilePath())); + nestedPlaylist.addMedia(&playlist); + player.setPlaylist(&nestedPlaylist); + + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 10000); + + QCOMPARE(mediaSpy.count(), 1); + QCOMPARE(currentMediaSpy.count(), 6); // _test.wav -> test.wav -> nested playlist + // -> test.wav -> _test.wav -> NoMedia + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 0); + QCOMPARE(mediaStatusSpy.count(), 13); // 4 x (LoadingMedia -> BufferedMedia -> EndOfMedia) + NoMedia + + player.setPlaylist(Q_NULLPTR); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + mediaStatusSpy.clear(); + errorSpy.clear(); + + // --- playlist with invalid media + QMediaPlaylist invalidPlaylist; + invalidPlaylist.addMedia(QUrl("invalid")); + invalidPlaylist.addMedia(QUrl::fromLocalFile(QFileInfo(QFINDTESTDATA("testdata/test.wav")).absoluteFilePath())); + + player.setPlaylist(&invalidPlaylist); + + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 10000); + + QCOMPARE(mediaSpy.count(), 1); + QCOMPARE(currentMediaSpy.count(), 3); // invalid -> test.wav -> NoMedia + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 1); + QCOMPARE(mediaStatusSpy.count(), 6); // Loading -> Invalid -> Loading -> Buffered -> EndOfMedia -> NoMedia + + player.setPlaylist(Q_NULLPTR); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + mediaStatusSpy.clear(); + errorSpy.clear(); + + // --- playlist with only invalid media + QMediaPlaylist invalidPlaylist2; + invalidPlaylist2.addMedia(QUrl("invalid")); + invalidPlaylist2.addMedia(QUrl("invalid2")); + + player.setPlaylist(&invalidPlaylist2); + + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 10000); + + QCOMPARE(mediaSpy.count(), 1); + QCOMPARE(currentMediaSpy.count(), 3); // invalid -> invalid2 -> NoMedia + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 2); + QCOMPARE(mediaStatusSpy.count(), 5); // Loading -> Invalid -> Loading -> Invalid -> NoMedia } void tst_QMediaPlayerBackend::surfaceTest_data() diff --git a/tests/auto/integration/qsoundeffect/BLACKLIST b/tests/auto/integration/qsoundeffect/BLACKLIST index 0f872a576..467169fcf 100644 --- a/tests/auto/integration/qsoundeffect/BLACKLIST +++ b/tests/auto/integration/qsoundeffect/BLACKLIST @@ -4,3 +4,6 @@ linux #QTBUG-55735 [testSetSourceWhilePlaying] linux + +[testSetSourceWhileLoading] +linux diff --git a/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp b/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp index 0548d1e1a..d2b43c56d 100644 --- a/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp +++ b/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp @@ -299,7 +299,7 @@ void tst_QMediaObject::notifySignals() QTRY_COMPARE(spy.count(), count); qint64 elapsed = timer.elapsed(); - int expectedElapsed = count * interval * 1.3; // give it some margin of error + int expectedElapsed = count * interval * 1.5; // give it some margin of error QVERIFY2(elapsed < expectedElapsed, QString("elapsed: %1, expected: %2").arg(elapsed).arg(expectedElapsed).toLocal8Bit().constData()); } |