summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLev Zelenskiy <lev.zelenskiy@nokia.com>2012-03-09 11:54:42 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-21 05:44:18 +0100
commitc00033dfe21c767e5045dc1ef83130033e767713 (patch)
tree13a1a611cbba0d40888316b24c3539f34c10d7a6 /tests
parentb1eba5e9b2fa017228826c5962f437a50ce59e21 (diff)
Added integration test for new playlist functionality.
Change-Id: I9cc4a3d140003de737b81b4dcfa1e4a94d4a2ba4 Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/integration/qmediaplayerbackend/testdata/_test.wavbin0 -> 88232 bytes
-rw-r--r--tests/auto/integration/qmediaplayerbackend/testdata/invalid_media.m3u1
-rw-r--r--tests/auto/integration/qmediaplayerbackend/testdata/invalid_media2.m3u3
-rw-r--r--tests/auto/integration/qmediaplayerbackend/testdata/nested1.m3u4
-rw-r--r--tests/auto/integration/qmediaplayerbackend/testdata/nested2.m3u3
-rw-r--r--tests/auto/integration/qmediaplayerbackend/testdata/recursive.m3u2
-rw-r--r--tests/auto/integration/qmediaplayerbackend/testdata/recursive_master.m3u3
-rw-r--r--tests/auto/integration/qmediaplayerbackend/testdata/sample.m3u4
-rw-r--r--tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp147
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
new file mode 100644
index 000000000..4dd022661
--- /dev/null
+++ b/tests/auto/integration/qmediaplayerbackend/testdata/_test.wav
Binary files differ
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
{