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)));
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");
+ }
}
void format();
void source();
void readAll();
+ void nullControl();
+ void nullService();
private:
MockAudioDecoderService *mockAudioDecoderService;
}
}
+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"