Browse Source

Trade: debug output for AbstractImageConverter::Feature[s].

pull/191/head
Vladimír Vondruš 8 years ago
parent
commit
327f66183a
  1. 6
      doc/changelog.dox
  2. 29
      src/Magnum/Trade/AbstractImageConverter.cpp
  3. 6
      src/Magnum/Trade/AbstractImageConverter.h
  4. 23
      src/Magnum/Trade/Test/AbstractImageConverterTest.cpp

6
doc/changelog.dox

@ -74,8 +74,10 @@ See also:
separate translation / rotation / scaling specification instead of a
combined transformation matrix. See @ref Trade::ObjectData2D::transformation()
and @ref Trade::ObjectData3D::transformation() for more information.
- Debug output for @ref Trade::AbstractImporter::Feature enum and
@ref Trade::AbstractImporter::Features enum set
- Debug output for @ref Trade::AbstractImporter::Feature,
@ref Trade::AbstractImageConverter::Feature enums and
@ref Trade::AbstractImporter::Features,
@ref Trade::AbstractImageConverter::Features enum sets
@subsection changelog-latest-changes Changes and improvements

29
src/Magnum/Trade/AbstractImageConverter.cpp

@ -26,6 +26,7 @@
#include "AbstractImageConverter.h"
#include <Corrade/Containers/Array.h>
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/Directory.h>
@ -158,4 +159,32 @@ bool AbstractImageConverter::exportToFile(const ImageData2D& image, const std::s
return image.isCompressed() ? exportToFile(CompressedImageView2D(image), filename) : exportToFile(ImageView2D(image), filename);
}
Debug& operator<<(Debug& debug, const AbstractImageConverter::Feature value) {
switch(value) {
/* LCOV_EXCL_START */
#define _c(v) case AbstractImageConverter::Feature::v: return debug << "Trade::AbstractImageConverter::Feature::" #v;
_c(ConvertImage)
_c(ConvertCompressedImage)
_c(ConvertFile)
_c(ConvertCompressedFile)
_c(ConvertData)
_c(ConvertCompressedData)
#undef _c
/* LCOV_EXCL_STOP */
}
return debug << "Trade::AbstractImageConverter::Feature(" << Debug::nospace << reinterpret_cast<void*>(UnsignedByte(value)) << Debug::nospace << ")";
}
Debug& operator<<(Debug& debug, const AbstractImageConverter::Features value) {
return Containers::enumSetDebugOutput(debug, value, "Trade::AbstractImageConverter::Features{}", {
AbstractImageConverter::Feature::ConvertImage,
AbstractImageConverter::Feature::ConvertCompressedImage,
AbstractImageConverter::Feature::ConvertData,
AbstractImageConverter::Feature::ConvertCompressedData,
/* These are implied by Convert[Compressed]Data, so have to be last */
AbstractImageConverter::Feature::ConvertFile,
AbstractImageConverter::Feature::ConvertCompressedFile});
}
}}

6
src/Magnum/Trade/AbstractImageConverter.h

@ -275,6 +275,12 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract
CORRADE_ENUMSET_OPERATORS(AbstractImageConverter::Features)
/** @debugoperatorclassenum{AbstractImageConverter,AbstractImageConverter::Feature} */
MAGNUM_TRADE_EXPORT Debug& operator<<(Debug& debug, AbstractImageConverter::Feature value);
/** @debugoperatorclassenum{AbstractImageConverter,AbstractImageConverter::Features} */
MAGNUM_TRADE_EXPORT Debug& operator<<(Debug& debug, AbstractImageConverter::Features value);
}}
#endif

23
src/Magnum/Trade/Test/AbstractImageConverterTest.cpp

@ -23,6 +23,7 @@
DEALINGS IN THE SOFTWARE.
*/
#include <sstream>
#include <Corrade/Containers/Array.h>
#include <Corrade/TestSuite/Tester.h>
#include <Corrade/TestSuite/Compare/Container.h>
@ -46,13 +47,19 @@ class AbstractImageConverterTest: public TestSuite::Tester {
void exportToDataImageData();
void exportToFileImageData();
void debugFeature();
void debugFeatures();
};
AbstractImageConverterTest::AbstractImageConverterTest() {
addTests({&AbstractImageConverterTest::exportToFile,
&AbstractImageConverterTest::exportToDataImageData,
&AbstractImageConverterTest::exportToFileImageData});
&AbstractImageConverterTest::exportToFileImageData,
&AbstractImageConverterTest::debugFeature,
&AbstractImageConverterTest::debugFeatures});
/* Create testing dir */
Utility::Directory::mkpath(TRADE_TEST_OUTPUT_DIR);
@ -133,6 +140,20 @@ void AbstractImageConverterTest::exportToFileImageData() {
}
}
void AbstractImageConverterTest::debugFeature() {
std::ostringstream out;
Debug{&out} << AbstractImageConverter::Feature::ConvertCompressedImage << AbstractImageConverter::Feature(0xf0);
CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::Feature::ConvertCompressedImage Trade::AbstractImageConverter::Feature(0xf0)\n");
}
void AbstractImageConverterTest::debugFeatures() {
std::ostringstream out;
Debug{&out} << (AbstractImageConverter::Feature::ConvertData|AbstractImageConverter::Feature::ConvertCompressedFile) << AbstractImageConverter::Features{};
CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::Feature::ConvertData|Trade::AbstractImageConverter::Feature::ConvertCompressedFile Trade::AbstractImageConverter::Features{}\n");
}
}}}
CORRADE_TEST_MAIN(Magnum::Trade::Test::AbstractImageConverterTest)

Loading…
Cancel
Save