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:
Angus Cummings
2012-04-12 14:44:28 +10:00
committed by Qt by Nokia
parent 02efdccae9
commit e24f4fed53
3 changed files with 100 additions and 3 deletions

View File

@@ -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");
}
}

View File

@@ -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"

View File

@@ -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;
};