summaryrefslogtreecommitdiffstats
path: root/tests/auto/qmediaplayer/tst_qmediaplayer.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qmediaplayer/tst_qmediaplayer.h')
-rwxr-xr-xtests/auto/qmediaplayer/tst_qmediaplayer.h317
1 files changed, 8 insertions, 309 deletions
diff --git a/tests/auto/qmediaplayer/tst_qmediaplayer.h b/tests/auto/qmediaplayer/tst_qmediaplayer.h
index 096774316..c87c65a7d 100755
--- a/tests/auto/qmediaplayer/tst_qmediaplayer.h
+++ b/tests/auto/qmediaplayer/tst_qmediaplayer.h
@@ -56,6 +56,9 @@
#include <qvideorenderercontrol.h>
#include <qvideowindowcontrol.h>
+#include "mockmediaserviceprovider.h"
+#include "mockmediaplayerservice.h"
+
QT_USE_NAMESPACE
class AutoConnection
@@ -79,313 +82,6 @@ private:
const char *method;
};
-
-class MockPlayerControl : public QMediaPlayerControl
-{
- friend class MockPlayerService;
-
-public:
- MockPlayerControl():QMediaPlayerControl(0) {}
-
- QMediaPlayer::State state() const { return _state; }
- QMediaPlayer::MediaStatus mediaStatus() const { return _mediaStatus; }
-
- qint64 duration() const { return _duration; }
-
- qint64 position() const { return _position; }
-
- void setPosition(qint64 position) { if (position != _position) emit positionChanged(_position = position); }
-
- int volume() const { return _volume; }
- void setVolume(int volume) { emit volumeChanged(_volume = volume); }
-
- bool isMuted() const { return _muted; }
- void setMuted(bool muted) { if (muted != _muted) emit mutedChanged(_muted = muted); }
-
- int bufferStatus() const { return _bufferStatus; }
-
- bool isAudioAvailable() const { return _audioAvailable; }
- bool isVideoAvailable() const { return _videoAvailable; }
-
- bool isSeekable() const { return _isSeekable; }
- QMediaTimeRange availablePlaybackRanges() const { return QMediaTimeRange(_seekRange.first, _seekRange.second); }
- void setSeekRange(qint64 minimum, qint64 maximum) { _seekRange = qMakePair(minimum, maximum); }
-
- qreal playbackRate() const { return _playbackRate; }
- void setPlaybackRate(qreal rate) { if (rate != _playbackRate) emit playbackRateChanged(_playbackRate = rate); }
-
- QMediaContent media() const { return _media; }
- void setMedia(const QMediaContent &content, QIODevice *stream)
- {
- _stream = stream;
- _media = content;
- if (_state != QMediaPlayer::StoppedState) {
- _mediaStatus = _media.isNull() ? QMediaPlayer::NoMedia : QMediaPlayer::LoadingMedia;
- emit stateChanged(_state = QMediaPlayer::StoppedState);
- emit mediaStatusChanged(_mediaStatus);
- }
- emit mediaChanged(_media = content);
- }
- QIODevice *mediaStream() const { return _stream; }
-
- void play() { if (_isValid && !_media.isNull() && _state != QMediaPlayer::PlayingState) emit stateChanged(_state = QMediaPlayer::PlayingState); }
- void pause() { if (_isValid && !_media.isNull() && _state != QMediaPlayer::PausedState) emit stateChanged(_state = QMediaPlayer::PausedState); }
- void stop() { if (_state != QMediaPlayer::StoppedState) emit stateChanged(_state = QMediaPlayer::StoppedState); }
-
- QMediaPlayer::State _state;
- QMediaPlayer::MediaStatus _mediaStatus;
- QMediaPlayer::Error _error;
- qint64 _duration;
- qint64 _position;
- int _volume;
- bool _muted;
- int _bufferStatus;
- bool _audioAvailable;
- bool _videoAvailable;
- bool _isSeekable;
- QPair<qint64, qint64> _seekRange;
- qreal _playbackRate;
- QMediaContent _media;
- QIODevice *_stream;
- bool _isValid;
- QString _errorString;
-};
-
-class MockVideoSurface : public QAbstractVideoSurface
-{
-public:
- QList<QVideoFrame::PixelFormat> supportedPixelFormats(
- const QAbstractVideoBuffer::HandleType) const
- {
- return QList<QVideoFrame::PixelFormat>();
- }
-
- bool present(const QVideoFrame &) { return false; }
-};
-
-class MockVideoRendererControl : public QVideoRendererControl
-{
-public:
- MockVideoRendererControl() : m_surface(0) {}
-
- QAbstractVideoSurface *surface() const { return m_surface; }
- void setSurface(QAbstractVideoSurface *surface) { m_surface = surface; }
-
- QAbstractVideoSurface *m_surface;
-};
-
-class MockVideoWindowControl : public QVideoWindowControl
-{
-public:
- WId winId() const { return 0; }
- void setWinId(WId) {}
- QRect displayRect() const { return QRect(); }
- void setDisplayRect(const QRect &) {}
- bool isFullScreen() const { return false; }
- void setFullScreen(bool) {}
- void repaint() {}
- QSize nativeSize() const { return QSize(); }
- Qt::AspectRatioMode aspectRatioMode() const { return Qt::KeepAspectRatio; }
- void setAspectRatioMode(Qt::AspectRatioMode) {}
- int brightness() const { return 0; }
- void setBrightness(int) {}
- int contrast() const { return 0; }
- void setContrast(int) {}
- int hue() const { return 0; }
- void setHue(int) {}
- int saturation() const { return 0; }
- void setSaturation(int) {}
-};
-
-class MockStreamsControl : public QMediaStreamsControl
-{
-public:
- MockStreamsControl(QObject *parent = 0) : QMediaStreamsControl(parent) {}
-
- int streamCount() { return _streams.count(); }
- void setStreamCount(int count) { _streams.resize(count); }
-
- StreamType streamType(int index) { return _streams.at(index).type; }
- void setStreamType(int index, StreamType type) { _streams[index].type = type; }
-
- QVariant metaData(int index, QtMultimediaKit::MetaData key) {
- return _streams.at(index).metaData.value(key); }
- void setMetaData(int index, QtMultimediaKit::MetaData key, const QVariant &value) {
- _streams[index].metaData.insert(key, value); }
-
- bool isActive(int index) { return _streams.at(index).active; }
- void setActive(int index, bool state) { _streams[index].active = state; }
-
-private:
- struct Stream
- {
- Stream() : type(UnknownStream), active(false) {}
- StreamType type;
- QMap<QtMultimediaKit::MetaData, QVariant> metaData;
- bool active;
- };
-
- QVector<Stream> _streams;
-};
-
-class MockNetworkAccessControl : public QMediaNetworkAccessControl
-{
- friend class MockPlayerService;
-
-public:
- MockNetworkAccessControl() {}
- ~MockNetworkAccessControl() {}
-
- void setConfigurations(const QList<QNetworkConfiguration> &configurations)
- {
- _configurations = configurations;
- _current = QNetworkConfiguration();
- }
-
- QNetworkConfiguration currentConfiguration() const
- {
- return _current;
- }
-
-private:
- void setCurrentConfiguration(QNetworkConfiguration configuration)
- {
- if (_configurations.contains(configuration))
- emit configurationChanged(_current = configuration);
- else
- emit configurationChanged(_current = QNetworkConfiguration());
- }
-
- QList<QNetworkConfiguration> _configurations;
- QNetworkConfiguration _current;
-};
-
-Q_DECLARE_METATYPE(QNetworkConfiguration)
-
-class MockPlayerService : public QMediaService
-{
- Q_OBJECT
-
-public:
- MockPlayerService():QMediaService(0)
- {
- mockControl = new MockPlayerControl;
- mockStreamsControl = new MockStreamsControl;
- mockNetworkControl = new MockNetworkAccessControl;
- rendererControl = new MockVideoRendererControl;
- windowControl = new MockVideoWindowControl;
- rendererRef = 0;
- windowRef = 0;
- }
-
- ~MockPlayerService()
- {
- delete mockControl;
- delete mockStreamsControl;
- delete mockNetworkControl;
- delete rendererControl;
- delete windowControl;
- }
-
- QMediaControl* requestControl(const char *iid)
- {
- if (qstrcmp(iid, QMediaPlayerControl_iid) == 0) {
- return mockControl;
- } else if (qstrcmp(iid, QVideoRendererControl_iid) == 0) {
- if (rendererRef == 0) {
- rendererRef += 1;
- return rendererControl;
- }
- } else if (qstrcmp(iid, QVideoWindowControl_iid) == 0) {
- if (windowRef == 0) {
- windowRef += 1;
- return windowControl;
- }
- }
-
-
- if (qstrcmp(iid, QMediaNetworkAccessControl_iid) == 0)
- return mockNetworkControl;
- return 0;
- }
-
- void releaseControl(QMediaControl *control)
- {
- if (control == rendererControl)
- rendererRef -= 1;
- else if (control == windowControl)
- windowRef -= 1;
- }
-
- void setState(QMediaPlayer::State state) { emit mockControl->stateChanged(mockControl->_state = state); }
- void setState(QMediaPlayer::State state, QMediaPlayer::MediaStatus status) {
- mockControl->_state = state;
- mockControl->_mediaStatus = status;
- emit mockControl->mediaStatusChanged(status);
- emit mockControl->stateChanged(state);
- }
- void setMediaStatus(QMediaPlayer::MediaStatus status) { emit mockControl->mediaStatusChanged(mockControl->_mediaStatus = status); }
- void setIsValid(bool isValid) { mockControl->_isValid = isValid; }
- void setMedia(QMediaContent media) { mockControl->_media = media; }
- void setDuration(qint64 duration) { mockControl->_duration = duration; }
- void setPosition(qint64 position) { mockControl->_position = position; }
- void setSeekable(bool seekable) { mockControl->_isSeekable = seekable; }
- void setVolume(int volume) { mockControl->_volume = volume; }
- void setMuted(bool muted) { mockControl->_muted = muted; }
- void setVideoAvailable(bool videoAvailable) { mockControl->_videoAvailable = videoAvailable; }
- void setBufferStatus(int bufferStatus) { mockControl->_bufferStatus = bufferStatus; }
- void setPlaybackRate(qreal playbackRate) { mockControl->_playbackRate = playbackRate; }
- void setError(QMediaPlayer::Error error) { mockControl->_error = error; emit mockControl->error(mockControl->_error, mockControl->_errorString); }
- void setErrorString(QString errorString) { mockControl->_errorString = errorString; emit mockControl->error(mockControl->_error, mockControl->_errorString); }
-
- void selectCurrentConfiguration(QNetworkConfiguration config) { mockNetworkControl->setCurrentConfiguration(config); }
-
- void reset()
- {
- mockControl->_state = QMediaPlayer::StoppedState;
- mockControl->_mediaStatus = QMediaPlayer::UnknownMediaStatus;
- mockControl->_error = QMediaPlayer::NoError;
- mockControl->_duration = 0;
- mockControl->_position = 0;
- mockControl->_volume = 0;
- mockControl->_muted = false;
- mockControl->_bufferStatus = 0;
- mockControl->_videoAvailable = false;
- mockControl->_isSeekable = false;
- mockControl->_playbackRate = 0.0;
- mockControl->_media = QMediaContent();
- mockControl->_stream = 0;
- mockControl->_isValid = false;
- mockControl->_errorString = QString();
-
- mockNetworkControl->_current = QNetworkConfiguration();
- mockNetworkControl->_configurations = QList<QNetworkConfiguration>();
- }
-
- MockPlayerControl *mockControl;
- MockStreamsControl *mockStreamsControl;
- MockNetworkAccessControl *mockNetworkControl;
- MockVideoRendererControl *rendererControl;
- MockVideoWindowControl *windowControl;
- int rendererRef;
- int windowRef;
-};
-
-class MockProvider : public QMediaServiceProvider
-{
-public:
- MockProvider(MockPlayerService *service):mockService(service), deleteServiceOnRelease(true) {}
- QMediaService *requestService(const QByteArray &, const QMediaServiceProviderHint &)
- {
- return mockService;
- }
-
- void releaseService(QMediaService *service) { if (deleteServiceOnRelease) delete service; }
-
- MockPlayerService *mockService;
- bool deleteServiceOnRelease;
-};
-
class tst_QMediaPlayer: public QObject
{
Q_OBJECT
@@ -425,10 +121,13 @@ private slots:
void testSetVideoOutputDestruction();
void testPositionPropertyWatch();
void debugEnums();
+ void testPlayerFlags();
+ void testDestructor();
+ void testSupportedMimeTypes();
private:
- MockProvider *mockProvider;
- MockPlayerService *mockService;
+ MockMediaServiceProvider *mockProvider;
+ MockMediaPlayerService *mockService;
QMediaPlayer *player;
};