summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMichael Goddard <michael.goddard@nokia.com>2011-10-11 16:41:05 +1000
committerQt by Nokia <qt-info@nokia.com>2011-10-11 08:59:55 +0200
commit01e1f91e640e6b88f4e75afaa668c8d57a541979 (patch)
treeee8129f4fea3fb4f466fefad24693a77dd46e64c /tests
parent0da05239d20eeaf6f24557ec018a41f602cbd864 (diff)
Add QNAM tests to wavedecoder as well, to simulate slow sources.
Change-Id: Ic65659bfdf72aea2cea5ae97de50a1e661db189b Reviewed-on: http://codereview.qt-project.org/6404 Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: derick hawcroft <derick.hawcroft@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qwavedecoder/qwavedecoder.pro2
-rw-r--r--tests/auto/qwavedecoder/tst_qwavedecoder.cpp70
2 files changed, 71 insertions, 1 deletions
diff --git a/tests/auto/qwavedecoder/qwavedecoder.pro b/tests/auto/qwavedecoder/qwavedecoder.pro
index 4f0339a87..3c9fd1003 100644
--- a/tests/auto/qwavedecoder/qwavedecoder.pro
+++ b/tests/auto/qwavedecoder/qwavedecoder.pro
@@ -3,7 +3,7 @@ HEADERS += ../../../src/multimedia/effects/qwavedecoder_p.h
SOURCES += tst_qwavedecoder.cpp \
../../../src/multimedia/effects/qwavedecoder_p.cpp
-QT += multimedia-private testlib
+QT += multimedia-private testlib network
CONFIG += no_private_qt_headers_warning testcase
data.files = data
diff --git a/tests/auto/qwavedecoder/tst_qwavedecoder.cpp b/tests/auto/qwavedecoder/tst_qwavedecoder.cpp
index 2f0d57742..c91ae7c95 100644
--- a/tests/auto/qwavedecoder/tst_qwavedecoder.cpp
+++ b/tests/auto/qwavedecoder/tst_qwavedecoder.cpp
@@ -44,6 +44,10 @@
#include <QtTest/QtTest>
#include <private/qwavedecoder_p.h>
+#include <QNetworkAccessManager>
+#include <QNetworkRequest>
+#include <QNetworkReply>
+
#ifndef QTRY_COMPARE
#define QTRY_COMPARE(__expr, __expected) \
do { \
@@ -85,6 +89,9 @@ private slots:
void file_data();
void file();
+ void http_data() {file_data();}
+ void http();
+
void readAllAtOnce();
void readPerByte();
};
@@ -198,6 +205,69 @@ void tst_QWaveDecoder::file()
stream.close();
}
+void tst_QWaveDecoder::http()
+{
+ QFETCH(QString, file);
+ QFETCH(tst_QWaveDecoder::Corruption, corruption);
+ QFETCH(int, channels);
+ QFETCH(int, samplesize);
+ QFETCH(int, samplerate);
+ QFETCH(QAudioFormat::Endian, byteorder);
+
+ QFile stream;
+ stream.setFileName(QString("data/") + file);
+ stream.open(QIODevice::ReadOnly);
+
+ QVERIFY(stream.isOpen());
+
+ QNetworkAccessManager nam;
+
+ QNetworkReply *reply = nam.get(QNetworkRequest(QUrl::fromLocalFile(QString::fromLatin1("data/") + file)));
+
+ QWaveDecoder waveDecoder(reply);
+ QSignalSpy validFormatSpy(&waveDecoder, SIGNAL(formatKnown()));
+ QSignalSpy parsingErrorSpy(&waveDecoder, SIGNAL(parsingError()));
+
+ if (corruption == NotAWav) {
+ QSKIP("Not all failures detected correctly yet", SkipSingle);
+ QTRY_COMPARE(parsingErrorSpy.count(), 1);
+ QCOMPARE(validFormatSpy.count(), 0);
+ } else if (corruption == NoSampleData) {
+ QTRY_COMPARE(validFormatSpy.count(), 1);
+ QCOMPARE(parsingErrorSpy.count(), 0);
+ QVERIFY(waveDecoder.audioFormat().isValid());
+ QVERIFY(waveDecoder.size() == 0);
+ QVERIFY(waveDecoder.duration() == 0);
+ } else if (corruption == FormatDescriptor) {
+ QTRY_COMPARE(parsingErrorSpy.count(), 1);
+ QCOMPARE(validFormatSpy.count(), 0);
+ } else if (corruption == FormatString) {
+ QTRY_COMPARE(parsingErrorSpy.count(), 1);
+ QCOMPARE(validFormatSpy.count(), 0);
+ QVERIFY(!waveDecoder.audioFormat().isValid());
+ } else if (corruption == DataDescriptor) {
+ QTRY_COMPARE(parsingErrorSpy.count(), 1);
+ QCOMPARE(validFormatSpy.count(), 0);
+ QVERIFY(waveDecoder.size() == 0);
+ } else if (corruption == None) {
+ QTRY_COMPARE(validFormatSpy.count(), 1);
+ QCOMPARE(parsingErrorSpy.count(), 0);
+ QVERIFY(waveDecoder.audioFormat().isValid());
+ QVERIFY(waveDecoder.size() > 0);
+ QVERIFY(waveDecoder.duration() == 250);
+ QAudioFormat format = waveDecoder.audioFormat();
+ QVERIFY(format.isValid());
+ QVERIFY(format.channels() == channels);
+ QVERIFY(format.sampleSize() == samplesize);
+ QVERIFY(format.sampleRate() == samplerate);
+ if (format.sampleSize() != 8) {
+ QVERIFY(format.byteOrder() == byteorder);
+ }
+ }
+
+ delete reply;
+}
+
void tst_QWaveDecoder::readAllAtOnce()
{
QFile stream;