diff options
author | Lev Zelenskiy <lev.zelenskiy@nokia.com> | 2012-03-09 11:54:42 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-21 05:44:18 +0100 |
commit | c00033dfe21c767e5045dc1ef83130033e767713 (patch) | |
tree | 13a1a611cbba0d40888316b24c3539f34c10d7a6 /tests/auto/integration/qmediaplayerbackend | |
parent | b1eba5e9b2fa017228826c5962f437a50ce59e21 (diff) |
Added integration test for new playlist functionality.
Change-Id: I9cc4a3d140003de737b81b4dcfa1e4a94d4a2ba4
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Diffstat (limited to 'tests/auto/integration/qmediaplayerbackend')
9 files changed, 167 insertions, 0 deletions
diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/_test.wav b/tests/auto/integration/qmediaplayerbackend/testdata/_test.wav Binary files differnew file mode 100644 index 000000000..4dd022661 --- /dev/null +++ b/tests/auto/integration/qmediaplayerbackend/testdata/_test.wav diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/invalid_media.m3u b/tests/auto/integration/qmediaplayerbackend/testdata/invalid_media.m3u new file mode 100644 index 000000000..9977a2836 --- /dev/null +++ b/tests/auto/integration/qmediaplayerbackend/testdata/invalid_media.m3u @@ -0,0 +1 @@ +invalid diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/invalid_media2.m3u b/tests/auto/integration/qmediaplayerbackend/testdata/invalid_media2.m3u new file mode 100644 index 000000000..da4affd58 --- /dev/null +++ b/tests/auto/integration/qmediaplayerbackend/testdata/invalid_media2.m3u @@ -0,0 +1,3 @@ +test.wav +invalid +test.wav diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/nested1.m3u b/tests/auto/integration/qmediaplayerbackend/testdata/nested1.m3u new file mode 100644 index 000000000..31c8e56e2 --- /dev/null +++ b/tests/auto/integration/qmediaplayerbackend/testdata/nested1.m3u @@ -0,0 +1,4 @@ +#EXTM3U +test.wav +nested2.m3u +_test.wav diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/nested2.m3u b/tests/auto/integration/qmediaplayerbackend/testdata/nested2.m3u new file mode 100644 index 000000000..ac0c2a551 --- /dev/null +++ b/tests/auto/integration/qmediaplayerbackend/testdata/nested2.m3u @@ -0,0 +1,3 @@ +#EXTM3U +test.wav +_test.wav diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/recursive.m3u b/tests/auto/integration/qmediaplayerbackend/testdata/recursive.m3u new file mode 100644 index 000000000..e71422236 --- /dev/null +++ b/tests/auto/integration/qmediaplayerbackend/testdata/recursive.m3u @@ -0,0 +1,2 @@ +#EXTM3U +recursive.m3u diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/recursive_master.m3u b/tests/auto/integration/qmediaplayerbackend/testdata/recursive_master.m3u new file mode 100644 index 000000000..8ff45db98 --- /dev/null +++ b/tests/auto/integration/qmediaplayerbackend/testdata/recursive_master.m3u @@ -0,0 +1,3 @@ +recursive.m3u +invalid +test.wav diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/sample.m3u b/tests/auto/integration/qmediaplayerbackend/testdata/sample.m3u new file mode 100644 index 000000000..f72bffa9d --- /dev/null +++ b/tests/auto/integration/qmediaplayerbackend/testdata/sample.m3u @@ -0,0 +1,4 @@ +#EXTM3U +test.wav +nested1.m3u +_test.wav diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp index c527c1af2..7828555fc 100644 --- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp +++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp @@ -46,6 +46,7 @@ #include "qmediaplayer.h" #include "qaudioprobe.h" #include "qvideoprobe.h" +#include <qmediaplaylist.h> //TESTED_COMPONENT=src/multimedia @@ -77,6 +78,7 @@ private slots: void volumeAcrossFiles(); void seekPauseSeek(); void probes(); + void playlist(); private: //one second local wav file @@ -553,6 +555,151 @@ void tst_QMediaPlayerBackend::probes() delete audioProbe; } +void tst_QMediaPlayerBackend::playlist() +{ + QMediaPlayer player; + + QSignalSpy mediaSpy(&player, SIGNAL(mediaChanged(const QMediaContent&))); + QSignalSpy currentMediaSpy(&player, SIGNAL(currentMediaChanged(const QMediaContent&))); + QSignalSpy stateSpy(&player, SIGNAL(stateChanged(QMediaPlayer::State))); + QSignalSpy errorSpy(&player, SIGNAL(error(QMediaPlayer::Error))); + + QFileInfo fileInfo(QFINDTESTDATA("testdata/sample.m3u")); + player.setMedia(QUrl::fromLocalFile(fileInfo.absoluteFilePath())); + + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 10000); + QCOMPARE(mediaSpy.count(), 2); + // sample.m3u -> sample.m3u resolved -> test.wav -> + // nested1.m3u -> nested1.m3u resolved -> test.wav -> + // nested2.m3u -> nested2.m3u resolved -> + // test.wav -> _test.wav + // currentMediaChanged signals not emmitted for + // nested1.m3u\_test.wav and nested2.m3u\_test.wav + // because current media stays the same + QCOMPARE(currentMediaSpy.count(), 11); + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 0); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + errorSpy.clear(); + + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 10000); + QCOMPARE(mediaSpy.count(), 0); + QCOMPARE(currentMediaSpy.count(), 8); + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 0); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + errorSpy.clear(); + + // <<< Invalid - 1st pass >>> + fileInfo.setFile(QFINDTESTDATA("testdata/invalid_media.m3u")); + player.setMedia(QUrl::fromLocalFile(fileInfo.absoluteFilePath())); + + player.play(); + QTRY_COMPARE(player.state(), QMediaPlayer::StoppedState); + // playlist -> resolved playlist + QCOMPARE(mediaSpy.count(), 2); + // playlist -> resolved playlist -> invalid -> "" + QCOMPARE(currentMediaSpy.count(), 4); + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 1); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + errorSpy.clear(); + + // <<< Invalid - 2nd pass >>> + player.play(); + QTRY_COMPARE(player.state(), QMediaPlayer::StoppedState); + // media is not changed + QCOMPARE(mediaSpy.count(), 0); + // resolved playlist -> invalid -> "" + QCOMPARE(currentMediaSpy.count(), 3); + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 1); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + errorSpy.clear(); + + // <<< Invalid2 - 1st pass >>> + fileInfo.setFile((QFINDTESTDATA("testdata/invalid_media2.m3u"))); + player.setMedia(QUrl::fromLocalFile(fileInfo.absoluteFilePath())); + + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 20000); + // playlist -> resolved playlist + QCOMPARE(mediaSpy.count(), 2); + // playlist -> resolved playlist -> test.wav -> invalid -> test.wav -> "" + QCOMPARE(currentMediaSpy.count(), 6); + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 1); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + errorSpy.clear(); + + // <<< Invalid2 - 2nd pass >>> + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 20000); + // playlist -> resolved playlist + QCOMPARE(mediaSpy.count(), 0); + // playlist -> test.wav -> invalid -> test.wav -> "" + QCOMPARE(currentMediaSpy.count(), 5); + QCOMPARE(stateSpy.count(), 2); + QCOMPARE(errorSpy.count(), 1); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + errorSpy.clear(); + + // <<< Recursive - 1st pass >>> + fileInfo.setFile((QFINDTESTDATA("testdata/recursive_master.m3u"))); + player.setMedia(QUrl::fromLocalFile(fileInfo.absoluteFilePath())); + + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 20000); + // master playlist -> resolved master playlist + QCOMPARE(mediaSpy.count(), 2); + // master playlist -> resolved master playlist -> + // recursive playlist -> resolved recursive playlist -> + // recursive playlist (this URL is already in the chain of playlists, so the playlist is not resolved) -> + // invalid -> test.wav -> "" + QCOMPARE(currentMediaSpy.count(), 8); + QCOMPARE(stateSpy.count(), 2); + // there is one invalid media in the master playlist + QCOMPARE(errorSpy.count(), 1); + + mediaSpy.clear(); + currentMediaSpy.clear(); + stateSpy.clear(); + errorSpy.clear(); + + // <<< Recursive - 2nd pass >>> + player.play(); + QTRY_COMPARE_WITH_TIMEOUT(player.state(), QMediaPlayer::StoppedState, 20000); + QCOMPARE(mediaSpy.count(), 0); + // resolved master playlist -> + // resolved recursive playlist -> + // recursive playlist (this URL is already in the chain of playlists, so the playlist is not resolved) -> + // invalid -> test.wav -> "" + QCOMPARE(currentMediaSpy.count(), 6); + QCOMPARE(stateSpy.count(), 2); + // there is one invalid media in the master playlist + QCOMPARE(errorSpy.count(), 1); +} + QList<QVideoFrame::PixelFormat> TestVideoSurface::supportedPixelFormats( QAbstractVideoBuffer::HandleType handleType) const { |