expanding unit test for QAudioDecoder
Looking for feedback concerning: implementation of the change desired functionality of QAudioDecoder Changed the behaviour of QAudioDecoder for more sane error output Change-Id: I82193a94b6fe1ef4202a4ac7bd95c607e0bee9c6 Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
02efdccae9
commit
e24f4fed53
@@ -140,9 +140,7 @@ QAudioDecoder::QAudioDecoder(QObject *parent)
|
||||
Q_D(QAudioDecoder);
|
||||
|
||||
d->provider = QMediaServiceProvider::defaultServiceProvider();
|
||||
if (d->service == 0) {
|
||||
d->error = ServiceMissingError;
|
||||
} else {
|
||||
if (d->service) {
|
||||
d->control = qobject_cast<QAudioDecoderControl*>(d->service->requestControl(QAudioDecoderControl_iid));
|
||||
if (d->control != 0) {
|
||||
connect(d->control, SIGNAL(stateChanged(QAudioDecoder::State)), SLOT(_q_stateChanged(QAudioDecoder::State)));
|
||||
@@ -157,6 +155,10 @@ QAudioDecoder::QAudioDecoder(QObject *parent)
|
||||
connect(d->control ,SIGNAL(durationChanged(qint64)), this, SIGNAL(durationChanged(qint64)));
|
||||
}
|
||||
}
|
||||
if (!d->control) {
|
||||
d->error = ServiceMissingError;
|
||||
d->errorString = tr("The QAudioDecoder object does not have a valid service");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -62,6 +62,8 @@ private Q_SLOTS:
|
||||
void format();
|
||||
void source();
|
||||
void readAll();
|
||||
void nullControl();
|
||||
void nullService();
|
||||
|
||||
private:
|
||||
MockAudioDecoderService *mockAudioDecoderService;
|
||||
@@ -338,6 +340,87 @@ void tst_QAudioDecoder::readAll()
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QAudioDecoder::nullControl()
|
||||
{
|
||||
mockAudioDecoderService->setControlNull();
|
||||
QAudioDecoder d;
|
||||
|
||||
QVERIFY(d.error() == QAudioDecoder::ServiceMissingError);
|
||||
QVERIFY(!d.errorString().isEmpty());
|
||||
|
||||
QVERIFY(d.hasSupport("MIME") == QtMultimedia::MaybeSupported);
|
||||
|
||||
QVERIFY(d.state() == QAudioDecoder::StoppedState);
|
||||
|
||||
QVERIFY(d.sourceFilename().isEmpty());
|
||||
d.setSourceFilename("test");
|
||||
QVERIFY(d.sourceFilename().isEmpty());
|
||||
|
||||
QFile f;
|
||||
QVERIFY(d.sourceDevice() == 0);
|
||||
d.setSourceDevice(&f);
|
||||
QVERIFY(d.sourceDevice() == 0);
|
||||
|
||||
QAudioFormat format;
|
||||
format.setChannels(2);
|
||||
QVERIFY(!d.audioFormat().isValid());
|
||||
d.setAudioFormat(format);
|
||||
QVERIFY(!d.audioFormat().isValid());
|
||||
|
||||
QVERIFY(!d.read().isValid());
|
||||
QVERIFY(!d.bufferAvailable());
|
||||
|
||||
QVERIFY(d.position() == -1);
|
||||
QVERIFY(d.duration() == -1);
|
||||
|
||||
d.start();
|
||||
QVERIFY(d.error() == QAudioDecoder::ServiceMissingError);
|
||||
QVERIFY(!d.errorString().isEmpty());
|
||||
QVERIFY(d.state() == QAudioDecoder::StoppedState);
|
||||
d.stop();
|
||||
}
|
||||
|
||||
|
||||
void tst_QAudioDecoder::nullService()
|
||||
{
|
||||
mockProvider->service = 0;
|
||||
QAudioDecoder d;
|
||||
|
||||
QVERIFY(d.error() == QAudioDecoder::ServiceMissingError);
|
||||
QVERIFY(!d.errorString().isEmpty());
|
||||
|
||||
QVERIFY(d.hasSupport("MIME") == QtMultimedia::MaybeSupported);
|
||||
|
||||
QVERIFY(d.state() == QAudioDecoder::StoppedState);
|
||||
|
||||
QVERIFY(d.sourceFilename().isEmpty());
|
||||
d.setSourceFilename("test");
|
||||
QVERIFY(d.sourceFilename().isEmpty());
|
||||
|
||||
QFile f;
|
||||
QVERIFY(d.sourceDevice() == 0);
|
||||
d.setSourceDevice(&f);
|
||||
QVERIFY(d.sourceDevice() == 0);
|
||||
|
||||
QAudioFormat format;
|
||||
format.setChannels(2);
|
||||
QVERIFY(!d.audioFormat().isValid());
|
||||
d.setAudioFormat(format);
|
||||
QVERIFY(!d.audioFormat().isValid());
|
||||
|
||||
QVERIFY(!d.read().isValid());
|
||||
QVERIFY(!d.bufferAvailable());
|
||||
|
||||
QVERIFY(d.position() == -1);
|
||||
QVERIFY(d.duration() == -1);
|
||||
|
||||
d.start();
|
||||
QVERIFY(d.error() == QAudioDecoder::ServiceMissingError);
|
||||
QVERIFY(!d.errorString().isEmpty());
|
||||
QVERIFY(d.state() == QAudioDecoder::StoppedState);
|
||||
d.stop();
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QAudioDecoder)
|
||||
|
||||
#include "tst_qaudiodecoder.moc"
|
||||
|
||||
@@ -55,6 +55,7 @@ public:
|
||||
: QMediaService(parent)
|
||||
{
|
||||
mockControl = new MockAudioDecoderControl(this);
|
||||
validControl = mockControl;
|
||||
}
|
||||
|
||||
~MockAudioDecoderService()
|
||||
@@ -74,7 +75,18 @@ public:
|
||||
Q_UNUSED(control);
|
||||
}
|
||||
|
||||
void setControlNull()
|
||||
{
|
||||
mockControl = 0;
|
||||
}
|
||||
|
||||
void setControlValid()
|
||||
{
|
||||
mockControl = validControl;
|
||||
}
|
||||
|
||||
MockAudioDecoderControl *mockControl;
|
||||
MockAudioDecoderControl *validControl;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user