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);
|
Q_D(QAudioDecoder);
|
||||||
|
|
||||||
d->provider = QMediaServiceProvider::defaultServiceProvider();
|
d->provider = QMediaServiceProvider::defaultServiceProvider();
|
||||||
if (d->service == 0) {
|
if (d->service) {
|
||||||
d->error = ServiceMissingError;
|
|
||||||
} else {
|
|
||||||
d->control = qobject_cast<QAudioDecoderControl*>(d->service->requestControl(QAudioDecoderControl_iid));
|
d->control = qobject_cast<QAudioDecoderControl*>(d->service->requestControl(QAudioDecoderControl_iid));
|
||||||
if (d->control != 0) {
|
if (d->control != 0) {
|
||||||
connect(d->control, SIGNAL(stateChanged(QAudioDecoder::State)), SLOT(_q_stateChanged(QAudioDecoder::State)));
|
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)));
|
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 format();
|
||||||
void source();
|
void source();
|
||||||
void readAll();
|
void readAll();
|
||||||
|
void nullControl();
|
||||||
|
void nullService();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MockAudioDecoderService *mockAudioDecoderService;
|
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)
|
QTEST_MAIN(tst_QAudioDecoder)
|
||||||
|
|
||||||
#include "tst_qaudiodecoder.moc"
|
#include "tst_qaudiodecoder.moc"
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ public:
|
|||||||
: QMediaService(parent)
|
: QMediaService(parent)
|
||||||
{
|
{
|
||||||
mockControl = new MockAudioDecoderControl(this);
|
mockControl = new MockAudioDecoderControl(this);
|
||||||
|
validControl = mockControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
~MockAudioDecoderService()
|
~MockAudioDecoderService()
|
||||||
@@ -74,7 +75,18 @@ public:
|
|||||||
Q_UNUSED(control);
|
Q_UNUSED(control);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setControlNull()
|
||||||
|
{
|
||||||
|
mockControl = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setControlValid()
|
||||||
|
{
|
||||||
|
mockControl = validControl;
|
||||||
|
}
|
||||||
|
|
||||||
MockAudioDecoderControl *mockControl;
|
MockAudioDecoderControl *mockControl;
|
||||||
|
MockAudioDecoderControl *validControl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user