diff --git a/src/Magnum/ShaderTools/AbstractConverter.cpp b/src/Magnum/ShaderTools/AbstractConverter.cpp index 3bf2e96c0..3e7010b68 100644 --- a/src/Magnum/ShaderTools/AbstractConverter.cpp +++ b/src/Magnum/ShaderTools/AbstractConverter.cpp @@ -52,6 +52,97 @@ namespace Magnum { namespace ShaderTools { using namespace Containers::Literals; +Debug& operator<<(Debug& debug, const ConverterFeature value) { + const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; + + if(!packed) + debug << "ShaderTools::ConverterFeature" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case ConverterFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; + _c(ValidateData) + _c(ValidateFile) + _c(ConvertData) + _c(ConvertFile) + _c(LinkData) + _c(LinkFile) + _c(InputFileCallback) + _c(Preprocess) + _c(Optimize) + _c(DebugInfo) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << (packed ? "" : ")"); +} + +Debug& operator<<(Debug& debug, const ConverterFeatures value) { + return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "ShaderTools::ConverterFeatures{}", { + ConverterFeature::ValidateData, + /* Implied by ValidateData, has to be after */ + ConverterFeature::ValidateFile, + ConverterFeature::ConvertData, + /* Implied by ConvertData, has to be after */ + ConverterFeature::ConvertFile, + ConverterFeature::LinkData, + /* Implied by LinkData, has to be after */ + ConverterFeature::LinkFile, + ConverterFeature::InputFileCallback, + ConverterFeature::Preprocess, + ConverterFeature::Optimize, + ConverterFeature::DebugInfo + }); +} + +Debug& operator<<(Debug& debug, const ConverterFlag value) { + debug << "ShaderTools::ConverterFlag" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case ConverterFlag::v: return debug << "::" #v; + _c(Quiet) + _c(Verbose) + _c(WarningAsError) + _c(PreprocessOnly) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << "(" << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << ")"; +} + +Debug& operator<<(Debug& debug, const ConverterFlags value) { + return Containers::enumSetDebugOutput(debug, value, "ShaderTools::ConverterFlags{}", { + ConverterFlag::Quiet, + ConverterFlag::Verbose, + ConverterFlag::WarningAsError, + ConverterFlag::PreprocessOnly + }); +} + +Debug& operator<<(Debug& debug, const Format value) { + debug << "ShaderTools::Format" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case Format::v: return debug << "::" #v; + _c(Unspecified) + _c(Glsl) + _c(Spirv) + _c(SpirvAssembly) + _c(Hlsl) + _c(Msl) + _c(Wgsl) + _c(Dxil) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << "(" << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << ")"; +} + Containers::StringView AbstractConverter::pluginInterface() { return MAGNUM_SHADERTOOLS_ABSTRACTCONVERTER_PLUGIN_INTERFACE ""_s; } @@ -729,95 +820,4 @@ Containers::Optional> AbstractConverter::doLinkFilesToDa } } -Debug& operator<<(Debug& debug, const ConverterFeature value) { - const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; - - if(!packed) - debug << "ShaderTools::ConverterFeature" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case ConverterFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; - _c(ValidateData) - _c(ValidateFile) - _c(ConvertData) - _c(ConvertFile) - _c(LinkData) - _c(LinkFile) - _c(InputFileCallback) - _c(Preprocess) - _c(Optimize) - _c(DebugInfo) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << (packed ? "" : ")"); -} - -Debug& operator<<(Debug& debug, const ConverterFeatures value) { - return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "ShaderTools::ConverterFeatures{}", { - ConverterFeature::ValidateData, - /* Implied by ValidateData, has to be after */ - ConverterFeature::ValidateFile, - ConverterFeature::ConvertData, - /* Implied by ConvertData, has to be after */ - ConverterFeature::ConvertFile, - ConverterFeature::LinkData, - /* Implied by LinkData, has to be after */ - ConverterFeature::LinkFile, - ConverterFeature::InputFileCallback, - ConverterFeature::Preprocess, - ConverterFeature::Optimize, - ConverterFeature::DebugInfo - }); -} - -Debug& operator<<(Debug& debug, const ConverterFlag value) { - debug << "ShaderTools::ConverterFlag" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case ConverterFlag::v: return debug << "::" #v; - _c(Quiet) - _c(Verbose) - _c(WarningAsError) - _c(PreprocessOnly) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << "(" << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << ")"; -} - -Debug& operator<<(Debug& debug, const ConverterFlags value) { - return Containers::enumSetDebugOutput(debug, value, "ShaderTools::ConverterFlags{}", { - ConverterFlag::Quiet, - ConverterFlag::Verbose, - ConverterFlag::WarningAsError, - ConverterFlag::PreprocessOnly - }); -} - -Debug& operator<<(Debug& debug, const Format value) { - debug << "ShaderTools::Format" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case Format::v: return debug << "::" #v; - _c(Unspecified) - _c(Glsl) - _c(Spirv) - _c(SpirvAssembly) - _c(Hlsl) - _c(Msl) - _c(Wgsl) - _c(Dxil) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << "(" << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << ")"; -} - }} diff --git a/src/Magnum/ShaderTools/Test/AbstractConverterTest.cpp b/src/Magnum/ShaderTools/Test/AbstractConverterTest.cpp index ca6310bb8..438b72033 100644 --- a/src/Magnum/ShaderTools/Test/AbstractConverterTest.cpp +++ b/src/Magnum/ShaderTools/Test/AbstractConverterTest.cpp @@ -47,6 +47,15 @@ namespace Magnum { namespace ShaderTools { namespace Test { namespace { struct AbstractConverterTest: TestSuite::Tester { explicit AbstractConverterTest(); + void debugFeature(); + void debugFeaturePacked(); + void debugFeatures(); + void debugFeaturesPacked(); + void debugFeaturesSupersets(); + void debugFlag(); + void debugFlags(); + void debugFormat(); + void construct(); void constructWithPluginManagerReference(); @@ -193,19 +202,19 @@ struct AbstractConverterTest: TestSuite::Tester { void setInputFileCallbackLinkFilesToDataThroughBaseImplementationFailed(); void setInputFileCallbackLinkFilesToDataAsData(); void setInputFileCallbackLinkFilesToDataAsDataFailed(); - - void debugFeature(); - void debugFeaturePacked(); - void debugFeatures(); - void debugFeaturesPacked(); - void debugFeaturesSupersets(); - void debugFlag(); - void debugFlags(); - void debugFormat(); }; AbstractConverterTest::AbstractConverterTest() { - addTests({&AbstractConverterTest::featuresNone, + addTests({&AbstractConverterTest::debugFeature, + &AbstractConverterTest::debugFeaturePacked, + &AbstractConverterTest::debugFeatures, + &AbstractConverterTest::debugFeaturesPacked, + &AbstractConverterTest::debugFeaturesSupersets, + &AbstractConverterTest::debugFlag, + &AbstractConverterTest::debugFlags, + &AbstractConverterTest::debugFormat, + + &AbstractConverterTest::featuresNone, &AbstractConverterTest::construct, &AbstractConverterTest::constructWithPluginManagerReference, @@ -350,21 +359,84 @@ AbstractConverterTest::AbstractConverterTest() { &AbstractConverterTest::setInputFileCallbackLinkFilesToDataThroughBaseImplementation, &AbstractConverterTest::setInputFileCallbackLinkFilesToDataThroughBaseImplementationFailed, &AbstractConverterTest::setInputFileCallbackLinkFilesToDataAsData, - &AbstractConverterTest::setInputFileCallbackLinkFilesToDataAsDataFailed, - - &AbstractConverterTest::debugFeature, - &AbstractConverterTest::debugFeaturePacked, - &AbstractConverterTest::debugFeatures, - &AbstractConverterTest::debugFeaturesPacked, - &AbstractConverterTest::debugFeaturesSupersets, - &AbstractConverterTest::debugFlag, - &AbstractConverterTest::debugFlags, - &AbstractConverterTest::debugFormat}); + &AbstractConverterTest::setInputFileCallbackLinkFilesToDataAsDataFailed}); /* Create testing dir */ Utility::Path::make(SHADERTOOLS_TEST_OUTPUT_DIR); } +void AbstractConverterTest::debugFeature() { + Containers::String out; + + Debug{&out} << ConverterFeature::ConvertData << ConverterFeature(0xf0); + CORRADE_COMPARE(out, "ShaderTools::ConverterFeature::ConvertData ShaderTools::ConverterFeature(0xf0)\n"); +} + +void AbstractConverterTest::debugFeaturePacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << ConverterFeature::ConvertData << Debug::packed << ConverterFeature(0xf0) << ConverterFeature::ValidateFile; + CORRADE_COMPARE(out, "ConvertData 0xf0 ShaderTools::ConverterFeature::ValidateFile\n"); +} + +void AbstractConverterTest::debugFeatures() { + Containers::String out; + + Debug{&out} << (ConverterFeature::ValidateData|ConverterFeature::ConvertFile) << ConverterFeatures{}; + CORRADE_COMPARE(out, "ShaderTools::ConverterFeature::ValidateData|ShaderTools::ConverterFeature::ConvertFile ShaderTools::ConverterFeatures{}\n"); +} + +void AbstractConverterTest::debugFeaturesPacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << (ConverterFeature::ValidateData|ConverterFeature::ConvertFile) << Debug::packed << ConverterFeatures{} << ConverterFeature::InputFileCallback; + CORRADE_COMPARE(out, "ValidateData|ConvertFile {} ShaderTools::ConverterFeature::InputFileCallback\n"); +} + +void AbstractConverterTest::debugFeaturesSupersets() { + /* ValidateData is a superset of ValidateFile, so only one should be + printed */ + { + Containers::String out; + Debug{&out} << (ConverterFeature::ValidateData|ConverterFeature::ValidateFile); + CORRADE_COMPARE(out, "ShaderTools::ConverterFeature::ValidateData\n"); + + /* ConvertData is a superset of ConvertFile, so only one should be + printed */ + } { + Containers::String out; + Debug{&out} << (ConverterFeature::ConvertData|ConverterFeature::ConvertFile); + CORRADE_COMPARE(out, "ShaderTools::ConverterFeature::ConvertData\n"); + + /* LinkData is a superset of LinkFile, so only one should be printed */ + } { + Containers::String out; + Debug{&out} << (ConverterFeature::LinkData|ConverterFeature::LinkFile); + CORRADE_COMPARE(out, "ShaderTools::ConverterFeature::LinkData\n"); + } +} + +void AbstractConverterTest::debugFlag() { + Containers::String out; + + Debug{&out} << ConverterFlag::Verbose << ConverterFlag(0xf0); + CORRADE_COMPARE(out, "ShaderTools::ConverterFlag::Verbose ShaderTools::ConverterFlag(0xf0)\n"); +} + +void AbstractConverterTest::debugFlags() { + Containers::String out; + + Debug{&out} << (ConverterFlag::Verbose|ConverterFlag(0xf0)) << ConverterFlags{}; + CORRADE_COMPARE(out, "ShaderTools::ConverterFlag::Verbose|ShaderTools::ConverterFlag(0xf0) ShaderTools::ConverterFlags{}\n"); +} + +void AbstractConverterTest::debugFormat() { + Containers::String out; + + Debug{&out} << Format::Glsl << Format(0xf0); + CORRADE_COMPARE(out, "ShaderTools::Format::Glsl ShaderTools::Format(0xf0)\n"); +} + void AbstractConverterTest::construct() { struct: AbstractConverter { ConverterFeatures doFeatures() const override { @@ -3695,78 +3767,6 @@ void AbstractConverterTest::setInputFileCallbackLinkFilesToDataAsDataFailed() { CORRADE_COMPARE(out, "ShaderTools::AbstractConverter::linkFilesToData(): cannot open file file.dat\n"); } -void AbstractConverterTest::debugFeature() { - Containers::String out; - - Debug{&out} << ConverterFeature::ConvertData << ConverterFeature(0xf0); - CORRADE_COMPARE(out, "ShaderTools::ConverterFeature::ConvertData ShaderTools::ConverterFeature(0xf0)\n"); -} - -void AbstractConverterTest::debugFeaturePacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << ConverterFeature::ConvertData << Debug::packed << ConverterFeature(0xf0) << ConverterFeature::ValidateFile; - CORRADE_COMPARE(out, "ConvertData 0xf0 ShaderTools::ConverterFeature::ValidateFile\n"); -} - -void AbstractConverterTest::debugFeatures() { - Containers::String out; - - Debug{&out} << (ConverterFeature::ValidateData|ConverterFeature::ConvertFile) << ConverterFeatures{}; - CORRADE_COMPARE(out, "ShaderTools::ConverterFeature::ValidateData|ShaderTools::ConverterFeature::ConvertFile ShaderTools::ConverterFeatures{}\n"); -} - -void AbstractConverterTest::debugFeaturesPacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << (ConverterFeature::ValidateData|ConverterFeature::ConvertFile) << Debug::packed << ConverterFeatures{} << ConverterFeature::InputFileCallback; - CORRADE_COMPARE(out, "ValidateData|ConvertFile {} ShaderTools::ConverterFeature::InputFileCallback\n"); -} - -void AbstractConverterTest::debugFeaturesSupersets() { - /* ValidateData is a superset of ValidateFile, so only one should be - printed */ - { - Containers::String out; - Debug{&out} << (ConverterFeature::ValidateData|ConverterFeature::ValidateFile); - CORRADE_COMPARE(out, "ShaderTools::ConverterFeature::ValidateData\n"); - - /* ConvertData is a superset of ConvertFile, so only one should be - printed */ - } { - Containers::String out; - Debug{&out} << (ConverterFeature::ConvertData|ConverterFeature::ConvertFile); - CORRADE_COMPARE(out, "ShaderTools::ConverterFeature::ConvertData\n"); - - /* LinkData is a superset of LinkFile, so only one should be printed */ - } { - Containers::String out; - Debug{&out} << (ConverterFeature::LinkData|ConverterFeature::LinkFile); - CORRADE_COMPARE(out, "ShaderTools::ConverterFeature::LinkData\n"); - } -} - -void AbstractConverterTest::debugFlag() { - Containers::String out; - - Debug{&out} << ConverterFlag::Verbose << ConverterFlag(0xf0); - CORRADE_COMPARE(out, "ShaderTools::ConverterFlag::Verbose ShaderTools::ConverterFlag(0xf0)\n"); -} - -void AbstractConverterTest::debugFlags() { - Containers::String out; - - Debug{&out} << (ConverterFlag::Verbose|ConverterFlag(0xf0)) << ConverterFlags{}; - CORRADE_COMPARE(out, "ShaderTools::ConverterFlag::Verbose|ShaderTools::ConverterFlag(0xf0) ShaderTools::ConverterFlags{}\n"); -} - -void AbstractConverterTest::debugFormat() { - Containers::String out; - - Debug{&out} << Format::Glsl << Format(0xf0); - CORRADE_COMPARE(out, "ShaderTools::Format::Glsl ShaderTools::Format(0xf0)\n"); -} - }}}} CORRADE_TEST_MAIN(Magnum::ShaderTools::Test::AbstractConverterTest) diff --git a/src/Magnum/Text/AbstractFont.cpp b/src/Magnum/Text/AbstractFont.cpp index a9de9998d..e76567405 100644 --- a/src/Magnum/Text/AbstractFont.cpp +++ b/src/Magnum/Text/AbstractFont.cpp @@ -66,6 +66,33 @@ namespace Magnum { namespace Text { using namespace Containers::Literals; +Debug& operator<<(Debug& debug, const FontFeature value) { + const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; + + if(!packed) + debug << "Text::FontFeature" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case FontFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; + _c(OpenData) + _c(FileCallback) + _c(PreparedGlyphCache) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << (packed ? "" : ")"); +} + +Debug& operator<<(Debug& debug, const FontFeatures value) { + return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Text::FontFeatures{}", { + FontFeature::OpenData, + FontFeature::FileCallback, + FontFeature::PreparedGlyphCache + }); +} + Containers::StringView AbstractFont::pluginInterface() { return MAGNUM_TEXT_ABSTRACTFONT_PLUGIN_INTERFACE ""_s; } @@ -486,32 +513,6 @@ Containers::Pointer AbstractFont::layout(const AbstractGlyphCa CORRADE_IGNORE_DEPRECATED_POP #endif -Debug& operator<<(Debug& debug, const FontFeature value) { - const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; - - if(!packed) - debug << "Text::FontFeature" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case FontFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; - _c(OpenData) - _c(FileCallback) - _c(PreparedGlyphCache) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << (packed ? "" : ")"); -} - -Debug& operator<<(Debug& debug, const FontFeatures value) { - return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Text::FontFeatures{}", { - FontFeature::OpenData, - FontFeature::FileCallback, - FontFeature::PreparedGlyphCache}); -} - #ifdef MAGNUM_BUILD_DEPRECATED AbstractLayouter::AbstractLayouter(Containers::Array>&& glyphs): _glyphs{Utility::move(glyphs)} {} diff --git a/src/Magnum/Text/AbstractFontConverter.cpp b/src/Magnum/Text/AbstractFontConverter.cpp index 804e6bb4a..b566b9f57 100644 --- a/src/Magnum/Text/AbstractFontConverter.cpp +++ b/src/Magnum/Text/AbstractFontConverter.cpp @@ -54,6 +54,37 @@ namespace Magnum { namespace Text { using namespace Containers::Literals; +Debug& operator<<(Debug& debug, const FontConverterFeature value) { + const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; + + if(!packed) + debug << "Text::FontConverterFeature" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case FontConverterFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; + _c(ExportFont) + _c(ExportGlyphCache) + _c(ImportGlyphCache) + _c(ConvertData) + _c(MultiFile) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << Containers::enumCastUnderlyingType(value) << Debug::nospace << (packed ? "" : ")"); +} + +Debug& operator<<(Debug& debug, const FontConverterFeatures value) { + return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Text::FontConverterFeatures{}", { + FontConverterFeature::ExportFont, + FontConverterFeature::ExportGlyphCache, + FontConverterFeature::ImportGlyphCache, + FontConverterFeature::ConvertData, + FontConverterFeature::MultiFile + }); +} + namespace { std::u32string uniqueUnicode(const std::string& characters) @@ -284,34 +315,4 @@ Containers::Pointer AbstractFontConverter::doImportGlyphCach return doImportGlyphCacheFromSingleData(*data); } -Debug& operator<<(Debug& debug, const FontConverterFeature value) { - const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; - - if(!packed) - debug << "Text::FontConverterFeature" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case FontConverterFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; - _c(ExportFont) - _c(ExportGlyphCache) - _c(ImportGlyphCache) - _c(ConvertData) - _c(MultiFile) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << Containers::enumCastUnderlyingType(value) << Debug::nospace << (packed ? "" : ")"); -} - -Debug& operator<<(Debug& debug, const FontConverterFeatures value) { - return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Text::FontConverterFeatures{}", { - FontConverterFeature::ExportFont, - FontConverterFeature::ExportGlyphCache, - FontConverterFeature::ImportGlyphCache, - FontConverterFeature::ConvertData, - FontConverterFeature::MultiFile}); -} - }} diff --git a/src/Magnum/Text/Test/AbstractFontConverterTest.cpp b/src/Magnum/Text/Test/AbstractFontConverterTest.cpp index d835c2099..ff43b04ae 100644 --- a/src/Magnum/Text/Test/AbstractFontConverterTest.cpp +++ b/src/Magnum/Text/Test/AbstractFontConverterTest.cpp @@ -48,6 +48,11 @@ namespace Magnum { namespace Text { namespace Test { namespace { struct AbstractFontConverterTest: TestSuite::Tester { explicit AbstractFontConverterTest(); + void debugFeature(); + void debugFeaturePacked(); + void debugFeatures(); + void debugFeaturesPacked(); + void construct(); void convertGlyphs(); @@ -106,15 +111,15 @@ struct AbstractFontConverterTest: TestSuite::Tester { void importGlyphCacheFromFileAsSingleData(); void importGlyphCacheFromFileAsSingleDataNotFound(); void importGlyphCacheFromFileAsSingleDataFailed(); - - void debugFeature(); - void debugFeaturePacked(); - void debugFeatures(); - void debugFeaturesPacked(); }; AbstractFontConverterTest::AbstractFontConverterTest() { - addTests({&AbstractFontConverterTest::construct, + addTests({&AbstractFontConverterTest::debugFeature, + &AbstractFontConverterTest::debugFeaturePacked, + &AbstractFontConverterTest::debugFeatures, + &AbstractFontConverterTest::debugFeaturesPacked, + + &AbstractFontConverterTest::construct, &AbstractFontConverterTest::convertGlyphs, @@ -171,17 +176,40 @@ AbstractFontConverterTest::AbstractFontConverterTest() { &AbstractFontConverterTest::importGlyphCacheFromFileNotImplemented, &AbstractFontConverterTest::importGlyphCacheFromFileAsSingleData, &AbstractFontConverterTest::importGlyphCacheFromFileAsSingleDataNotFound, - &AbstractFontConverterTest::importGlyphCacheFromFileAsSingleDataFailed, - - &AbstractFontConverterTest::debugFeature, - &AbstractFontConverterTest::debugFeaturePacked, - &AbstractFontConverterTest::debugFeatures, - &AbstractFontConverterTest::debugFeaturesPacked}); + &AbstractFontConverterTest::importGlyphCacheFromFileAsSingleDataFailed}); /* Create testing dir */ Utility::Path::make(TEXT_TEST_OUTPUT_DIR); } +void AbstractFontConverterTest::debugFeature() { + Containers::String out; + + Debug{&out} << FontConverterFeature::ExportFont << FontConverterFeature(0xf0); + CORRADE_COMPARE(out, "Text::FontConverterFeature::ExportFont Text::FontConverterFeature(0xf0)\n"); +} + +void AbstractFontConverterTest::debugFeaturePacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << FontConverterFeature::ExportFont << Debug::packed << FontConverterFeature(0xf0) << FontConverterFeature::ImportGlyphCache; + CORRADE_COMPARE(out, "ExportFont 0xf0 Text::FontConverterFeature::ImportGlyphCache\n"); +} + +void AbstractFontConverterTest::debugFeatures() { + Containers::String out; + + Debug{&out} << (FontConverterFeature::ExportFont|FontConverterFeature::ImportGlyphCache) << FontConverterFeatures{}; + CORRADE_COMPARE(out, "Text::FontConverterFeature::ExportFont|Text::FontConverterFeature::ImportGlyphCache Text::FontConverterFeatures{}\n"); +} + +void AbstractFontConverterTest::debugFeaturesPacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << (FontConverterFeature::ExportFont|FontConverterFeature::ImportGlyphCache) << Debug::packed << FontConverterFeatures{} << FontConverterFeature::ExportGlyphCache; + CORRADE_COMPARE(out, "ExportFont|ImportGlyphCache {} Text::FontConverterFeature::ExportGlyphCache\n"); +} + void AbstractFontConverterTest::construct() { struct: AbstractFontConverter { FontConverterFeatures doFeatures() const override { @@ -1333,34 +1361,6 @@ void AbstractFontConverterTest::importGlyphCacheFromFileAsSingleDataFailed() { CORRADE_COMPARE(out, ""); } -void AbstractFontConverterTest::debugFeature() { - Containers::String out; - - Debug{&out} << FontConverterFeature::ExportFont << FontConverterFeature(0xf0); - CORRADE_COMPARE(out, "Text::FontConverterFeature::ExportFont Text::FontConverterFeature(0xf0)\n"); -} - -void AbstractFontConverterTest::debugFeaturePacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << FontConverterFeature::ExportFont << Debug::packed << FontConverterFeature(0xf0) << FontConverterFeature::ImportGlyphCache; - CORRADE_COMPARE(out, "ExportFont 0xf0 Text::FontConverterFeature::ImportGlyphCache\n"); -} - -void AbstractFontConverterTest::debugFeatures() { - Containers::String out; - - Debug{&out} << (FontConverterFeature::ExportFont|FontConverterFeature::ImportGlyphCache) << FontConverterFeatures{}; - CORRADE_COMPARE(out, "Text::FontConverterFeature::ExportFont|Text::FontConverterFeature::ImportGlyphCache Text::FontConverterFeatures{}\n"); -} - -void AbstractFontConverterTest::debugFeaturesPacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << (FontConverterFeature::ExportFont|FontConverterFeature::ImportGlyphCache) << Debug::packed << FontConverterFeatures{} << FontConverterFeature::ExportGlyphCache; - CORRADE_COMPARE(out, "ExportFont|ImportGlyphCache {} Text::FontConverterFeature::ExportGlyphCache\n"); -} - }}}} CORRADE_TEST_MAIN(Magnum::Text::Test::AbstractFontConverterTest) diff --git a/src/Magnum/Text/Test/AbstractFontTest.cpp b/src/Magnum/Text/Test/AbstractFontTest.cpp index b9a1d97ad..73b2c90c3 100644 --- a/src/Magnum/Text/Test/AbstractFontTest.cpp +++ b/src/Magnum/Text/Test/AbstractFontTest.cpp @@ -55,6 +55,11 @@ namespace Magnum { namespace Text { namespace Test { namespace { struct AbstractFontTest: TestSuite::Tester { explicit AbstractFontTest(); + void debugFeature(); + void debugFeaturePacked(); + void debugFeatures(); + void debugFeaturesPacked(); + void construct(); void openData(); @@ -128,15 +133,15 @@ struct AbstractFontTest: TestSuite::Tester { void layoutGlyphOutOfRange(); void layoutNoFont(); #endif - - void debugFeature(); - void debugFeaturePacked(); - void debugFeatures(); - void debugFeaturesPacked(); }; AbstractFontTest::AbstractFontTest() { - addTests({&AbstractFontTest::construct, + addTests({&AbstractFontTest::debugFeature, + &AbstractFontTest::debugFeaturePacked, + &AbstractFontTest::debugFeatures, + &AbstractFontTest::debugFeaturesPacked, + + &AbstractFontTest::construct, &AbstractFontTest::openData, &AbstractFontTest::openDataFailed, @@ -209,15 +214,39 @@ AbstractFontTest::AbstractFontTest() { &AbstractFontTest::layoutGlyphOutOfRange, &AbstractFontTest::layoutNoFont, #endif - - &AbstractFontTest::debugFeature, - &AbstractFontTest::debugFeaturePacked, - &AbstractFontTest::debugFeatures, - &AbstractFontTest::debugFeaturesPacked}); + }); } using namespace Containers::Literals; +void AbstractFontTest::debugFeature() { + Containers::String out; + + Debug{&out} << FontFeature::OpenData << FontFeature(0xf0); + CORRADE_COMPARE(out, "Text::FontFeature::OpenData Text::FontFeature(0xf0)\n"); +} + +void AbstractFontTest::debugFeaturePacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << FontFeature::OpenData << Debug::packed << FontFeature(0xf0) << FontFeature::FileCallback; + CORRADE_COMPARE(out, "OpenData 0xf0 Text::FontFeature::FileCallback\n"); +} + +void AbstractFontTest::debugFeatures() { + Containers::String out; + + Debug{&out} << (FontFeature::OpenData|FontFeature::PreparedGlyphCache) << FontFeatures{}; + CORRADE_COMPARE(out, "Text::FontFeature::OpenData|Text::FontFeature::PreparedGlyphCache Text::FontFeatures{}\n"); +} + +void AbstractFontTest::debugFeaturesPacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << (FontFeature::OpenData|FontFeature::PreparedGlyphCache) << Debug::packed << FontFeatures{} << FontFeature::FileCallback; + CORRADE_COMPARE(out, "OpenData|PreparedGlyphCache {} Text::FontFeature::FileCallback\n"); +} + void AbstractFontTest::construct() { struct: AbstractFont { FontFeatures doFeatures() const override { return {}; } @@ -2242,34 +2271,6 @@ void AbstractFontTest::layoutNoFont() { } #endif -void AbstractFontTest::debugFeature() { - Containers::String out; - - Debug{&out} << FontFeature::OpenData << FontFeature(0xf0); - CORRADE_COMPARE(out, "Text::FontFeature::OpenData Text::FontFeature(0xf0)\n"); -} - -void AbstractFontTest::debugFeaturePacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << FontFeature::OpenData << Debug::packed << FontFeature(0xf0) << FontFeature::FileCallback; - CORRADE_COMPARE(out, "OpenData 0xf0 Text::FontFeature::FileCallback\n"); -} - -void AbstractFontTest::debugFeatures() { - Containers::String out; - - Debug{&out} << (FontFeature::OpenData|FontFeature::PreparedGlyphCache) << FontFeatures{}; - CORRADE_COMPARE(out, "Text::FontFeature::OpenData|Text::FontFeature::PreparedGlyphCache Text::FontFeatures{}\n"); -} - -void AbstractFontTest::debugFeaturesPacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << (FontFeature::OpenData|FontFeature::PreparedGlyphCache) << Debug::packed << FontFeatures{} << FontFeature::FileCallback; - CORRADE_COMPARE(out, "OpenData|PreparedGlyphCache {} Text::FontFeature::FileCallback\n"); -} - }}}} CORRADE_TEST_MAIN(Magnum::Text::Test::AbstractFontTest) diff --git a/src/Magnum/Trade/AbstractImageConverter.cpp b/src/Magnum/Trade/AbstractImageConverter.cpp index b2f1d33ac..dcc81e6c7 100644 --- a/src/Magnum/Trade/AbstractImageConverter.cpp +++ b/src/Magnum/Trade/AbstractImageConverter.cpp @@ -57,6 +57,116 @@ namespace Magnum { namespace Trade { using namespace Containers::Literals; +Debug& operator<<(Debug& debug, const ImageConverterFeature value) { + const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; + + #ifdef MAGNUM_BUILD_DEPRECATED + /* If printing a deprecated flag combination, make it look like the enum + set */ + if((value & ImageConverterFeature::Levels) && (value & ~ImageConverterFeature::Levels)) + return debug << (value & ~ImageConverterFeature::Levels) << Debug::nospace << (packed ? "|Levels" : "|Trade::ImageConverterFeature::Levels"); + #endif + + if(!packed) + debug << "Trade::ImageConverterFeature" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case ImageConverterFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; + _c(Convert1D) + _c(Convert2D) + _c(Convert3D) + _c(ConvertCompressed1D) + _c(ConvertCompressed2D) + _c(ConvertCompressed3D) + _c(Convert1DToFile) + _c(Convert2DToFile) + _c(Convert3DToFile) + _c(ConvertCompressed1DToFile) + _c(ConvertCompressed2DToFile) + _c(ConvertCompressed3DToFile) + _c(Convert1DToData) + _c(Convert2DToData) + _c(Convert3DToData) + _c(ConvertCompressed1DToData) + _c(ConvertCompressed2DToData) + _c(ConvertCompressed3DToData) + _c(Levels) + #undef _c + /* LCOV_EXCL_STOP */ + + #ifdef MAGNUM_BUILD_DEPRECATED + /* LCOV_EXCL_START */ + CORRADE_IGNORE_DEPRECATED_PUSH + case ImageConverterFeature::ConvertLevels1DToData: + case ImageConverterFeature::ConvertLevels2DToData: + case ImageConverterFeature::ConvertLevels3DToData: + case ImageConverterFeature::ConvertCompressedLevels1DToData: + case ImageConverterFeature::ConvertCompressedLevels2DToData: + case ImageConverterFeature::ConvertCompressedLevels3DToData: + case ImageConverterFeature::ConvertLevels1DToFile: + case ImageConverterFeature::ConvertLevels2DToFile: + case ImageConverterFeature::ConvertLevels3DToFile: + case ImageConverterFeature::ConvertCompressedLevels1DToFile: + case ImageConverterFeature::ConvertCompressedLevels2DToFile: + case ImageConverterFeature::ConvertCompressedLevels3DToFile: + CORRADE_INTERNAL_ASSERT_UNREACHABLE(); + CORRADE_IGNORE_DEPRECATED_POP + /* LCOV_EXCL_STOP */ + #endif + } + + return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedInt(value) << Debug::nospace << (packed ? "" : ")"); +} + +Debug& operator<<(Debug& debug, const ImageConverterFeatures value) { + return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Trade::ImageConverterFeatures{}", { + ImageConverterFeature::Convert1D, + ImageConverterFeature::Convert2D, + ImageConverterFeature::Convert3D, + ImageConverterFeature::ConvertCompressed1D, + ImageConverterFeature::ConvertCompressed2D, + ImageConverterFeature::ConvertCompressed3D, + ImageConverterFeature::Convert1DToData, + ImageConverterFeature::Convert2DToData, + ImageConverterFeature::Convert3DToData, + ImageConverterFeature::ConvertCompressed1DToData, + ImageConverterFeature::ConvertCompressed2DToData, + ImageConverterFeature::ConvertCompressed3DToData, + /* These 6 are implied by Convert[Compressed]ToData, so have to be + after */ + ImageConverterFeature::Convert1DToFile, + ImageConverterFeature::Convert2DToFile, + ImageConverterFeature::Convert3DToFile, + ImageConverterFeature::ConvertCompressed1DToFile, + ImageConverterFeature::ConvertCompressed2DToFile, + ImageConverterFeature::ConvertCompressed3DToFile, + ImageConverterFeature::Levels + }); +} + +Debug& operator<<(Debug& debug, const ImageConverterFlag value) { + debug << "Trade::ImageConverterFlag" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case ImageConverterFlag::v: return debug << "::" #v; + _c(Quiet) + _c(Verbose) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << "(" << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << ")"; +} + +Debug& operator<<(Debug& debug, const ImageConverterFlags value) { + return Containers::enumSetDebugOutput(debug, value, "Trade::ImageConverterFlags{}", { + ImageConverterFlag::Quiet, + ImageConverterFlag::Verbose + }); +} + Containers::StringView AbstractImageConverter::pluginInterface() { return MAGNUM_TRADE_ABSTRACTIMAGECONVERTER_PLUGIN_INTERFACE ""_s; } @@ -1291,112 +1401,4 @@ bool AbstractImageConverter::doConvertToFile(const Containers::ArrayView= Debug::Flag::Packed; - - #ifdef MAGNUM_BUILD_DEPRECATED - /* If printing a deprecated flag combination, make it look like the enum - set */ - if((value & ImageConverterFeature::Levels) && (value & ~ImageConverterFeature::Levels)) - return debug << (value & ~ImageConverterFeature::Levels) << Debug::nospace << (packed ? "|Levels" : "|Trade::ImageConverterFeature::Levels"); - #endif - - if(!packed) - debug << "Trade::ImageConverterFeature" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case ImageConverterFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; - _c(Convert1D) - _c(Convert2D) - _c(Convert3D) - _c(ConvertCompressed1D) - _c(ConvertCompressed2D) - _c(ConvertCompressed3D) - _c(Convert1DToFile) - _c(Convert2DToFile) - _c(Convert3DToFile) - _c(ConvertCompressed1DToFile) - _c(ConvertCompressed2DToFile) - _c(ConvertCompressed3DToFile) - _c(Convert1DToData) - _c(Convert2DToData) - _c(Convert3DToData) - _c(ConvertCompressed1DToData) - _c(ConvertCompressed2DToData) - _c(ConvertCompressed3DToData) - _c(Levels) - #undef _c - /* LCOV_EXCL_STOP */ - - #ifdef MAGNUM_BUILD_DEPRECATED - /* LCOV_EXCL_START */ - CORRADE_IGNORE_DEPRECATED_PUSH - case ImageConverterFeature::ConvertLevels1DToData: - case ImageConverterFeature::ConvertLevels2DToData: - case ImageConverterFeature::ConvertLevels3DToData: - case ImageConverterFeature::ConvertCompressedLevels1DToData: - case ImageConverterFeature::ConvertCompressedLevels2DToData: - case ImageConverterFeature::ConvertCompressedLevels3DToData: - case ImageConverterFeature::ConvertLevels1DToFile: - case ImageConverterFeature::ConvertLevels2DToFile: - case ImageConverterFeature::ConvertLevels3DToFile: - case ImageConverterFeature::ConvertCompressedLevels1DToFile: - case ImageConverterFeature::ConvertCompressedLevels2DToFile: - case ImageConverterFeature::ConvertCompressedLevels3DToFile: - CORRADE_INTERNAL_ASSERT_UNREACHABLE(); - CORRADE_IGNORE_DEPRECATED_POP - /* LCOV_EXCL_STOP */ - #endif - } - - return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedInt(value) << Debug::nospace << (packed ? "" : ")"); -} - -Debug& operator<<(Debug& debug, const ImageConverterFeatures value) { - return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Trade::ImageConverterFeatures{}", { - ImageConverterFeature::Convert1D, - ImageConverterFeature::Convert2D, - ImageConverterFeature::Convert3D, - ImageConverterFeature::ConvertCompressed1D, - ImageConverterFeature::ConvertCompressed2D, - ImageConverterFeature::ConvertCompressed3D, - ImageConverterFeature::Convert1DToData, - ImageConverterFeature::Convert2DToData, - ImageConverterFeature::Convert3DToData, - ImageConverterFeature::ConvertCompressed1DToData, - ImageConverterFeature::ConvertCompressed2DToData, - ImageConverterFeature::ConvertCompressed3DToData, - /* These 6 are implied by Convert[Compressed]ToData, so have to be - after */ - ImageConverterFeature::Convert1DToFile, - ImageConverterFeature::Convert2DToFile, - ImageConverterFeature::Convert3DToFile, - ImageConverterFeature::ConvertCompressed1DToFile, - ImageConverterFeature::ConvertCompressed2DToFile, - ImageConverterFeature::ConvertCompressed3DToFile, - ImageConverterFeature::Levels}); -} - -Debug& operator<<(Debug& debug, const ImageConverterFlag value) { - debug << "Trade::ImageConverterFlag" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case ImageConverterFlag::v: return debug << "::" #v; - _c(Quiet) - _c(Verbose) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << "(" << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << ")"; -} - -Debug& operator<<(Debug& debug, const ImageConverterFlags value) { - return Containers::enumSetDebugOutput(debug, value, "Trade::ImageConverterFlags{}", { - ImageConverterFlag::Quiet, - ImageConverterFlag::Verbose}); -} - }} diff --git a/src/Magnum/Trade/AbstractImporter.cpp b/src/Magnum/Trade/AbstractImporter.cpp index 9a517e603..6a5c988d4 100644 --- a/src/Magnum/Trade/AbstractImporter.cpp +++ b/src/Magnum/Trade/AbstractImporter.cpp @@ -81,6 +81,55 @@ namespace Magnum { namespace Trade { using namespace Containers::Literals; +Debug& operator<<(Debug& debug, const ImporterFeature value) { + const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; + + if(!packed) + debug << "Trade::ImporterFeature" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case ImporterFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; + _c(OpenData) + _c(OpenState) + _c(FileCallback) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << (packed ? "" : ")"); +} + +Debug& operator<<(Debug& debug, const ImporterFeatures value) { + return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Trade::ImporterFeatures{}", { + ImporterFeature::OpenData, + ImporterFeature::OpenState, + ImporterFeature::FileCallback + }); +} + +Debug& operator<<(Debug& debug, const ImporterFlag value) { + debug << "Trade::ImporterFlag" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case ImporterFlag::v: return debug << "::" #v; + _c(Quiet) + _c(Verbose) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << "(" << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << ")"; +} + +Debug& operator<<(Debug& debug, const ImporterFlags value) { + return Containers::enumSetDebugOutput(debug, value, "Trade::ImporterFlags{}", { + ImporterFlag::Quiet, + ImporterFlag::Verbose + }); +} + Containers::StringView AbstractImporter::pluginInterface() { return MAGNUM_TRADE_ABSTRACTIMPORTER_PLUGIN_INTERFACE ""_s; } @@ -1618,51 +1667,4 @@ const void* AbstractImporter::importerState() const { const void* AbstractImporter::doImporterState() const { return nullptr; } -Debug& operator<<(Debug& debug, const ImporterFeature value) { - const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; - - if(!packed) - debug << "Trade::ImporterFeature" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case ImporterFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; - _c(OpenData) - _c(OpenState) - _c(FileCallback) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << (packed ? "" : ")"); -} - -Debug& operator<<(Debug& debug, const ImporterFeatures value) { - return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Trade::ImporterFeatures{}", { - ImporterFeature::OpenData, - ImporterFeature::OpenState, - ImporterFeature::FileCallback}); -} - -Debug& operator<<(Debug& debug, const ImporterFlag value) { - debug << "Trade::ImporterFlag" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case ImporterFlag::v: return debug << "::" #v; - _c(Quiet) - _c(Verbose) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << "(" << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << ")"; -} - -Debug& operator<<(Debug& debug, const ImporterFlags value) { - return Containers::enumSetDebugOutput(debug, value, "Trade::ImporterFlags{}", { - ImporterFlag::Quiet, - ImporterFlag::Verbose}); -} - }} diff --git a/src/Magnum/Trade/AbstractSceneConverter.cpp b/src/Magnum/Trade/AbstractSceneConverter.cpp index ccda3c15b..c5b5b73cf 100644 --- a/src/Magnum/Trade/AbstractSceneConverter.cpp +++ b/src/Magnum/Trade/AbstractSceneConverter.cpp @@ -69,6 +69,150 @@ namespace Magnum { namespace Trade { using namespace Containers::Literals; +Debug& operator<<(Debug& debug, const SceneConverterFeature value) { + const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; + + if(!packed) + debug << "Trade::SceneConverterFeature" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case SceneConverterFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; + _c(ConvertMesh) + _c(ConvertMeshInPlace) + _c(ConvertMeshToData) + _c(ConvertMeshToFile) + _c(ConvertMultiple) + _c(ConvertMultipleToData) + _c(ConvertMultipleToFile) + _c(AddScenes) + _c(AddAnimations) + _c(AddLights) + _c(AddCameras) + _c(AddSkins2D) + _c(AddSkins3D) + _c(AddMeshes) + _c(AddMaterials) + _c(AddTextures) + _c(AddImages1D) + _c(AddImages2D) + _c(AddImages3D) + _c(AddCompressedImages1D) + _c(AddCompressedImages2D) + _c(AddCompressedImages3D) + _c(MeshLevels) + _c(ImageLevels) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedInt(value) << Debug::nospace << (packed ? "" : ")"); +} + +Debug& operator<<(Debug& debug, const SceneConverterFeatures value) { + return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Trade::SceneConverterFeatures{}", { + SceneConverterFeature::ConvertMesh, + SceneConverterFeature::ConvertMeshInPlace, + SceneConverterFeature::ConvertMeshToData, + /* Implied by ConvertMeshToData, has to be after */ + SceneConverterFeature::ConvertMeshToFile, + SceneConverterFeature::ConvertMultiple, + SceneConverterFeature::ConvertMultipleToData, + /* Implied by ConvertMultipleToData, has to be after */ + SceneConverterFeature::ConvertMultipleToFile, + SceneConverterFeature::AddScenes, + SceneConverterFeature::AddAnimations, + SceneConverterFeature::AddLights, + SceneConverterFeature::AddCameras, + SceneConverterFeature::AddSkins2D, + SceneConverterFeature::AddSkins3D, + SceneConverterFeature::AddMeshes, + SceneConverterFeature::AddMaterials, + SceneConverterFeature::AddTextures, + SceneConverterFeature::AddImages1D, + SceneConverterFeature::AddImages2D, + SceneConverterFeature::AddImages3D, + SceneConverterFeature::AddCompressedImages1D, + SceneConverterFeature::AddCompressedImages2D, + SceneConverterFeature::AddCompressedImages3D, + SceneConverterFeature::MeshLevels, + SceneConverterFeature::ImageLevels + }); +} + +Debug& operator<<(Debug& debug, const SceneConverterFlag value) { + debug << "Trade::SceneConverterFlag" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case SceneConverterFlag::v: return debug << "::" #v; + _c(Quiet) + _c(Verbose) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << "(" << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << ")"; +} + +Debug& operator<<(Debug& debug, const SceneConverterFlags value) { + return Containers::enumSetDebugOutput(debug, value, "Trade::SceneConverterFlags{}", { + SceneConverterFlag::Quiet, + SceneConverterFlag::Verbose + }); +} + +Debug& operator<<(Debug& debug, const SceneContent value) { + const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; + + if(!packed) + debug << "Trade::SceneContent" << Debug::nospace; + + switch(value) { + /* LCOV_EXCL_START */ + #define _c(v) case SceneContent::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; + _c(Scenes) + _c(Animations) + _c(Lights) + _c(Cameras) + _c(Skins2D) + _c(Skins3D) + _c(Meshes) + _c(Materials) + _c(Textures) + _c(Images1D) + _c(Images2D) + _c(Images3D) + _c(MeshLevels) + _c(ImageLevels) + _c(Names) + #undef _c + /* LCOV_EXCL_STOP */ + } + + return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedInt(value) << Debug::nospace << (packed ? "" : ")"); +} + +Debug& operator<<(Debug& debug, const SceneContents value) { + return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Trade::SceneContents{}", { + SceneContent::Scenes, + SceneContent::Animations, + SceneContent::Lights, + SceneContent::Cameras, + SceneContent::Skins2D, + SceneContent::Skins3D, + SceneContent::Meshes, + SceneContent::Materials, + SceneContent::Textures, + SceneContent::Images1D, + SceneContent::Images2D, + SceneContent::Images3D, + SceneContent::MeshLevels, + SceneContent::ImageLevels, + SceneContent::Names + }); +} + SceneContents sceneContentsFor(const AbstractImporter& importer) { CORRADE_ASSERT(importer.isOpened(), "Trade::sceneContentsFor(): the importer is not opened", {}); @@ -1716,145 +1860,4 @@ bool AbstractSceneConverter::addSupportedImporterContents(AbstractImporter& impo return addImporterContentsInternal(importer, used, true); } -Debug& operator<<(Debug& debug, const SceneConverterFeature value) { - const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; - - if(!packed) - debug << "Trade::SceneConverterFeature" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case SceneConverterFeature::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; - _c(ConvertMesh) - _c(ConvertMeshInPlace) - _c(ConvertMeshToData) - _c(ConvertMeshToFile) - _c(ConvertMultiple) - _c(ConvertMultipleToData) - _c(ConvertMultipleToFile) - _c(AddScenes) - _c(AddAnimations) - _c(AddLights) - _c(AddCameras) - _c(AddSkins2D) - _c(AddSkins3D) - _c(AddMeshes) - _c(AddMaterials) - _c(AddTextures) - _c(AddImages1D) - _c(AddImages2D) - _c(AddImages3D) - _c(AddCompressedImages1D) - _c(AddCompressedImages2D) - _c(AddCompressedImages3D) - _c(MeshLevels) - _c(ImageLevels) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedInt(value) << Debug::nospace << (packed ? "" : ")"); -} - -Debug& operator<<(Debug& debug, const SceneConverterFeatures value) { - return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Trade::SceneConverterFeatures{}", { - SceneConverterFeature::ConvertMesh, - SceneConverterFeature::ConvertMeshInPlace, - SceneConverterFeature::ConvertMeshToData, - /* Implied by ConvertMeshToData, has to be after */ - SceneConverterFeature::ConvertMeshToFile, - SceneConverterFeature::ConvertMultiple, - SceneConverterFeature::ConvertMultipleToData, - /* Implied by ConvertMultipleToData, has to be after */ - SceneConverterFeature::ConvertMultipleToFile, - SceneConverterFeature::AddScenes, - SceneConverterFeature::AddAnimations, - SceneConverterFeature::AddLights, - SceneConverterFeature::AddCameras, - SceneConverterFeature::AddSkins2D, - SceneConverterFeature::AddSkins3D, - SceneConverterFeature::AddMeshes, - SceneConverterFeature::AddMaterials, - SceneConverterFeature::AddTextures, - SceneConverterFeature::AddImages1D, - SceneConverterFeature::AddImages2D, - SceneConverterFeature::AddImages3D, - SceneConverterFeature::AddCompressedImages1D, - SceneConverterFeature::AddCompressedImages2D, - SceneConverterFeature::AddCompressedImages3D, - SceneConverterFeature::MeshLevels, - SceneConverterFeature::ImageLevels}); -} - -Debug& operator<<(Debug& debug, const SceneConverterFlag value) { - debug << "Trade::SceneConverterFlag" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case SceneConverterFlag::v: return debug << "::" #v; - _c(Quiet) - _c(Verbose) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << "(" << Debug::nospace << Debug::hex << UnsignedByte(value) << Debug::nospace << ")"; -} - -Debug& operator<<(Debug& debug, const SceneConverterFlags value) { - return Containers::enumSetDebugOutput(debug, value, "Trade::SceneConverterFlags{}", { - SceneConverterFlag::Quiet, - SceneConverterFlag::Verbose}); -} - -Debug& operator<<(Debug& debug, const SceneContent value) { - const bool packed = debug.immediateFlags() >= Debug::Flag::Packed; - - if(!packed) - debug << "Trade::SceneContent" << Debug::nospace; - - switch(value) { - /* LCOV_EXCL_START */ - #define _c(v) case SceneContent::v: return debug << (packed ? "" : "::") << Debug::nospace << #v; - _c(Scenes) - _c(Animations) - _c(Lights) - _c(Cameras) - _c(Skins2D) - _c(Skins3D) - _c(Meshes) - _c(Materials) - _c(Textures) - _c(Images1D) - _c(Images2D) - _c(Images3D) - _c(MeshLevels) - _c(ImageLevels) - _c(Names) - #undef _c - /* LCOV_EXCL_STOP */ - } - - return debug << (packed ? "" : "(") << Debug::nospace << Debug::hex << UnsignedInt(value) << Debug::nospace << (packed ? "" : ")"); -} - -Debug& operator<<(Debug& debug, const SceneContents value) { - return Containers::enumSetDebugOutput(debug, value, debug.immediateFlags() >= Debug::Flag::Packed ? "{}" : "Trade::SceneContents{}", { - SceneContent::Scenes, - SceneContent::Animations, - SceneContent::Lights, - SceneContent::Cameras, - SceneContent::Skins2D, - SceneContent::Skins3D, - SceneContent::Meshes, - SceneContent::Materials, - SceneContent::Textures, - SceneContent::Images1D, - SceneContent::Images2D, - SceneContent::Images3D, - SceneContent::MeshLevels, - SceneContent::ImageLevels, - SceneContent::Names}); -} - }} diff --git a/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp b/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp index bdd4e755b..24cff1730 100644 --- a/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp @@ -46,6 +46,18 @@ namespace Magnum { namespace Trade { namespace Test { namespace { struct AbstractImageConverterTest: TestSuite::Tester { explicit AbstractImageConverterTest(); + void debugFeature(); + void debugFeaturePacked(); + #ifdef MAGNUM_BUILD_DEPRECATED + void debugFeatureDeprecated(); + void debugFeatureDeprecatedPacked(); + #endif + void debugFeatures(); + void debugFeaturesPacked(); + void debugFeaturesSupersets(); + void debugFlag(); + void debugFlags(); + void construct(); void constructWithPluginManagerReference(); @@ -319,22 +331,22 @@ struct AbstractImageConverterTest: TestSuite::Tester { void convertCompressed3DToFileThroughLevelsFailed(); /* Conversion of a compressed image to a file through levels and through data not tested, as that should just work transitively */ - - void debugFeature(); - void debugFeaturePacked(); - #ifdef MAGNUM_BUILD_DEPRECATED - void debugFeatureDeprecated(); - void debugFeatureDeprecatedPacked(); - #endif - void debugFeatures(); - void debugFeaturesPacked(); - void debugFeaturesSupersets(); - void debugFlag(); - void debugFlags(); }; AbstractImageConverterTest::AbstractImageConverterTest() { - addTests({&AbstractImageConverterTest::construct, + addTests({&AbstractImageConverterTest::debugFeature, + &AbstractImageConverterTest::debugFeaturePacked, + #ifdef MAGNUM_BUILD_DEPRECATED + &AbstractImageConverterTest::debugFeatureDeprecated, + &AbstractImageConverterTest::debugFeatureDeprecatedPacked, + #endif + &AbstractImageConverterTest::debugFeatures, + &AbstractImageConverterTest::debugFeaturesPacked, + &AbstractImageConverterTest::debugFeaturesSupersets, + &AbstractImageConverterTest::debugFlag, + &AbstractImageConverterTest::debugFlags, + + &AbstractImageConverterTest::construct, &AbstractImageConverterTest::constructWithPluginManagerReference, &AbstractImageConverterTest::setFlags, @@ -581,24 +593,92 @@ AbstractImageConverterTest::AbstractImageConverterTest() { &AbstractImageConverterTest::convertCompressed3DToFileThroughLevels, &AbstractImageConverterTest::convertCompressed1DToFileThroughLevelsFailed, &AbstractImageConverterTest::convertCompressed2DToFileThroughLevelsFailed, - &AbstractImageConverterTest::convertCompressed3DToFileThroughLevelsFailed, - - &AbstractImageConverterTest::debugFeature, - &AbstractImageConverterTest::debugFeaturePacked, - #ifdef MAGNUM_BUILD_DEPRECATED - &AbstractImageConverterTest::debugFeatureDeprecated, - &AbstractImageConverterTest::debugFeatureDeprecatedPacked, - #endif - &AbstractImageConverterTest::debugFeatures, - &AbstractImageConverterTest::debugFeaturesPacked, - &AbstractImageConverterTest::debugFeaturesSupersets, - &AbstractImageConverterTest::debugFlag, - &AbstractImageConverterTest::debugFlags}); + &AbstractImageConverterTest::convertCompressed3DToFileThroughLevelsFailed}); /* Create testing dir */ Utility::Path::make(TRADE_TEST_OUTPUT_DIR); } +void AbstractImageConverterTest::debugFeature() { + Containers::String out; + + Debug{&out} << ImageConverterFeature::ConvertCompressed2D << ImageConverterFeature(0xdeadbeef); + CORRADE_COMPARE(out, "Trade::ImageConverterFeature::ConvertCompressed2D Trade::ImageConverterFeature(0xdeadbeef)\n"); +} + +void AbstractImageConverterTest::debugFeaturePacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << ImageConverterFeature::ConvertCompressed2D << Debug::packed << ImageConverterFeature(0xdeadbeef) << ImageConverterFeature::Convert3D; + CORRADE_COMPARE(out, "ConvertCompressed2D 0xdeadbeef Trade::ImageConverterFeature::Convert3D\n"); +} + +#ifdef MAGNUM_BUILD_DEPRECATED +void AbstractImageConverterTest::debugFeatureDeprecated() { + Containers::String out; + + CORRADE_IGNORE_DEPRECATED_PUSH + Debug{&out} << ImageConverterFeature::ConvertCompressedLevels1DToData << ImageConverterFeature::ConvertLevels3DToFile; + CORRADE_IGNORE_DEPRECATED_POP + CORRADE_COMPARE(out, "Trade::ImageConverterFeature::ConvertCompressed1DToData|Trade::ImageConverterFeature::Levels Trade::ImageConverterFeature::Convert3DToFile|Trade::ImageConverterFeature::Levels\n"); +} + +void AbstractImageConverterTest::debugFeatureDeprecatedPacked() { + Containers::String out; + + CORRADE_IGNORE_DEPRECATED_PUSH + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << ImageConverterFeature::ConvertCompressedLevels1DToData << Debug::packed << ImageConverterFeature::ConvertLevels3DToFile << ImageConverterFeature::Convert1D; + CORRADE_IGNORE_DEPRECATED_POP + CORRADE_COMPARE(out, "ConvertCompressed1DToData|Levels Convert3DToFile|Levels Trade::ImageConverterFeature::Convert1D\n"); +} +#endif + +void AbstractImageConverterTest::debugFeatures() { + Containers::String out; + + Debug{&out} << (ImageConverterFeature::Convert2DToData|ImageConverterFeature::ConvertCompressed2DToFile) << ImageConverterFeatures{}; + CORRADE_COMPARE(out, "Trade::ImageConverterFeature::Convert2DToData|Trade::ImageConverterFeature::ConvertCompressed2DToFile Trade::ImageConverterFeatures{}\n"); +} + +void AbstractImageConverterTest::debugFeaturesPacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << (ImageConverterFeature::Convert2DToData|ImageConverterFeature::ConvertCompressed2DToFile) << Debug::packed << ImageConverterFeatures{} << ImageConverterFeature::Convert1D; + CORRADE_COMPARE(out, "Convert2DToData|ConvertCompressed2DToFile {} Trade::ImageConverterFeature::Convert1D\n"); +} + +void AbstractImageConverterTest::debugFeaturesSupersets() { + /* Convert*DToData is a superset of Convert*DToFile, so only one should be + printed */ + { + Containers::String out; + Debug{&out} << (ImageConverterFeature::Convert2DToData|ImageConverterFeature::Convert2DToFile); + CORRADE_COMPARE(out, "Trade::ImageConverterFeature::Convert2DToData\n"); + + /* ConvertCompressed*DToData is a superset of ConvertCompressed*DToFile, so + only one should be printed */ + } { + Containers::String out; + Debug{&out} << (ImageConverterFeature::ConvertCompressed1DToData|ImageConverterFeature::ConvertCompressed1DToFile); + CORRADE_COMPARE(out, "Trade::ImageConverterFeature::ConvertCompressed1DToData\n"); + } +} + +void AbstractImageConverterTest::debugFlag() { + Containers::String out; + + Debug{&out} << ImageConverterFlag::Verbose << ImageConverterFlag(0xf0); + CORRADE_COMPARE(out, "Trade::ImageConverterFlag::Verbose Trade::ImageConverterFlag(0xf0)\n"); +} + +void AbstractImageConverterTest::debugFlags() { + Containers::String out; + + Debug{&out} << (ImageConverterFlag::Verbose|ImageConverterFlag(0xf0)) << ImageConverterFlags{}; + CORRADE_COMPARE(out, "Trade::ImageConverterFlag::Verbose|Trade::ImageConverterFlag(0xf0) Trade::ImageConverterFlags{}\n"); +} + void AbstractImageConverterTest::construct() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return {}; } @@ -5280,86 +5360,6 @@ void AbstractImageConverterTest::convertCompressed3DToFileThroughLevelsFailed() CORRADE_COMPARE(out, ""); } -void AbstractImageConverterTest::debugFeature() { - Containers::String out; - - Debug{&out} << ImageConverterFeature::ConvertCompressed2D << ImageConverterFeature(0xdeadbeef); - CORRADE_COMPARE(out, "Trade::ImageConverterFeature::ConvertCompressed2D Trade::ImageConverterFeature(0xdeadbeef)\n"); -} - -void AbstractImageConverterTest::debugFeaturePacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << ImageConverterFeature::ConvertCompressed2D << Debug::packed << ImageConverterFeature(0xdeadbeef) << ImageConverterFeature::Convert3D; - CORRADE_COMPARE(out, "ConvertCompressed2D 0xdeadbeef Trade::ImageConverterFeature::Convert3D\n"); -} - -#ifdef MAGNUM_BUILD_DEPRECATED -void AbstractImageConverterTest::debugFeatureDeprecated() { - Containers::String out; - - CORRADE_IGNORE_DEPRECATED_PUSH - Debug{&out} << ImageConverterFeature::ConvertCompressedLevels1DToData << ImageConverterFeature::ConvertLevels3DToFile; - CORRADE_IGNORE_DEPRECATED_POP - CORRADE_COMPARE(out, "Trade::ImageConverterFeature::ConvertCompressed1DToData|Trade::ImageConverterFeature::Levels Trade::ImageConverterFeature::Convert3DToFile|Trade::ImageConverterFeature::Levels\n"); -} - -void AbstractImageConverterTest::debugFeatureDeprecatedPacked() { - Containers::String out; - - CORRADE_IGNORE_DEPRECATED_PUSH - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << ImageConverterFeature::ConvertCompressedLevels1DToData << Debug::packed << ImageConverterFeature::ConvertLevels3DToFile << ImageConverterFeature::Convert1D; - CORRADE_IGNORE_DEPRECATED_POP - CORRADE_COMPARE(out, "ConvertCompressed1DToData|Levels Convert3DToFile|Levels Trade::ImageConverterFeature::Convert1D\n"); -} -#endif - -void AbstractImageConverterTest::debugFeatures() { - Containers::String out; - - Debug{&out} << (ImageConverterFeature::Convert2DToData|ImageConverterFeature::ConvertCompressed2DToFile) << ImageConverterFeatures{}; - CORRADE_COMPARE(out, "Trade::ImageConverterFeature::Convert2DToData|Trade::ImageConverterFeature::ConvertCompressed2DToFile Trade::ImageConverterFeatures{}\n"); -} - -void AbstractImageConverterTest::debugFeaturesPacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << (ImageConverterFeature::Convert2DToData|ImageConverterFeature::ConvertCompressed2DToFile) << Debug::packed << ImageConverterFeatures{} << ImageConverterFeature::Convert1D; - CORRADE_COMPARE(out, "Convert2DToData|ConvertCompressed2DToFile {} Trade::ImageConverterFeature::Convert1D\n"); -} - -void AbstractImageConverterTest::debugFeaturesSupersets() { - /* Convert*DToData is a superset of Convert*DToFile, so only one should be - printed */ - { - Containers::String out; - Debug{&out} << (ImageConverterFeature::Convert2DToData|ImageConverterFeature::Convert2DToFile); - CORRADE_COMPARE(out, "Trade::ImageConverterFeature::Convert2DToData\n"); - - /* ConvertCompressed*DToData is a superset of ConvertCompressed*DToFile, so - only one should be printed */ - } { - Containers::String out; - Debug{&out} << (ImageConverterFeature::ConvertCompressed1DToData|ImageConverterFeature::ConvertCompressed1DToFile); - CORRADE_COMPARE(out, "Trade::ImageConverterFeature::ConvertCompressed1DToData\n"); - } -} - -void AbstractImageConverterTest::debugFlag() { - Containers::String out; - - Debug{&out} << ImageConverterFlag::Verbose << ImageConverterFlag(0xf0); - CORRADE_COMPARE(out, "Trade::ImageConverterFlag::Verbose Trade::ImageConverterFlag(0xf0)\n"); -} - -void AbstractImageConverterTest::debugFlags() { - Containers::String out; - - Debug{&out} << (ImageConverterFlag::Verbose|ImageConverterFlag(0xf0)) << ImageConverterFlags{}; - CORRADE_COMPARE(out, "Trade::ImageConverterFlag::Verbose|Trade::ImageConverterFlag(0xf0) Trade::ImageConverterFlags{}\n"); -} - }}}} CORRADE_TEST_MAIN(Magnum::Trade::Test::AbstractImageConverterTest) diff --git a/src/Magnum/Trade/Test/AbstractImporterTest.cpp b/src/Magnum/Trade/Test/AbstractImporterTest.cpp index c912d5b9f..291939020 100644 --- a/src/Magnum/Trade/Test/AbstractImporterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractImporterTest.cpp @@ -73,6 +73,13 @@ namespace Magnum { namespace Trade { namespace Test { namespace { struct AbstractImporterTest: TestSuite::Tester { explicit AbstractImporterTest(); + void debugFeature(); + void debugFeaturePacked(); + void debugFeatures(); + void debugFeaturesPacked(); + void debugFlag(); + void debugFlags(); + void construct(); void constructWithPluginManagerReference(); @@ -382,13 +389,6 @@ struct AbstractImporterTest: TestSuite::Tester { void importerState(); void importerStateNotImplemented(); void importerStateNoFile(); - - void debugFeature(); - void debugFeaturePacked(); - void debugFeatures(); - void debugFeaturesPacked(); - void debugFlag(); - void debugFlags(); }; constexpr struct { @@ -402,7 +402,14 @@ constexpr struct { using namespace Math::Literals; AbstractImporterTest::AbstractImporterTest() { - addTests({&AbstractImporterTest::construct, + addTests({&AbstractImporterTest::debugFeature, + &AbstractImporterTest::debugFeaturePacked, + &AbstractImporterTest::debugFeatures, + &AbstractImporterTest::debugFeaturesPacked, + &AbstractImporterTest::debugFlag, + &AbstractImporterTest::debugFlags, + + &AbstractImporterTest::construct, &AbstractImporterTest::constructWithPluginManagerReference, &AbstractImporterTest::setFlags, @@ -719,14 +726,49 @@ AbstractImporterTest::AbstractImporterTest() { &AbstractImporterTest::importerState, &AbstractImporterTest::importerStateNotImplemented, - &AbstractImporterTest::importerStateNoFile, + &AbstractImporterTest::importerStateNoFile}); +} - &AbstractImporterTest::debugFeature, - &AbstractImporterTest::debugFeaturePacked, - &AbstractImporterTest::debugFeatures, - &AbstractImporterTest::debugFeaturesPacked, - &AbstractImporterTest::debugFlag, - &AbstractImporterTest::debugFlags}); +void AbstractImporterTest::debugFeature() { + Containers::String out; + + Debug{&out} << ImporterFeature::OpenData << ImporterFeature(0xf0); + CORRADE_COMPARE(out, "Trade::ImporterFeature::OpenData Trade::ImporterFeature(0xf0)\n"); +} + +void AbstractImporterTest::debugFeaturePacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << ImporterFeature::OpenData << Debug::packed << ImporterFeature(0xf0) << ImporterFeature::FileCallback; + CORRADE_COMPARE(out, "OpenData 0xf0 Trade::ImporterFeature::FileCallback\n"); +} + +void AbstractImporterTest::debugFeatures() { + Containers::String out; + + Debug{&out} << (ImporterFeature::OpenData|ImporterFeature::OpenState) << ImporterFeatures{}; + CORRADE_COMPARE(out, "Trade::ImporterFeature::OpenData|Trade::ImporterFeature::OpenState Trade::ImporterFeatures{}\n"); +} + +void AbstractImporterTest::debugFeaturesPacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << (ImporterFeature::OpenData|ImporterFeature::OpenState) << Debug::packed << ImporterFeatures{} << ImporterFeature::FileCallback; + CORRADE_COMPARE(out, "OpenData|OpenState {} Trade::ImporterFeature::FileCallback\n"); +} + +void AbstractImporterTest::debugFlag() { + Containers::String out; + + Debug{&out} << ImporterFlag::Verbose << ImporterFlag(0xf0); + CORRADE_COMPARE(out, "Trade::ImporterFlag::Verbose Trade::ImporterFlag(0xf0)\n"); +} + +void AbstractImporterTest::debugFlags() { + Containers::String out; + + Debug{&out} << (ImporterFlag::Verbose|ImporterFlag(0xf0)) << ImporterFlags{}; + CORRADE_COMPARE(out, "Trade::ImporterFlag::Verbose|Trade::ImporterFlag(0xf0) Trade::ImporterFlags{}\n"); } void AbstractImporterTest::construct() { @@ -8071,48 +8113,6 @@ void AbstractImporterTest::importerStateNoFile() { CORRADE_COMPARE(out, "Trade::AbstractImporter::importerState(): no file opened\n"); } -void AbstractImporterTest::debugFeature() { - Containers::String out; - - Debug{&out} << ImporterFeature::OpenData << ImporterFeature(0xf0); - CORRADE_COMPARE(out, "Trade::ImporterFeature::OpenData Trade::ImporterFeature(0xf0)\n"); -} - -void AbstractImporterTest::debugFeaturePacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << ImporterFeature::OpenData << Debug::packed << ImporterFeature(0xf0) << ImporterFeature::FileCallback; - CORRADE_COMPARE(out, "OpenData 0xf0 Trade::ImporterFeature::FileCallback\n"); -} - -void AbstractImporterTest::debugFeatures() { - Containers::String out; - - Debug{&out} << (ImporterFeature::OpenData|ImporterFeature::OpenState) << ImporterFeatures{}; - CORRADE_COMPARE(out, "Trade::ImporterFeature::OpenData|Trade::ImporterFeature::OpenState Trade::ImporterFeatures{}\n"); -} - -void AbstractImporterTest::debugFeaturesPacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << (ImporterFeature::OpenData|ImporterFeature::OpenState) << Debug::packed << ImporterFeatures{} << ImporterFeature::FileCallback; - CORRADE_COMPARE(out, "OpenData|OpenState {} Trade::ImporterFeature::FileCallback\n"); -} - -void AbstractImporterTest::debugFlag() { - Containers::String out; - - Debug{&out} << ImporterFlag::Verbose << ImporterFlag(0xf0); - CORRADE_COMPARE(out, "Trade::ImporterFlag::Verbose Trade::ImporterFlag(0xf0)\n"); -} - -void AbstractImporterTest::debugFlags() { - Containers::String out; - - Debug{&out} << (ImporterFlag::Verbose|ImporterFlag(0xf0)) << ImporterFlags{}; - CORRADE_COMPARE(out, "Trade::ImporterFlag::Verbose|Trade::ImporterFlag(0xf0) Trade::ImporterFlags{}\n"); -} - }}}} CORRADE_TEST_MAIN(Magnum::Trade::Test::AbstractImporterTest) diff --git a/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp b/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp index 852233820..92e988caf 100644 --- a/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp @@ -59,6 +59,18 @@ namespace Magnum { namespace Trade { namespace Test { namespace { struct AbstractSceneConverterTest: TestSuite::Tester { explicit AbstractSceneConverterTest(); + void debugFeature(); + void debugFeaturePacked(); + void debugFeatures(); + void debugFeaturesPacked(); + void debugFeaturesSupersets(); + void debugFlag(); + void debugFlags(); + void debugContent(); + void debugContentPacked(); + void debugContents(); + void debugContentsPacked(); + void sceneContentsForImporterNone(); void sceneContentsForImporterAll(); void sceneContentsForImporterNotOpened(); @@ -307,18 +319,6 @@ struct AbstractSceneConverterTest: TestSuite::Tester { void addSupportedImporterContents(); void addSupportedImporterContentsLevels(); void addSupportedImporterContentsNotOpened(); - - void debugFeature(); - void debugFeaturePacked(); - void debugFeatures(); - void debugFeaturesPacked(); - void debugFeaturesSupersets(); - void debugFlag(); - void debugFlags(); - void debugContent(); - void debugContentPacked(); - void debugContents(); - void debugContentsPacked(); }; using namespace Containers::Literals; @@ -631,7 +631,19 @@ const struct { }; AbstractSceneConverterTest::AbstractSceneConverterTest() { - addTests({&AbstractSceneConverterTest::sceneContentsForImporterNone, + addTests({&AbstractSceneConverterTest::debugFeature, + &AbstractSceneConverterTest::debugFeaturePacked, + &AbstractSceneConverterTest::debugFeatures, + &AbstractSceneConverterTest::debugFeaturesPacked, + &AbstractSceneConverterTest::debugFeaturesSupersets, + &AbstractSceneConverterTest::debugFlag, + &AbstractSceneConverterTest::debugFlags, + &AbstractSceneConverterTest::debugContent, + &AbstractSceneConverterTest::debugContentPacked, + &AbstractSceneConverterTest::debugContents, + &AbstractSceneConverterTest::debugContentsPacked, + + &AbstractSceneConverterTest::sceneContentsForImporterNone, &AbstractSceneConverterTest::sceneContentsForImporterAll, &AbstractSceneConverterTest::sceneContentsForImporterNotOpened, @@ -877,24 +889,99 @@ AbstractSceneConverterTest::AbstractSceneConverterTest() { Containers::arraySize(AddSupportedImporterContentsData)); addTests({&AbstractSceneConverterTest::addSupportedImporterContentsNotOpened, - &AbstractSceneConverterTest::addSupportedImporterContentsLevels, - - &AbstractSceneConverterTest::debugFeature, - &AbstractSceneConverterTest::debugFeaturePacked, - &AbstractSceneConverterTest::debugFeatures, - &AbstractSceneConverterTest::debugFeaturesPacked, - &AbstractSceneConverterTest::debugFeaturesSupersets, - &AbstractSceneConverterTest::debugFlag, - &AbstractSceneConverterTest::debugFlags, - &AbstractSceneConverterTest::debugContent, - &AbstractSceneConverterTest::debugContentPacked, - &AbstractSceneConverterTest::debugContents, - &AbstractSceneConverterTest::debugContentsPacked}); + &AbstractSceneConverterTest::addSupportedImporterContentsLevels}); /* Create testing dir */ Utility::Path::make(TRADE_TEST_OUTPUT_DIR); } +void AbstractSceneConverterTest::debugFeature() { + Containers::String out; + + Debug{&out} << SceneConverterFeature::ConvertMeshInPlace << SceneConverterFeature(0xdeaddead); + CORRADE_COMPARE(out, "Trade::SceneConverterFeature::ConvertMeshInPlace Trade::SceneConverterFeature(0xdeaddead)\n"); +} + +void AbstractSceneConverterTest::debugFeaturePacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << SceneConverterFeature::ConvertMeshInPlace << Debug::packed << SceneConverterFeature(0xdeaddead) << SceneConverterFeature::AddCameras; + CORRADE_COMPARE(out, "ConvertMeshInPlace 0xdeaddead Trade::SceneConverterFeature::AddCameras\n"); +} + +void AbstractSceneConverterTest::debugFeatures() { + Containers::String out; + + Debug{&out} << (SceneConverterFeature::ConvertMesh|SceneConverterFeature::ConvertMeshToFile) << SceneConverterFeatures{}; + CORRADE_COMPARE(out, "Trade::SceneConverterFeature::ConvertMesh|Trade::SceneConverterFeature::ConvertMeshToFile Trade::SceneConverterFeatures{}\n"); +} + +void AbstractSceneConverterTest::debugFeaturesPacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << (SceneConverterFeature::ConvertMesh|SceneConverterFeature::ConvertMeshToFile) << Debug::packed << SceneConverterFeatures{} << SceneConverterFeature::AddLights; + CORRADE_COMPARE(out, "ConvertMesh|ConvertMeshToFile {} Trade::SceneConverterFeature::AddLights\n"); +} + +void AbstractSceneConverterTest::debugFeaturesSupersets() { + /* ConvertMeshToData is a superset of ConvertMeshToFile, so only one should + be printed */ + { + Containers::String out; + Debug{&out} << (SceneConverterFeature::ConvertMeshToData|SceneConverterFeature::ConvertMeshToFile); + CORRADE_COMPARE(out, "Trade::SceneConverterFeature::ConvertMeshToData\n"); + + /* ConvertMultipleToData is a superset of ConvertMultipleToFile, so only + one should be printed */ + } { + Containers::String out; + Debug{&out} << (SceneConverterFeature::ConvertMultipleToData|SceneConverterFeature::ConvertMultipleToFile); + CORRADE_COMPARE(out, "Trade::SceneConverterFeature::ConvertMultipleToData\n"); + } +} + +void AbstractSceneConverterTest::debugFlag() { + Containers::String out; + + Debug{&out} << SceneConverterFlag::Verbose << SceneConverterFlag(0xf0); + CORRADE_COMPARE(out, "Trade::SceneConverterFlag::Verbose Trade::SceneConverterFlag(0xf0)\n"); +} + +void AbstractSceneConverterTest::debugFlags() { + Containers::String out; + + Debug{&out} << (SceneConverterFlag::Verbose|SceneConverterFlag(0xf0)) << SceneConverterFlags{}; + CORRADE_COMPARE(out, "Trade::SceneConverterFlag::Verbose|Trade::SceneConverterFlag(0xf0) Trade::SceneConverterFlags{}\n"); +} + +void AbstractSceneConverterTest::debugContent() { + Containers::String out; + + Debug{&out} << SceneContent::Skins3D << SceneContent(0xdeaddead); + CORRADE_COMPARE(out, "Trade::SceneContent::Skins3D Trade::SceneContent(0xdeaddead)\n"); +} + +void AbstractSceneConverterTest::debugContentPacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << SceneContent::Animations << Debug::packed << SceneContent(0xdeaddead) << SceneContent::Cameras; + CORRADE_COMPARE(out, "Animations 0xdeaddead Trade::SceneContent::Cameras\n"); +} + +void AbstractSceneConverterTest::debugContents() { + Containers::String out; + + Debug{&out} << (SceneContent::Animations|SceneContent::MeshLevels) << SceneConverterFeatures{}; + CORRADE_COMPARE(out, "Trade::SceneContent::Animations|Trade::SceneContent::MeshLevels Trade::SceneConverterFeatures{}\n"); +} + +void AbstractSceneConverterTest::debugContentsPacked() { + Containers::String out; + /* Last is not packed, ones before should not make any flags persistent */ + Debug{&out} << Debug::packed << (SceneContent::Animations|SceneContent::MeshLevels) << Debug::packed << SceneConverterFeatures{} << SceneContent::Lights; + CORRADE_COMPARE(out, "Animations|MeshLevels {} Trade::SceneContent::Lights\n"); +} + void AbstractSceneConverterTest::sceneContentsForImporterNone() { struct: AbstractImporter { ImporterFeatures doFeatures() const override { return {}; } @@ -7877,93 +7964,6 @@ void AbstractSceneConverterTest::addSupportedImporterContentsNotOpened() { CORRADE_COMPARE(out, "Trade::AbstractSceneConverter::addSupportedImporterContents(): the importer is not opened\n"); } -void AbstractSceneConverterTest::debugFeature() { - Containers::String out; - - Debug{&out} << SceneConverterFeature::ConvertMeshInPlace << SceneConverterFeature(0xdeaddead); - CORRADE_COMPARE(out, "Trade::SceneConverterFeature::ConvertMeshInPlace Trade::SceneConverterFeature(0xdeaddead)\n"); -} - -void AbstractSceneConverterTest::debugFeaturePacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << SceneConverterFeature::ConvertMeshInPlace << Debug::packed << SceneConverterFeature(0xdeaddead) << SceneConverterFeature::AddCameras; - CORRADE_COMPARE(out, "ConvertMeshInPlace 0xdeaddead Trade::SceneConverterFeature::AddCameras\n"); -} - -void AbstractSceneConverterTest::debugFeatures() { - Containers::String out; - - Debug{&out} << (SceneConverterFeature::ConvertMesh|SceneConverterFeature::ConvertMeshToFile) << SceneConverterFeatures{}; - CORRADE_COMPARE(out, "Trade::SceneConverterFeature::ConvertMesh|Trade::SceneConverterFeature::ConvertMeshToFile Trade::SceneConverterFeatures{}\n"); -} - -void AbstractSceneConverterTest::debugFeaturesPacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << (SceneConverterFeature::ConvertMesh|SceneConverterFeature::ConvertMeshToFile) << Debug::packed << SceneConverterFeatures{} << SceneConverterFeature::AddLights; - CORRADE_COMPARE(out, "ConvertMesh|ConvertMeshToFile {} Trade::SceneConverterFeature::AddLights\n"); -} - -void AbstractSceneConverterTest::debugFeaturesSupersets() { - /* ConvertMeshToData is a superset of ConvertMeshToFile, so only one should - be printed */ - { - Containers::String out; - Debug{&out} << (SceneConverterFeature::ConvertMeshToData|SceneConverterFeature::ConvertMeshToFile); - CORRADE_COMPARE(out, "Trade::SceneConverterFeature::ConvertMeshToData\n"); - - /* ConvertMultipleToData is a superset of ConvertMultipleToFile, so only - one should be printed */ - } { - Containers::String out; - Debug{&out} << (SceneConverterFeature::ConvertMultipleToData|SceneConverterFeature::ConvertMultipleToFile); - CORRADE_COMPARE(out, "Trade::SceneConverterFeature::ConvertMultipleToData\n"); - } -} - -void AbstractSceneConverterTest::debugFlag() { - Containers::String out; - - Debug{&out} << SceneConverterFlag::Verbose << SceneConverterFlag(0xf0); - CORRADE_COMPARE(out, "Trade::SceneConverterFlag::Verbose Trade::SceneConverterFlag(0xf0)\n"); -} - -void AbstractSceneConverterTest::debugFlags() { - Containers::String out; - - Debug{&out} << (SceneConverterFlag::Verbose|SceneConverterFlag(0xf0)) << SceneConverterFlags{}; - CORRADE_COMPARE(out, "Trade::SceneConverterFlag::Verbose|Trade::SceneConverterFlag(0xf0) Trade::SceneConverterFlags{}\n"); -} - -void AbstractSceneConverterTest::debugContent() { - Containers::String out; - - Debug{&out} << SceneContent::Skins3D << SceneContent(0xdeaddead); - CORRADE_COMPARE(out, "Trade::SceneContent::Skins3D Trade::SceneContent(0xdeaddead)\n"); -} - -void AbstractSceneConverterTest::debugContentPacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << SceneContent::Animations << Debug::packed << SceneContent(0xdeaddead) << SceneContent::Cameras; - CORRADE_COMPARE(out, "Animations 0xdeaddead Trade::SceneContent::Cameras\n"); -} - -void AbstractSceneConverterTest::debugContents() { - Containers::String out; - - Debug{&out} << (SceneContent::Animations|SceneContent::MeshLevels) << SceneConverterFeatures{}; - CORRADE_COMPARE(out, "Trade::SceneContent::Animations|Trade::SceneContent::MeshLevels Trade::SceneConverterFeatures{}\n"); -} - -void AbstractSceneConverterTest::debugContentsPacked() { - Containers::String out; - /* Last is not packed, ones before should not make any flags persistent */ - Debug{&out} << Debug::packed << (SceneContent::Animations|SceneContent::MeshLevels) << Debug::packed << SceneConverterFeatures{} << SceneContent::Lights; - CORRADE_COMPARE(out, "Animations|MeshLevels {} Trade::SceneContent::Lights\n"); -} - }}}} CORRADE_TEST_MAIN(Magnum::Trade::Test::AbstractSceneConverterTest)