summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLev Zelenskiy <lev.zelenskiy@nokia.com>2012-04-02 15:06:57 +1000
committerQt by Nokia <qt-info@nokia.com>2012-04-11 00:44:01 +0200
commit9b162f98440c00dcc0ee4d3b80970a9dc8dc766c (patch)
treec5a9e54b6cccd4522a5618c083d2b64e02c971f8 /tests
parent02124e8d008cbe2a2e0ace7e254a69916670f72e (diff)
Added integration test for subsequent playback to media player backend.
Change-Id: If060dd78e595b52bbb1c0fb65ede7c84ced873b0 Reviewed-by: Michael Goddard <michael.goddard@nokia.com> Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mkvbin0 -> 50694 bytes
-rw-r--r--tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mp3bin0 -> 61472 bytes
-rw-r--r--tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp114
3 files changed, 96 insertions, 18 deletions
diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mkv b/tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mkv
new file mode 100644
index 000000000..c6a13fcfd
--- /dev/null
+++ b/tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mkv
Binary files differ
diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mp3 b/tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mp3
new file mode 100644
index 000000000..674c83405
--- /dev/null
+++ b/tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mp3
Binary files differ
diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
index 3dcbed335..b133900d3 100644
--- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
+++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
@@ -79,13 +79,18 @@ private slots:
void volumeAcrossFiles();
void initialVolume();
void seekPauseSeek();
+ void subsequentPlayback();
void probes();
void playlist();
private:
+ QMediaContent selectVideoFile(const QStringList& mediaCandidates);
+ QMediaContent selectSoundFile(const QStringList& mediaCandidates);
+
//one second local wav file
QMediaContent localWavFile;
QMediaContent localVideoFile;
+ QMediaContent localCompressedSoundFile;
};
/*
@@ -131,17 +136,8 @@ void tst_QMediaPlayerBackend::init()
{
}
-void tst_QMediaPlayerBackend::initTestCase()
+QMediaContent tst_QMediaPlayerBackend::selectVideoFile(const QStringList& mediaCandidates)
{
- const QString testFileName = QFINDTESTDATA("testdata/test.wav");
- QFileInfo wavFile(testFileName);
-
- QVERIFY(wavFile.exists());
-
- localWavFile = QMediaContent(QUrl::fromLocalFile(wavFile.absoluteFilePath()));
-
- qRegisterMetaType<QMediaContent>();
-
// select supported video format
QMediaPlayer player;
TestVideoSurface *surface = new TestVideoSurface;
@@ -149,13 +145,10 @@ void tst_QMediaPlayerBackend::initTestCase()
QSignalSpy errorSpy(&player, SIGNAL(error(QMediaPlayer::Error)));
- QStringList mediaCandidates;
- mediaCandidates << QFINDTESTDATA("testdata/colors.ogv");
- mediaCandidates << QFINDTESTDATA("testdata/colors.mp4");
-
foreach (QString s, mediaCandidates) {
QFileInfo videoFile(s);
- QVERIFY(videoFile.exists());
+ if (!videoFile.exists())
+ continue;
QMediaContent media = QMediaContent(QUrl::fromLocalFile(videoFile.absoluteFilePath()));
player.setMedia(media);
player.pause();
@@ -165,11 +158,61 @@ void tst_QMediaPlayerBackend::initTestCase()
}
if (!surface->m_frameList.isEmpty() && errorSpy.isEmpty()) {
- localVideoFile = media;
- break;
+ return media;
}
errorSpy.clear();
}
+
+ return QMediaContent();
+}
+
+QMediaContent tst_QMediaPlayerBackend::selectSoundFile(const QStringList& mediaCandidates)
+{
+ QMediaPlayer player;
+
+ QSignalSpy errorSpy(&player, SIGNAL(error(QMediaPlayer::Error)));
+
+ foreach (QString s, mediaCandidates) {
+ QFileInfo soundFile(s);
+ if (!soundFile.exists())
+ continue;
+ QMediaContent media = QMediaContent(QUrl::fromLocalFile(soundFile.absoluteFilePath()));
+ player.setMedia(media);
+ player.play();
+
+ for (int i = 0; i < 2000 && player.mediaStatus() != QMediaPlayer::BufferedMedia && errorSpy.isEmpty(); i+=50) {
+ QTest::qWait(50);
+ }
+
+ if (player.mediaStatus() == QMediaPlayer::BufferedMedia && errorSpy.isEmpty()) {
+ return media;
+ }
+ errorSpy.clear();
+ }
+
+ return QMediaContent();
+}
+
+void tst_QMediaPlayerBackend::initTestCase()
+{
+ const QString testFileName = QFINDTESTDATA("testdata/test.wav");
+ QFileInfo wavFile(testFileName);
+
+ QVERIFY(wavFile.exists());
+
+ localWavFile = QMediaContent(QUrl::fromLocalFile(wavFile.absoluteFilePath()));
+
+ qRegisterMetaType<QMediaContent>();
+
+ QStringList mediaCandidates;
+ mediaCandidates << QFINDTESTDATA("testdata/colors.ogv");
+ mediaCandidates << QFINDTESTDATA("testdata/colors.mp4");
+ localVideoFile = selectVideoFile(mediaCandidates);
+
+ mediaCandidates.clear();
+ mediaCandidates << QFINDTESTDATA("testdata/nokia-tune.mkv");
+ mediaCandidates << QFINDTESTDATA("testdata/nokia-tune.mp3");
+ localCompressedSoundFile = selectSoundFile(mediaCandidates);
}
void tst_QMediaPlayerBackend::cleanup()
@@ -350,7 +393,7 @@ void tst_QMediaPlayerBackend::processEOS()
QTRY_VERIFY(player.position() < 100);
QCOMPARE(player.state(), QMediaPlayer::PlayingState);
- QCOMPARE(player.mediaStatus(), QMediaPlayer::BufferedMedia);
+ QTRY_COMPARE(player.mediaStatus(), QMediaPlayer::BufferedMedia);
QCOMPARE(stateSpy.count(), 1);
QCOMPARE(stateSpy.last()[0].value<QMediaPlayer::State>(), QMediaPlayer::PlayingState);
@@ -623,6 +666,41 @@ void tst_QMediaPlayerBackend::seekPauseSeek()
}
}
+void tst_QMediaPlayerBackend::subsequentPlayback()
+{
+ if (localCompressedSoundFile.isNull())
+ QSKIP("Sound format is not supported");
+
+ QMediaPlayer player;
+ player.setMedia(localCompressedSoundFile);
+ player.play();
+
+ QCOMPARE(player.error(), QMediaPlayer::NoError);
+ QTRY_COMPARE(player.state(), QMediaPlayer::PlayingState);
+ QTRY_COMPARE_WITH_TIMEOUT(player.mediaStatus(), QMediaPlayer::EndOfMedia, 15000);
+ QCOMPARE(player.state(), QMediaPlayer::StoppedState);
+ // Could differ by up to 1 compressed frame length
+ QVERIFY(qAbs(player.position() - player.duration()) < 100);
+ QVERIFY(player.position() > 0);
+
+ player.play();
+ QTRY_COMPARE(player.state(), QMediaPlayer::PlayingState);
+ QTRY_VERIFY_WITH_TIMEOUT(player.position() > 2000 && player.position() < 5000, 10000);
+ player.pause();
+ QCOMPARE(player.state(), QMediaPlayer::PausedState);
+ // make sure position does not "jump" closer to the end of the file
+ QVERIFY(player.position() > 2000 && player.position() < 5000);
+ // try to seek back to zero
+ player.setPosition(0);
+ QTRY_COMPARE(player.position(), qint64(0));
+ player.play();
+ QCOMPARE(player.state(), QMediaPlayer::PlayingState);
+ QTRY_VERIFY_WITH_TIMEOUT(player.position() > 2000 && player.position() < 5000, 10000);
+ player.pause();
+ QCOMPARE(player.state(), QMediaPlayer::PausedState);
+ QVERIFY(player.position() > 2000 && player.position() < 5000);
+}
+
void tst_QMediaPlayerBackend::probes()
{
if (localVideoFile.isNull())