summaryrefslogtreecommitdiffstats
path: root/tests/auto/qmediaplayerbackend
diff options
context:
space:
mode:
authorMichael Goddard <michael.goddard@nokia.com>2011-11-04 13:38:44 +1000
committerQt by Nokia <qt-info@nokia.com>2011-11-04 08:19:17 +0100
commite3a8c165eabe139d71a762089ab396e5b492c70b (patch)
tree16d9960d2d20d65e0a5d1becc181c0a7b095d0aa /tests/auto/qmediaplayerbackend
parent7dfb883df639f8d80cec7bd2c51eb37561bc4522 (diff)
Rearrange the automatic tests.
Split them into unit and integration tests. Integration tests really need to be run on the real platform (not in a VM etc) since they are somewhat unstable or nonfunctional otherwise. A few tests were previously broken by QUrl changes and they were repaired. Removed one test since it was not providing a lot of value. There are still a number of tests that rely on Q_AUTOTEST_EXPORT symbols. Change-Id: Ic402abf0af946baa5945075d975b3f584f9ef280 Reviewed-by: Kalle Lehtonen <kalle.ju.lehtonen@nokia.com>
Diffstat (limited to 'tests/auto/qmediaplayerbackend')
-rw-r--r--tests/auto/qmediaplayerbackend/qmediaplayerbackend.pro12
-rw-r--r--tests/auto/qmediaplayerbackend/testdata/test.wavbin88232 -> 0 bytes
-rw-r--r--tests/auto/qmediaplayerbackend/tst_qmediaplayerbackend.cpp462
3 files changed, 0 insertions, 474 deletions
diff --git a/tests/auto/qmediaplayerbackend/qmediaplayerbackend.pro b/tests/auto/qmediaplayerbackend/qmediaplayerbackend.pro
deleted file mode 100644
index fdd941d69..000000000
--- a/tests/auto/qmediaplayerbackend/qmediaplayerbackend.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-TARGET = tst_qmediaplayerbackend
-
-QT += multimedia-private testlib
-CONFIG += no_private_qt_headers_warning
-
-# This is more of a system test
-# CONFIG += testcase
-
-DEFINES += TESTDATA_DIR=\\\"$$PWD/\\\"
-
-SOURCES += \
- tst_qmediaplayerbackend.cpp
diff --git a/tests/auto/qmediaplayerbackend/testdata/test.wav b/tests/auto/qmediaplayerbackend/testdata/test.wav
deleted file mode 100644
index 4dd022661..000000000
--- a/tests/auto/qmediaplayerbackend/testdata/test.wav
+++ /dev/null
Binary files differ
diff --git a/tests/auto/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
deleted file mode 100644
index 29e70c24d..000000000
--- a/tests/auto/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QDebug>
-#include "qmediaservice.h"
-#include "qmediaplayer.h"
-
-//TESTED_COMPONENT=src/multimedia
-
-#ifndef TESTDATA_DIR
-#define TESTDATA_DIR "./"
-#endif
-
-QT_USE_NAMESPACE
-
-// Eventually these will make it into qtestcase.h
-// but we might need to tweak the timeout values here.
-#ifndef QTRY_COMPARE
-#define QTRY_COMPARE(__expr, __expected) \
- do { \
- const int __step = 50; \
- const int __timeout = 5000; \
- if ((__expr) != (__expected)) { \
- QTest::qWait(0); \
- } \
- for (int __i = 0; __i < __timeout && ((__expr) != (__expected)); __i+=__step) { \
- QTest::qWait(__step); \
- } \
- QCOMPARE(__expr, __expected); \
- } while(0)
-#endif
-
-#ifndef QTRY_VERIFY
-#define QTRY_VERIFY(__expr) \
- do { \
- const int __step = 50; \
- const int __timeout = 5000; \
- if (!(__expr)) { \
- QTest::qWait(0); \
- } \
- for (int __i = 0; __i < __timeout && !(__expr); __i+=__step) { \
- QTest::qWait(__step); \
- } \
- QVERIFY(__expr); \
- } while(0)
-#endif
-
-
-#define QTRY_WAIT(code, __expr) \
- do { \
- const int __step = 50; \
- const int __timeout = 5000; \
- if (!(__expr)) { \
- QTest::qWait(0); \
- } \
- for (int __i = 0; __i < __timeout && !(__expr); __i+=__step) { \
- do { code } while(0); \
- QTest::qWait(__step); \
- } \
- } while(0)
-
-
-/*
- This is the backend conformance test.
-
- Since it relies on platform media framework and sound hardware
- it may be less stable.
-*/
-
-class tst_QMediaPlayerBackend : public QObject
-{
- Q_OBJECT
-public slots:
- void init();
- void cleanup();
- void initTestCase();
-
-private slots:
- void construction();
- void loadMedia();
- void unloadMedia();
- void playPauseStop();
- void processEOS();
- void volumeAndMuted();
- void volumeAcrossFiles_data();
- void volumeAcrossFiles();
-
-private:
- //one second local wav file
- QMediaContent localWavFile;
-};
-
-void tst_QMediaPlayerBackend::init()
-{
-}
-
-void tst_QMediaPlayerBackend::initTestCase()
-{
- QFileInfo wavFile(QLatin1String(TESTDATA_DIR "testdata/test.wav"));
- QVERIFY(wavFile.exists());
-
- localWavFile = QMediaContent(QUrl::fromLocalFile(wavFile.absoluteFilePath()));
-
- qRegisterMetaType<QMediaContent>();
-}
-
-void tst_QMediaPlayerBackend::cleanup()
-{
-}
-
-void tst_QMediaPlayerBackend::construction()
-{
- QMediaPlayer player;
- QVERIFY(player.isAvailable());
-}
-
-void tst_QMediaPlayerBackend::loadMedia()
-{
- QMediaPlayer player;
- QCOMPARE(player.state(), QMediaPlayer::StoppedState);
- QCOMPARE(player.mediaStatus(), QMediaPlayer::NoMedia);
-
- QSignalSpy stateSpy(&player, SIGNAL(stateChanged(QMediaPlayer::State)));
- QSignalSpy statusSpy(&player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)));
- QSignalSpy mediaSpy(&player, SIGNAL(mediaChanged(QMediaContent)));
-
- player.setMedia(localWavFile);
-
- QCOMPARE(player.state(), QMediaPlayer::StoppedState);
-
- QVERIFY(player.mediaStatus() != QMediaPlayer::NoMedia);
- QVERIFY(player.mediaStatus() != QMediaPlayer::InvalidMedia);
- QVERIFY(player.media() == localWavFile);
-
- QCOMPARE(stateSpy.count(), 0);
- QVERIFY(statusSpy.count() > 0);
- QCOMPARE(mediaSpy.count(), 1);
- QCOMPARE(mediaSpy.last()[0].value<QMediaContent>(), localWavFile);
-
- QTRY_COMPARE(player.mediaStatus(), QMediaPlayer::LoadedMedia);
-
- QVERIFY(player.isAudioAvailable());
- QVERIFY(!player.isVideoAvailable());
-}
-
-void tst_QMediaPlayerBackend::unloadMedia()
-{
- QMediaPlayer player;
- player.setNotifyInterval(50);
-
- QSignalSpy stateSpy(&player, SIGNAL(stateChanged(QMediaPlayer::State)));
- QSignalSpy statusSpy(&player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)));
- QSignalSpy mediaSpy(&player, SIGNAL(mediaChanged(QMediaContent)));
- QSignalSpy positionSpy(&player, SIGNAL(positionChanged(qint64)));
- QSignalSpy durationSpy(&player, SIGNAL(positionChanged(qint64)));
-
- player.setMedia(localWavFile);
-
- QTRY_COMPARE(player.mediaStatus(), QMediaPlayer::LoadedMedia);
-
- QVERIFY(player.position() == 0);
- QVERIFY(player.duration() > 0);
-
- player.play();
-
- QTest::qWait(250);
- QVERIFY(player.position() > 0);
- QVERIFY(player.duration() > 0);
-
- stateSpy.clear();
- statusSpy.clear();
- mediaSpy.clear();
- positionSpy.clear();
- durationSpy.clear();
-
- player.setMedia(QMediaContent());
-
- QVERIFY(player.position() <= 0);
- QVERIFY(player.duration() <= 0);
- QCOMPARE(player.state(), QMediaPlayer::StoppedState);
- QCOMPARE(player.mediaStatus(), QMediaPlayer::NoMedia);
- QCOMPARE(player.media(), QMediaContent());
-
- QVERIFY(!stateSpy.isEmpty());
- QVERIFY(!statusSpy.isEmpty());
- QVERIFY(!mediaSpy.isEmpty());
- QVERIFY(!positionSpy.isEmpty());
-}
-
-
-void tst_QMediaPlayerBackend::playPauseStop()
-{
- QMediaPlayer player;
- player.setNotifyInterval(50);
-
- QSignalSpy stateSpy(&player, SIGNAL(stateChanged(QMediaPlayer::State)));
- QSignalSpy statusSpy(&player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)));
- QSignalSpy positionSpy(&player, SIGNAL(positionChanged(qint64)));
-
- player.setMedia(localWavFile);
-
- QCOMPARE(player.position(), qint64(0));
-
- player.play();
-
- QCOMPARE(player.state(), QMediaPlayer::PlayingState);
-
- QTRY_COMPARE(player.mediaStatus(), QMediaPlayer::BufferedMedia);
-
- QCOMPARE(stateSpy.count(), 1);
- QCOMPARE(stateSpy.last()[0].value<QMediaPlayer::State>(), QMediaPlayer::PlayingState);
- QTRY_VERIFY(statusSpy.count() > 0 &&
- statusSpy.last()[0].value<QMediaPlayer::MediaStatus>() == QMediaPlayer::BufferedMedia);
-
- QTest::qWait(500);
- QVERIFY(player.position() > 0);
- QVERIFY(player.duration() > 0);
- QVERIFY(positionSpy.count() > 0);
- QVERIFY(positionSpy.last()[0].value<qint64>() > 0);
-
- stateSpy.clear();
- statusSpy.clear();
-
- player.pause();
-
- QCOMPARE(player.state(), QMediaPlayer::PausedState);
- QCOMPARE(player.mediaStatus(), QMediaPlayer::BufferedMedia);
-
- QCOMPARE(stateSpy.count(), 1);
- QCOMPARE(stateSpy.last()[0].value<QMediaPlayer::State>(), QMediaPlayer::PausedState);
-
- stateSpy.clear();
- statusSpy.clear();
-
- player.stop();
-
- QCOMPARE(player.state(), QMediaPlayer::StoppedState);
- QTRY_COMPARE(player.mediaStatus(), QMediaPlayer::LoadedMedia);
-
- QCOMPARE(stateSpy.count(), 1);
- QCOMPARE(stateSpy.last()[0].value<QMediaPlayer::State>(), QMediaPlayer::StoppedState);
- //it's allowed to emit statusChanged() signal async
- QTRY_COMPARE(statusSpy.count(), 1);
- QCOMPARE(statusSpy.last()[0].value<QMediaPlayer::MediaStatus>(), QMediaPlayer::LoadedMedia);
-
- //ensure the position is reset to 0 at stop and positionChanged(0) is emitted
- QCOMPARE(player.position(), qint64(0));
- QCOMPARE(positionSpy.last()[0].value<qint64>(), qint64(0));
- QVERIFY(player.duration() > 0);
-}
-
-
-void tst_QMediaPlayerBackend::processEOS()
-{
- QMediaPlayer player;
- player.setNotifyInterval(50);
-
- QSignalSpy stateSpy(&player, SIGNAL(stateChanged(QMediaPlayer::State)));
- QSignalSpy statusSpy(&player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)));
- QSignalSpy positionSpy(&player, SIGNAL(positionChanged(qint64)));
-
- player.setMedia(localWavFile);
-
- player.play();
- player.setPosition(900);
-
- //wait up to 5 seconds for EOS
- QTRY_COMPARE(player.mediaStatus(), QMediaPlayer::EndOfMedia);
-
- QVERIFY(statusSpy.count() > 0);
- QCOMPARE(statusSpy.last()[0].value<QMediaPlayer::MediaStatus>(), QMediaPlayer::EndOfMedia);
-
- //at EOS the position stays at the end of file
- QVERIFY(player.position() > 900);
-
- stateSpy.clear();
- statusSpy.clear();
-
- player.play();
-
- //position is reset to start
- QTRY_VERIFY(player.position() < 100);
-
- QCOMPARE(player.state(), QMediaPlayer::PlayingState);
- QCOMPARE(player.mediaStatus(), QMediaPlayer::BufferedMedia);
-
- QCOMPARE(stateSpy.count(), 1);
- QCOMPARE(stateSpy.last()[0].value<QMediaPlayer::State>(), QMediaPlayer::PlayingState);
- QVERIFY(statusSpy.count() > 0);
- QCOMPARE(statusSpy.last()[0].value<QMediaPlayer::MediaStatus>(), QMediaPlayer::BufferedMedia);
-
- player.setPosition(900);
- //wait up to 5 seconds for EOS
- QTRY_COMPARE(player.mediaStatus(), QMediaPlayer::EndOfMedia);
-
- //ensure the positionChanged() signal is emitted
- QVERIFY(positionSpy.count() > 0);
-
- QCOMPARE(player.mediaStatus(), QMediaPlayer::EndOfMedia);
- //position stays at the end of file
- QVERIFY(player.position() > 900);
-
- //after setPosition EndOfMedia status should be reset to Loaded
- stateSpy.clear();
- statusSpy.clear();
- player.setPosition(500);
-
- //this transition can be async, so allow backend to perform it
- QTRY_COMPARE(player.mediaStatus(), QMediaPlayer::LoadedMedia);
-
- QCOMPARE(stateSpy.count(), 0);
- QTRY_VERIFY(statusSpy.count() > 0 &&
- statusSpy.last()[0].value<QMediaPlayer::MediaStatus>() == QMediaPlayer::LoadedMedia);
-}
-
-void tst_QMediaPlayerBackend::volumeAndMuted()
-{
- //volume and muted properties should be independent
- QMediaPlayer player;
- QVERIFY(player.volume() > 0);
- QVERIFY(!player.isMuted());
-
- player.setMedia(localWavFile);
- player.pause();
-
- QVERIFY(player.volume() > 0);
- QVERIFY(!player.isMuted());
-
- QSignalSpy volumeSpy(&player, SIGNAL(volumeChanged(int)));
- QSignalSpy mutedSpy(&player, SIGNAL(mutedChanged(bool)));
-
- //setting volume to 0 should not trigger muted
- player.setVolume(0);
- QTRY_COMPARE(player.volume(), 0);
- QVERIFY(!player.isMuted());
- QCOMPARE(volumeSpy.count(), 1);
- QCOMPARE(volumeSpy.last()[0].toInt(), player.volume());
- QCOMPARE(mutedSpy.count(), 0);
-
- player.setVolume(50);
- QTRY_COMPARE(player.volume(), 50);
- QVERIFY(!player.isMuted());
- QCOMPARE(volumeSpy.count(), 2);
- QCOMPARE(volumeSpy.last()[0].toInt(), player.volume());
- QCOMPARE(mutedSpy.count(), 0);
-
- player.setMuted(true);
- QTRY_VERIFY(player.isMuted());
- QVERIFY(player.volume() > 0);
- QCOMPARE(volumeSpy.count(), 2);
- QCOMPARE(mutedSpy.count(), 1);
- QCOMPARE(mutedSpy.last()[0].toBool(), player.isMuted());
-
- player.setMuted(false);
- QTRY_VERIFY(!player.isMuted());
- QVERIFY(player.volume() > 0);
- QCOMPARE(volumeSpy.count(), 2);
- QCOMPARE(mutedSpy.count(), 2);
- QCOMPARE(mutedSpy.last()[0].toBool(), player.isMuted());
-
-}
-
-void tst_QMediaPlayerBackend::volumeAcrossFiles_data()
-{
- QTest::addColumn<int>("volume");
- QTest::addColumn<bool>("muted");
-
- QTest::newRow("100 unmuted") << 100 << false;
- QTest::newRow("50 unmuted") << 50 << false;
- QTest::newRow("0 unmuted") << 0 << false;
- QTest::newRow("100 muted") << 100 << true;
- QTest::newRow("50 muted") << 50 << true;
- QTest::newRow("0 muted") << 0 << true;
-}
-
-void tst_QMediaPlayerBackend::volumeAcrossFiles()
-{
- QFETCH(int, volume);
- QFETCH(bool, muted);
-
- QMediaPlayer player;
-
- //volume and muted should not be preserved between player instances
- QVERIFY(player.volume() > 0);
- QVERIFY(!player.isMuted());
-
- player.setVolume(volume);
- player.setMuted(muted);
-
- QTRY_COMPARE(player.volume(), volume);
- QTRY_COMPARE(player.isMuted(), muted);
-
- player.setMedia(localWavFile);
- QCOMPARE(player.volume(), volume);
- QCOMPARE(player.isMuted(), muted);
-
- player.pause();
-
- //to ensure the backend doesn't change volume/muted
- //async during file loading.
- QTest::qWait(50);
-
- QCOMPARE(player.volume(), volume);
- QCOMPARE(player.isMuted(), muted);
-
- player.setMedia(QMediaContent());
- QTest::qWait(50);
- QCOMPARE(player.volume(), volume);
- QCOMPARE(player.isMuted(), muted);
-
- player.setMedia(localWavFile);
- player.pause();
-
- QTest::qWait(50);
-
- QCOMPARE(player.volume(), volume);
- QCOMPARE(player.isMuted(), muted);
-}
-
-
-QTEST_MAIN(tst_QMediaPlayerBackend)
-#include "tst_qmediaplayerbackend.moc"
-