Added integration test for new playlist functionality.

Change-Id: I9cc4a3d140003de737b81b4dcfa1e4a94d4a2ba4
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
This commit is contained in:
Lev Zelenskiy
2012-03-09 11:54:42 +10:00
committed by Qt by Nokia
parent b1eba5e9b2
commit c00033dfe2
9 changed files with 167 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1 @@
invalid

View File

@@ -0,0 +1,3 @@
test.wav
invalid
test.wav

View File

@@ -0,0 +1,4 @@
#EXTM3U
test.wav
nested2.m3u
_test.wav

View File

@@ -0,0 +1,3 @@
#EXTM3U
test.wav
_test.wav

View File

@@ -0,0 +1,2 @@
#EXTM3U
recursive.m3u

View File

@@ -0,0 +1,3 @@
recursive.m3u
invalid
test.wav

View File

@@ -0,0 +1,4 @@
#EXTM3U
test.wav
nested1.m3u
_test.wav

View File

@@ -46,6 +46,7 @@
#include "qmediaplayer.h" #include "qmediaplayer.h"
#include "qaudioprobe.h" #include "qaudioprobe.h"
#include "qvideoprobe.h" #include "qvideoprobe.h"
#include <qmediaplaylist.h>
//TESTED_COMPONENT=src/multimedia //TESTED_COMPONENT=src/multimedia
@@ -77,6 +78,7 @@ private slots:
void volumeAcrossFiles(); void volumeAcrossFiles();
void seekPauseSeek(); void seekPauseSeek();
void probes(); void probes();
void playlist();
private: private:
//one second local wav file //one second local wav file
@@ -553,6 +555,151 @@ void tst_QMediaPlayerBackend::probes()
delete audioProbe; 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( QList<QVideoFrame::PixelFormat> TestVideoSurface::supportedPixelFormats(
QAbstractVideoBuffer::HandleType handleType) const QAbstractVideoBuffer::HandleType handleType) const
{ {