diff options
author | Lev Zelenskiy <lev.zelenskiy@nokia.com> | 2012-04-02 15:06:57 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-11 00:44:01 +0200 |
commit | 9b162f98440c00dcc0ee4d3b80970a9dc8dc766c (patch) | |
tree | c5a9e54b6cccd4522a5618c083d2b64e02c971f8 /tests | |
parent | 02124e8d008cbe2a2e0ace7e254a69916670f72e (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.mkv | bin | 0 -> 50694 bytes | |||
-rw-r--r-- | tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mp3 | bin | 0 -> 61472 bytes | |||
-rw-r--r-- | tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp | 114 |
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 Binary files differnew file mode 100644 index 000000000..c6a13fcfd --- /dev/null +++ b/tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mkv diff --git a/tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mp3 b/tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mp3 Binary files differnew file mode 100644 index 000000000..674c83405 --- /dev/null +++ b/tests/auto/integration/qmediaplayerbackend/testdata/nokia-tune.mp3 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()) |