From 01e1f91e640e6b88f4e75afaa668c8d57a541979 Mon Sep 17 00:00:00 2001 From: Michael Goddard Date: Tue, 11 Oct 2011 16:41:05 +1000 Subject: 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 Reviewed-by: derick hawcroft --- tests/auto/qwavedecoder/qwavedecoder.pro | 2 +- tests/auto/qwavedecoder/tst_qwavedecoder.cpp | 70 ++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) (limited to 'tests') 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 #include +#include +#include +#include + #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; -- cgit v1.2.3