diff --git a/src/MagnumPlugins/WavAudioImporter/Test/CMakeLists.txt b/src/MagnumPlugins/WavAudioImporter/Test/CMakeLists.txt index ae3132c39..c82d8b765 100644 --- a/src/MagnumPlugins/WavAudioImporter/Test/CMakeLists.txt +++ b/src/MagnumPlugins/WavAudioImporter/Test/CMakeLists.txt @@ -43,6 +43,15 @@ if(WIN32) endif() if(CORRADE_TARGET_EMSCRIPTEN) + emscripten_embed_file(WavAudioImporterTest unsupportedChannelCount.wav "/unsupportedChannelCount.wav") + emscripten_embed_file(WavAudioImporterTest unsupportedFormat.wav "/unsupportedFormat.wav") + emscripten_embed_file(WavAudioImporterTest wrongSignature.wav "/wrongSignature.wav") + + emscripten_embed_file(WavAudioImporterTest invalidPadding.wav "/invalidPadding.wav") + emscripten_embed_file(WavAudioImporterTest invalidLength.wav "/invalidLength.wav") + emscripten_embed_file(WavAudioImporterTest invalidDataChunk.wav "/invalidDataChunk.wav") + emscripten_embed_file(WavAudioImporterTest invalidFactChunk.wav "/invalidFactChunk.wav") + emscripten_embed_file(WavAudioImporterTest mono8.wav "/mono8.wav") emscripten_embed_file(WavAudioImporterTest mono8.wav "/mono8junk.wav") @@ -53,7 +62,9 @@ if(CORRADE_TARGET_EMSCRIPTEN) emscripten_embed_file(WavAudioImporterTest stereo8.wav "/stereo8.wav") emscripten_embed_file(WavAudioImporterTest stereo8ALaw.wav "/stereo8ALaw.wav") emscripten_embed_file(WavAudioImporterTest stereo8MuLaw.wav "/stereo8MuLaw.wav") + emscripten_embed_file(WavAudioImporterTest stereo12.wav "/stereo12.wav") emscripten_embed_file(WavAudioImporterTest stereo16.wav "/stereo16.wav") + emscripten_embed_file(WavAudioImporterTest stereo24.wav "/stereo24.wav") emscripten_embed_file(WavAudioImporterTest mono32f.wav "/mono32f.wav") emscripten_embed_file(WavAudioImporterTest stereo32f.wav "/stereo32f.wav") @@ -61,8 +72,4 @@ if(CORRADE_TARGET_EMSCRIPTEN) emscripten_embed_file(WavAudioImporterTest stereo64f.wav "/stereo64f.wav") emscripten_embed_file(WavAudioImporterTest surround616.wav "/surround616.wav") - - emscripten_embed_file(WavAudioImporterTest unsupportedChannelCount.wav "/unsupportedChannelCount.wav") - emscripten_embed_file(WavAudioImporterTest unsupportedFormat.wav "/unsupportedFormat.wav") - emscripten_embed_file(WavAudioImporterTest wrongSignature.wav "/wrongSignature.wav") endif() diff --git a/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp b/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp index b7e5102b2..c230ea135 100644 --- a/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp +++ b/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp @@ -45,6 +45,10 @@ class WavImporterTest: public TestSuite::Tester { void wrongSignature(); void unsupportedFormat(); void unsupportedChannelCount(); + void invalidPadding(); + void invalidLength(); + void invalidDataChunk(); + void invalidFactChunk(); void mono8(); void mono8junk(); @@ -55,7 +59,9 @@ class WavImporterTest: public TestSuite::Tester { void stereo8(); void stereo8ALaw(); void stereo8MuLaw(); + void stereo12(); void stereo16(); + void stereo24(); void mono32f(); void stereo32f(); @@ -71,6 +77,10 @@ WavImporterTest::WavImporterTest() { &WavImporterTest::wrongSignature, &WavImporterTest::unsupportedFormat, &WavImporterTest::unsupportedChannelCount, + &WavImporterTest::invalidPadding, + &WavImporterTest::invalidLength, + &WavImporterTest::invalidDataChunk, + &WavImporterTest::invalidFactChunk, &WavImporterTest::mono8, &WavImporterTest::mono8junk, @@ -81,7 +91,9 @@ WavImporterTest::WavImporterTest() { &WavImporterTest::stereo8, &WavImporterTest::stereo8ALaw, &WavImporterTest::stereo8MuLaw, + &WavImporterTest::stereo12, &WavImporterTest::stereo16, + &WavImporterTest::stereo24, &WavImporterTest::mono32f, &WavImporterTest::stereo32f, @@ -127,6 +139,41 @@ void WavImporterTest::unsupportedChannelCount() { CORRADE_COMPARE(out.str(), "Audio::WavImporter::openData(): unsupported channel count 6 with 8 bits per sample\n"); } +void WavImporterTest::invalidPadding() { + std::ostringstream out; + Error redirectError{&out}; + + WavImporter importer; + CORRADE_VERIFY(!importer.openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "invalidPadding.wav"))); + CORRADE_COMPARE(out.str(), "Audio::WavImporter::openData(): the file has improper size, expected 66 but got 73\n"); +} + +void WavImporterTest::invalidLength() { + std::ostringstream out; + Error redirectError{&out}; + + WavImporter importer; + CORRADE_VERIFY(!importer.openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "invalidLength.wav"))); + CORRADE_COMPARE(out.str(), "Audio::WavImporter::openData(): the file has improper size, expected 160844 but got 80444\n"); +} + +void WavImporterTest::invalidDataChunk() { + std::ostringstream out; + Error redirectError{&out}; + + WavImporter importer; + CORRADE_VERIFY(!importer.openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "invalidDataChunk.wav"))); + CORRADE_COMPARE(out.str(), "Audio::WavImporter::openData(): the file contains no data chunk\n"); +} + +void WavImporterTest::invalidFactChunk() { + WavImporter importer; + CORRADE_VERIFY(importer.openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "invalidFactChunk.wav"))); + + CORRADE_COMPARE(importer.format(), Buffer::Format::Mono16); + CORRADE_COMPARE(importer.frequency(), 22050); +} + void WavImporterTest::mono8() { WavImporter importer; CORRADE_VERIFY(importer.openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono8.wav"))); @@ -197,6 +244,15 @@ void WavImporterTest::stereo8MuLaw() { CORRADE_COMPARE(importer.frequency(), 8000); } +void WavImporterTest::stereo12() { + std::ostringstream out; + Error redirectError{&out}; + + WavImporter importer; + + CORRADE_VERIFY(!importer.openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo12.wav"))); + CORRADE_COMPARE(out.str(), "Audio::WavImporter::openData(): unsupported channel count 2 with 12 bits per sample\n"); +} void WavImporterTest::stereo16() { WavImporter importer; @@ -206,6 +262,16 @@ void WavImporterTest::stereo16() { CORRADE_COMPARE(importer.frequency(), 44100); } +void WavImporterTest::stereo24() { + std::ostringstream out; + Error redirectError{&out}; + + WavImporter importer; + + CORRADE_VERIFY(!importer.openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo24.wav"))); + CORRADE_COMPARE(out.str(), "Audio::WavImporter::openData(): unsupported channel count 2 with 24 bits per sample\n"); +} + void WavImporterTest::mono32f() { WavImporter importer; CORRADE_VERIFY(importer.openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono32f.wav"))); diff --git a/src/MagnumPlugins/WavAudioImporter/Test/invalidDataChunk.wav b/src/MagnumPlugins/WavAudioImporter/Test/invalidDataChunk.wav new file mode 100644 index 000000000..13c98ead3 Binary files /dev/null and b/src/MagnumPlugins/WavAudioImporter/Test/invalidDataChunk.wav differ diff --git a/src/MagnumPlugins/WavAudioImporter/Test/invalidFactChunk.wav b/src/MagnumPlugins/WavAudioImporter/Test/invalidFactChunk.wav new file mode 100644 index 000000000..1b2f7bf1a Binary files /dev/null and b/src/MagnumPlugins/WavAudioImporter/Test/invalidFactChunk.wav differ diff --git a/src/MagnumPlugins/WavAudioImporter/Test/invalidLength.wav b/src/MagnumPlugins/WavAudioImporter/Test/invalidLength.wav new file mode 100644 index 000000000..5c864de69 Binary files /dev/null and b/src/MagnumPlugins/WavAudioImporter/Test/invalidLength.wav differ diff --git a/src/MagnumPlugins/WavAudioImporter/Test/invalidPadding.wav b/src/MagnumPlugins/WavAudioImporter/Test/invalidPadding.wav new file mode 100644 index 000000000..2652873b9 Binary files /dev/null and b/src/MagnumPlugins/WavAudioImporter/Test/invalidPadding.wav differ diff --git a/src/MagnumPlugins/WavAudioImporter/Test/stereo12.wav b/src/MagnumPlugins/WavAudioImporter/Test/stereo12.wav new file mode 100644 index 000000000..755f6db27 Binary files /dev/null and b/src/MagnumPlugins/WavAudioImporter/Test/stereo12.wav differ diff --git a/src/MagnumPlugins/WavAudioImporter/Test/stereo24.wav b/src/MagnumPlugins/WavAudioImporter/Test/stereo24.wav new file mode 100644 index 000000000..d3493cb4e Binary files /dev/null and b/src/MagnumPlugins/WavAudioImporter/Test/stereo24.wav differ