API unit tests from Maemo API test team.
A large number of tweaks and changes to original tests, and refactor a lot of the mock backends to reduce duplication. Changed viewfinder test case to use mock service and provider so that it matches the image capture test case. Reviewed-by: Jonas Rabbe (cherry picked from commit e40bef5508a4165cec4a46b97115aed461027fa5) Also licence header fix: (cherry picked from commit e9ee9e8c48b45b97d62ee4a82e400fa9d8ea8107) Change-Id: Ic59891d75563bb2e008a336eea859e8c44d8d831 Reviewed-on: http://codereview.qt.nokia.com/2078 Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
1e4dda9710
commit
a6128410da
@@ -3,6 +3,8 @@ load(qttest_p4)
|
||||
# temporarily blacklist test because is fails miserably
|
||||
CONFIG += insignificant_test
|
||||
|
||||
include (../qmultimedia_common/mockplaylist.pri)
|
||||
|
||||
QT += multimediakit-private
|
||||
|
||||
# TARGET = tst_qmediaplaylist
|
||||
@@ -13,7 +15,6 @@ DEFINES += TESTDATA_DIR=\\\"$$PWD/\\\"
|
||||
HEADERS += \
|
||||
$$QT.multimediakit.sources/../plugins/m3u/qm3uhandler.h
|
||||
|
||||
message($$HEADERS)
|
||||
SOURCES += \
|
||||
tst_qmediaplaylist.cpp \
|
||||
$$QT.multimediakit.sources/../plugins/m3u/qm3uhandler.cpp
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "qmediaservice.h"
|
||||
#include "qmediaplaylist.h"
|
||||
#include "qmediaplaylistcontrol.h"
|
||||
#include "qmediaplaylistsourcecontrol.h"
|
||||
#include "qmediaplaylistnavigator.h"
|
||||
#include <private/qmediapluginloader_p.h>
|
||||
|
||||
@@ -51,91 +52,16 @@
|
||||
|
||||
//TESTED_COMPONENT=src/multimedia
|
||||
|
||||
#include "mockplaylistservice.h"
|
||||
#include "mockmediaplaylistcontrol.h"
|
||||
#include "mockmediaplaylistsourcecontrol.h"
|
||||
#include "mockreadonlyplaylistprovider.h"
|
||||
|
||||
#ifndef TESTDATA_DIR
|
||||
#define TESTDATA_DIR "./"
|
||||
#endif
|
||||
|
||||
QT_USE_NAMESPACE
|
||||
class MockReadOnlyPlaylistProvider : public QMediaPlaylistProvider
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MockReadOnlyPlaylistProvider(QObject *parent)
|
||||
:QMediaPlaylistProvider(parent)
|
||||
{
|
||||
m_items.append(QMediaContent(QUrl(QLatin1String("file:///1"))));
|
||||
m_items.append(QMediaContent(QUrl(QLatin1String("file:///2"))));
|
||||
m_items.append(QMediaContent(QUrl(QLatin1String("file:///3"))));
|
||||
}
|
||||
|
||||
int mediaCount() const { return m_items.size(); }
|
||||
QMediaContent media(int index) const
|
||||
{
|
||||
return index >=0 && index < mediaCount() ? m_items.at(index) : QMediaContent();
|
||||
}
|
||||
|
||||
private:
|
||||
QList<QMediaContent> m_items;
|
||||
};
|
||||
|
||||
class MockPlaylistControl : public QMediaPlaylistControl
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MockPlaylistControl(QObject *parent) : QMediaPlaylistControl(parent)
|
||||
{
|
||||
m_navigator = new QMediaPlaylistNavigator(new MockReadOnlyPlaylistProvider(this), this);
|
||||
}
|
||||
|
||||
~MockPlaylistControl()
|
||||
{
|
||||
}
|
||||
|
||||
QMediaPlaylistProvider* playlistProvider() const { return m_navigator->playlist(); }
|
||||
bool setPlaylistProvider(QMediaPlaylistProvider *playlist) { m_navigator->setPlaylist(playlist); return true; }
|
||||
|
||||
int currentIndex() const { return m_navigator->currentIndex(); }
|
||||
void setCurrentIndex(int position) { m_navigator->jump(position); }
|
||||
int nextIndex(int steps) const { return m_navigator->nextIndex(steps); }
|
||||
int previousIndex(int steps) const { return m_navigator->previousIndex(steps); }
|
||||
|
||||
void next() { m_navigator->next(); }
|
||||
void previous() { m_navigator->previous(); }
|
||||
|
||||
QMediaPlaylist::PlaybackMode playbackMode() const { return m_navigator->playbackMode(); }
|
||||
void setPlaybackMode(QMediaPlaylist::PlaybackMode mode) { m_navigator->setPlaybackMode(mode); }
|
||||
|
||||
private:
|
||||
QMediaPlaylistNavigator *m_navigator;
|
||||
};
|
||||
|
||||
class MockPlaylistService : public QMediaService
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MockPlaylistService():QMediaService(0)
|
||||
{
|
||||
mockControl = new MockPlaylistControl(this);
|
||||
}
|
||||
|
||||
~MockPlaylistService()
|
||||
{
|
||||
}
|
||||
|
||||
QMediaControl* requestControl(const char *iid)
|
||||
{
|
||||
if (qstrcmp(iid, QMediaPlaylistControl_iid) == 0)
|
||||
return mockControl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void releaseControl(QMediaControl *)
|
||||
{
|
||||
}
|
||||
|
||||
MockPlaylistControl *mockControl;
|
||||
};
|
||||
|
||||
class MockReadOnlyPlaylistObject : public QMediaObject
|
||||
{
|
||||
@@ -147,7 +73,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class tst_QMediaPlaylist : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -171,6 +96,19 @@ private slots:
|
||||
void readOnlyPlaylist();
|
||||
void setMediaObject();
|
||||
|
||||
void testCurrentIndexChanged_signal();
|
||||
void testCurrentMediaChanged_signal();
|
||||
void testLoaded_signal();
|
||||
void testMediaChanged_signal();
|
||||
void testPlaybackModeChanged_signal();
|
||||
void testEnums();
|
||||
|
||||
void mediaPlayListProvider();
|
||||
// TC for Abstract control classes
|
||||
void mediaPlayListControl();
|
||||
void mediaPlayListSourceControl();
|
||||
|
||||
|
||||
private:
|
||||
QMediaContent content1;
|
||||
QMediaContent content2;
|
||||
@@ -183,6 +121,7 @@ void tst_QMediaPlaylist::init()
|
||||
|
||||
void tst_QMediaPlaylist::initTestCase()
|
||||
{
|
||||
qRegisterMetaType<QMediaContent>();
|
||||
content1 = QMediaContent(QUrl(QLatin1String("file:///1")));
|
||||
content2 = QMediaContent(QUrl(QLatin1String("file:///2")));
|
||||
content3 = QMediaContent(QUrl(QLatin1String("file:///3")));
|
||||
@@ -420,7 +359,7 @@ void tst_QMediaPlaylist::saveAndLoad()
|
||||
|
||||
bool res = playlist.save(&buffer, "unsupported_format");
|
||||
QVERIFY(!res);
|
||||
QVERIFY(playlist.error() != QMediaPlaylist::NoError);
|
||||
QVERIFY(playlist.error() == QMediaPlaylist::FormatNotSupportedError);
|
||||
QVERIFY(!playlist.errorString().isEmpty());
|
||||
|
||||
QSignalSpy errorSignal(&playlist, SIGNAL(loadFailed()));
|
||||
@@ -437,7 +376,7 @@ void tst_QMediaPlaylist::saveAndLoad()
|
||||
errorSignal.clear();
|
||||
playlist.load(QUrl(QLatin1String("tmp.unsupported_format")), "unsupported_format");
|
||||
QCOMPARE(errorSignal.size(), 1);
|
||||
QVERIFY(playlist.error() != QMediaPlaylist::NoError);
|
||||
QVERIFY(playlist.error() == QMediaPlaylist::FormatNotSupportedError);
|
||||
QVERIFY(!playlist.errorString().isEmpty());
|
||||
|
||||
res = playlist.save(&buffer, "m3u");
|
||||
@@ -509,6 +448,7 @@ void tst_QMediaPlaylist::playbackMode_data()
|
||||
QTest::newRow("ItemOnce, 1") << QMediaPlaylist::CurrentItemOnce << -1 << 1 << -1;
|
||||
QTest::newRow("ItemInLoop, 1") << QMediaPlaylist::CurrentItemInLoop << 1 << 1 << 1;
|
||||
|
||||
// Bit difficult to test random this way
|
||||
}
|
||||
|
||||
void tst_QMediaPlaylist::playbackMode()
|
||||
@@ -653,6 +593,191 @@ void tst_QMediaPlaylist::setMediaObject()
|
||||
QVERIFY(playlist.isReadOnly());
|
||||
}
|
||||
|
||||
void tst_QMediaPlaylist::testCurrentIndexChanged_signal()
|
||||
{
|
||||
//create an instance of QMediaPlaylist class.
|
||||
QMediaPlaylist playlist;
|
||||
playlist.addMedia(content1); //set the media to playlist
|
||||
playlist.addMedia(content2); //set the media to playlist
|
||||
|
||||
QSignalSpy spy(&playlist, SIGNAL(currentIndexChanged(int)));
|
||||
QVERIFY(spy.size()== 0);
|
||||
QCOMPARE(playlist.currentIndex(), -1);
|
||||
|
||||
//set the current index for playlist.
|
||||
playlist.setCurrentIndex(0);
|
||||
QVERIFY(spy.size()== 1); //verify the signal emission.
|
||||
QCOMPARE(playlist.currentIndex(), 0); //verify the current index of playlist
|
||||
|
||||
//set the current index for playlist.
|
||||
playlist.setCurrentIndex(1);
|
||||
QVERIFY(spy.size()== 2); //verify the signal emission.
|
||||
QCOMPARE(playlist.currentIndex(), 1); //verify the current index of playlist
|
||||
}
|
||||
|
||||
void tst_QMediaPlaylist::testCurrentMediaChanged_signal()
|
||||
{
|
||||
//create an instance of QMediaPlaylist class.
|
||||
QMediaPlaylist playlist;
|
||||
playlist.addMedia(content1); //set the media to playlist
|
||||
playlist.addMedia(content2); //set the media to playlist
|
||||
|
||||
QSignalSpy spy(&playlist, SIGNAL(currentMediaChanged(QMediaContent)));
|
||||
QVERIFY(spy.size()== 0);
|
||||
QCOMPARE(playlist.currentIndex(), -1);
|
||||
QCOMPARE(playlist.currentMedia(), QMediaContent());
|
||||
|
||||
//set the current index for playlist.
|
||||
playlist.setCurrentIndex(0);
|
||||
QVERIFY(spy.size()== 1); //verify the signal emission.
|
||||
QCOMPARE(playlist.currentIndex(), 0); //verify the current index of playlist
|
||||
QCOMPARE(playlist.currentMedia(), content1); //verify the current media of playlist
|
||||
|
||||
//set the current index for playlist.
|
||||
playlist.setCurrentIndex(1);
|
||||
QVERIFY(spy.size()== 2); //verify the signal emission.
|
||||
QCOMPARE(playlist.currentIndex(), 1); //verify the current index of playlist
|
||||
QCOMPARE(playlist.currentMedia(), content2); //verify the current media of playlist
|
||||
}
|
||||
|
||||
void tst_QMediaPlaylist::testLoaded_signal()
|
||||
{
|
||||
//create an instance of QMediaPlaylist class.
|
||||
QMediaPlaylist playlist;
|
||||
playlist.addMedia(content1); //set the media to playlist
|
||||
playlist.addMedia(content2); //set the media to playlist
|
||||
playlist.addMedia(content3); //set the media to playlist
|
||||
|
||||
QSignalSpy spy(&playlist, SIGNAL(loaded()));
|
||||
QVERIFY(spy.size()== 0);
|
||||
|
||||
QBuffer buffer;
|
||||
buffer.open(QBuffer::ReadWrite);
|
||||
|
||||
//load the playlist
|
||||
playlist.load(&buffer,"m3u");
|
||||
QVERIFY(spy.size()== 1); //verify the signal emission.
|
||||
}
|
||||
|
||||
void tst_QMediaPlaylist::testMediaChanged_signal()
|
||||
{
|
||||
//create an instance of QMediaPlaylist class.
|
||||
QMediaPlaylist playlist;
|
||||
|
||||
QSignalSpy spy(&playlist, SIGNAL(mediaChanged(int,int)));
|
||||
|
||||
// Add media to playlist
|
||||
playlist.addMedia(content1); //set the media to playlist
|
||||
playlist.addMedia(content2); //set the media to playlist
|
||||
playlist.addMedia(content3); //set the media to playlist
|
||||
|
||||
// Adds/inserts do not cause change signals
|
||||
QVERIFY(spy.size() == 0);
|
||||
|
||||
// Now change the list
|
||||
playlist.shuffle();
|
||||
|
||||
QVERIFY(spy.size() == 1);
|
||||
spy.clear();
|
||||
|
||||
//create media.
|
||||
QMediaContent content4(QUrl(QLatin1String("file:///4")));
|
||||
QMediaContent content5(QUrl(QLatin1String("file:///5")));
|
||||
|
||||
//insert media to playlist
|
||||
playlist.insertMedia(1, content4);
|
||||
playlist.insertMedia(2, content5);
|
||||
// Adds/inserts do not cause change signals
|
||||
QVERIFY(spy.size() == 0);
|
||||
|
||||
// And again
|
||||
playlist.shuffle();
|
||||
|
||||
QVERIFY(spy.size() == 1);
|
||||
}
|
||||
|
||||
void tst_QMediaPlaylist::testPlaybackModeChanged_signal()
|
||||
{
|
||||
//create an instance of QMediaPlaylist class.
|
||||
QMediaPlaylist playlist;
|
||||
playlist.addMedia(content1); //set the media to playlist
|
||||
playlist.addMedia(content2); //set the media to playlist
|
||||
playlist.addMedia(content3); //set the media to playlist
|
||||
|
||||
QSignalSpy spy(&playlist, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)));
|
||||
QVERIFY(playlist.playbackMode()== QMediaPlaylist::Sequential);
|
||||
QVERIFY(spy.size() == 0);
|
||||
|
||||
// Set playback mode to the playlist
|
||||
playlist.setPlaybackMode(QMediaPlaylist::CurrentItemOnce);
|
||||
QVERIFY(playlist.playbackMode()== QMediaPlaylist::CurrentItemOnce);
|
||||
QVERIFY(spy.size() == 1);
|
||||
|
||||
// Set playback mode to the playlist
|
||||
playlist.setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
|
||||
QVERIFY(playlist.playbackMode()== QMediaPlaylist::CurrentItemInLoop);
|
||||
QVERIFY(spy.size() == 2);
|
||||
|
||||
// Set playback mode to the playlist
|
||||
playlist.setPlaybackMode(QMediaPlaylist::Sequential);
|
||||
QVERIFY(playlist.playbackMode()== QMediaPlaylist::Sequential);
|
||||
QVERIFY(spy.size() == 3);
|
||||
|
||||
// Set playback mode to the playlist
|
||||
playlist.setPlaybackMode(QMediaPlaylist::Loop);
|
||||
QVERIFY(playlist.playbackMode()== QMediaPlaylist::Loop);
|
||||
QVERIFY(spy.size() == 4);
|
||||
|
||||
// Set playback mode to the playlist
|
||||
playlist.setPlaybackMode(QMediaPlaylist::Random);
|
||||
QVERIFY(playlist.playbackMode()== QMediaPlaylist::Random);
|
||||
QVERIFY(spy.size() == 5);
|
||||
}
|
||||
|
||||
void tst_QMediaPlaylist::testEnums()
|
||||
{
|
||||
//create an instance of QMediaPlaylist class.
|
||||
QMediaPlaylist playlist;
|
||||
playlist.addMedia(content1); //set the media to playlist
|
||||
playlist.addMedia(content2); //set the media to playlist
|
||||
playlist.addMedia(content3); //set the media to playlist
|
||||
QCOMPARE(playlist.error(), QMediaPlaylist::NoError);
|
||||
|
||||
QBuffer buffer;
|
||||
buffer.open(QBuffer::ReadWrite);
|
||||
|
||||
// checking for QMediaPlaylist::FormatNotSupportedError enum
|
||||
QVERIFY(!playlist.save(&buffer, "unsupported_format"));
|
||||
QVERIFY(playlist.error() == QMediaPlaylist::FormatNotSupportedError);
|
||||
|
||||
playlist.load(&buffer,"unsupported_format");
|
||||
QVERIFY(playlist.error() == QMediaPlaylist::FormatNotSupportedError);
|
||||
}
|
||||
|
||||
// MaemoAPI-1849:test QMediaPlayListControl constructor
|
||||
void tst_QMediaPlaylist::mediaPlayListControl()
|
||||
{
|
||||
// To check changes in abstract classe's pure virtual functions
|
||||
QObject parent;
|
||||
MockMediaPlaylistControl plylistctrl(&parent);
|
||||
}
|
||||
|
||||
// MaemoAPI-1850:test QMediaPlayListSourceControl constructor
|
||||
void tst_QMediaPlaylist::mediaPlayListSourceControl()
|
||||
{
|
||||
// To check changes in abstract classe's pure virtual functions
|
||||
QObject parent;
|
||||
MockPlaylistSourceControl plylistsrcctrl(&parent);
|
||||
}
|
||||
|
||||
// MaemoAPI-1852:test constructor
|
||||
void tst_QMediaPlaylist::mediaPlayListProvider()
|
||||
{
|
||||
// srcs of QMediaPlaylistProvider is incomplete
|
||||
QObject parent;
|
||||
MockReadOnlyPlaylistProvider provider(&parent);
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QMediaPlaylist)
|
||||
#include "tst_qmediaplaylist.moc"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user