@ -26,6 +26,8 @@
# include <sstream>
# include <Corrade/Containers/Array.h>
# include <Corrade/Containers/Optional.h>
# include <Corrade/Containers/StringView.h>
# include <Corrade/Containers/StringStl.h>
# include <Corrade/TestSuite/Tester.h>
# include <Corrade/TestSuite/Compare/Container.h>
# include <Corrade/TestSuite/Compare/FileToString.h>
@ -53,37 +55,39 @@ struct AbstractImageConverterTest: TestSuite::Tester {
void thingNotSupported ( ) ;
void exportToImage ( ) ;
void exportToImage NotImplemented( ) ;
void exportToImage CustomDeleter( ) ;
void convert2D ( ) ;
void convert2D NotImplemented( ) ;
void convert2D CustomDeleter( ) ;
void exportToCompressedImage ( ) ;
void exportToCompressedImage NotImplemented( ) ;
void exportToCompressedImage CustomDeleter( ) ;
void convertCompressed2D ( ) ;
void convertCompressed2D NotImplemented( ) ;
void convertCompressed2D CustomDeleter( ) ;
void exportToData ( ) ;
void exportToDataNotImplemented ( ) ;
void exportToDataCustomDeleter ( ) ;
void convertImageData2D ( ) ;
void exportCompressed ToData( ) ;
void exportCompressed ToDataNotImplemented( ) ;
void exportCompressed ToDataCustomDeleter( ) ;
void convert2DToData ( ) ;
void convert2D ToDataNotImplemented( ) ;
void convert2D ToDataCustomDeleter( ) ;
void exportImageDataToData ( ) ;
void convertCompressed2DToData ( ) ;
void convertCompressed2DToDataNotImplemented ( ) ;
void convertCompressed2DToDataCustomDeleter ( ) ;
void exportToFile ( ) ;
void exportToFileThroughData ( ) ;
void exportToFileThroughDataFailed ( ) ;
void exportToFileThroughDataNotWritable ( ) ;
void exportToFileNotImplemented ( ) ;
void convertImageData2DToData ( ) ;
void exportCompressed ToFile( ) ;
void exportCompressed ToFileThroughData( ) ;
void exportCompressed ToFileThroughDataFailed( ) ;
void exportCompressed ToFileThroughDataNotWritable( ) ;
void exportCompressed ToFileNotImplemented( ) ;
void convert2DToFile ( ) ;
void convert2DToFileThroughData ( ) ;
void convert2DToFileThroughDataFailed ( ) ;
void convert2D ToFileThroughDataNotWritable( ) ;
void convert2D ToFileNotImplemented( ) ;
void exportImageDataToFile ( ) ;
void convertCompressed2DToFile ( ) ;
void convertCompressed2DToFileThroughData ( ) ;
void convertCompressed2DToFileThroughDataFailed ( ) ;
void convertCompressed2DToFileThroughDataNotWritable ( ) ;
void convertCompressed2DToFileNotImplemented ( ) ;
void convertImageData2DToFile ( ) ;
void debugFeature ( ) ;
void debugFeatures ( ) ;
@ -100,37 +104,39 @@ AbstractImageConverterTest::AbstractImageConverterTest() {
& AbstractImageConverterTest : : thingNotSupported ,
& AbstractImageConverterTest : : exportToImage ,
& AbstractImageConverterTest : : exportToImageNotImplemented ,
& AbstractImageConverterTest : : exportToImageCustomDeleter ,
& AbstractImageConverterTest : : convert2D ,
& AbstractImageConverterTest : : convert2DNotImplemented ,
& AbstractImageConverterTest : : convert2DCustomDeleter ,
& AbstractImageConverterTest : : convertCompressed2D ,
& AbstractImageConverterTest : : convertCompressed2DNotImplemented ,
& AbstractImageConverterTest : : convertCompressed2DCustomDeleter ,
& AbstractImageConverterTest : : exportToCompressedImage ,
& AbstractImageConverterTest : : exportToCompressedImageNotImplemented ,
& AbstractImageConverterTest : : exportToCompressedImageCustomDeleter ,
& AbstractImageConverterTest : : convertImageData2D ,
& AbstractImageConverterTest : : expo rtToData ,
& AbstractImageConverterTest : : expo rtToDataNotImplemented ,
& AbstractImageConverterTest : : expo rtToDataCustomDeleter ,
& AbstractImageConverterTest : : convert2DToData ,
& AbstractImageConverterTest : : conv ert2D ToDataNotImplemented,
& AbstractImageConverterTest : : conv ert2D ToDataCustomDeleter,
& AbstractImageConverterTest : : expo rtCompressedToData ,
& AbstractImageConverterTest : : expo rtCompressedToDataNotImplemented ,
& AbstractImageConverterTest : : expo rtCompressedToDataCustomDeleter ,
& AbstractImageConverterTest : : conv ertCompressed2D ToData,
& AbstractImageConverterTest : : conv ertCompressed2D ToDataNotImplemented,
& AbstractImageConverterTest : : conv ertCompressed2D ToDataCustomDeleter,
& AbstractImageConverterTest : : expo rtImageDataToData ,
& AbstractImageConverterTest : : conv ertImageData2D ToData,
& AbstractImageConverterTest : : expo rtToFile ,
& AbstractImageConverterTest : : expo rtToFileThroughData ,
& AbstractImageConverterTest : : expo rtToFileThroughDataFailed ,
& AbstractImageConverterTest : : expo rtToFileThroughDataNotWritable ,
& AbstractImageConverterTest : : expo rtToFileNotImplemented ,
& AbstractImageConverterTest : : conv ert2D ToFile,
& AbstractImageConverterTest : : conv ert2D ToFileThroughData,
& AbstractImageConverterTest : : conv ert2D ToFileThroughDataFailed,
& AbstractImageConverterTest : : conv ert2D ToFileThroughDataNotWritable,
& AbstractImageConverterTest : : conv ert2D ToFileNotImplemented,
& AbstractImageConverterTest : : expo rtCompressedToFile ,
& AbstractImageConverterTest : : expo rtCompressedToFileThroughData ,
& AbstractImageConverterTest : : expo rtCompressedToFileThroughDataFailed ,
& AbstractImageConverterTest : : expo rtCompressedToFileThroughDataNotWritable ,
& AbstractImageConverterTest : : expo rtCompressedToFileNotImplemented ,
& AbstractImageConverterTest : : conv ertCompressed2D ToFile,
& AbstractImageConverterTest : : conv ertCompressed2D ToFileThroughData,
& AbstractImageConverterTest : : conv ertCompressed2D ToFileThroughDataFailed,
& AbstractImageConverterTest : : conv ertCompressed2D ToFileThroughDataNotWritable,
& AbstractImageConverterTest : : conv ertCompressed2D ToFileNotImplemented,
& AbstractImageConverterTest : : expo rtImageDataToFile ,
& AbstractImageConverterTest : : conv ertImageData2D ToFile,
& AbstractImageConverterTest : : debugFeature ,
& AbstractImageConverterTest : : debugFeatures ,
@ -209,241 +215,271 @@ void AbstractImageConverterTest::thingNotSupported() {
std : : ostringstream out ;
Error redirectError { & out } ;
converter . expo rtToImage ( ImageView2D { PixelFormat : : R8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 24 } } ) ;
converter . exportToCompressedImage ( ImageView2D { PixelFormat : : R8 Unorm, { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 128 } } ) ;
converter . expo rtToData ( ImageView2D { PixelFormat : : RGBA8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 96 } } ) ;
converter . expo rtToData ( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 64 } } ) ;
converter . expo rtToFile ( ImageView2D { PixelFormat : : RGBA8Unorm , { 4 , 6 } , { nullptr , 96 } } , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ;
converter . expo rtToFile ( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , { nullptr , 64 } } , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ;
converter . conv ert( ImageView2D { PixelFormat : : R8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 24 } } ) ;
converter . convert ( Compressed ImageView2D{ Compressed PixelFormat: : Bc1RGBA Unorm, { 16 , 8 } , { nullptr , 64 } } ) ;
converter . conv ertToData( ImageView2D { PixelFormat : : RGBA8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 96 } } ) ;
converter . conv ertToData( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 64 } } ) ;
converter . conv ertToFile( ImageView2D { PixelFormat : : RGBA8Unorm , { 4 , 6 } , { nullptr , 96 } } , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ;
converter . conv ertToFile( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , { nullptr , 64 } } , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ;
CORRADE_COMPARE ( out . str ( ) ,
" Trade::AbstractImageConverter::exportToImage(): feature not supported \n "
" Trade::AbstractImageConverter::exportToCompressedImage(): feature not supported \n "
" Trade::AbstractImageConverter::exportToData(): feature not supported \n "
" Trade::AbstractImageConverter::exportToData(): feature not supported \n "
" Trade::AbstractImageConverter::exportToFile(): feature not supported \n "
" Trade::AbstractImageConverter::exportToFile(): feature not supported \n " ) ;
" Trade::AbstractImageConverter::convert(): 2D image conversion not supported \n "
" Trade::AbstractImageConverter::convert(): compressed 2D image conversion not supported \n "
" Trade::AbstractImageConverter::convertToData(): 2D image conversion not supported \n "
" Trade::AbstractImageConverter::convertToData(): compressed 2D image conversion not supported \n "
" Trade::AbstractImageConverter::convertToFile(): 2D image conversion not supported \n "
" Trade::AbstractImageConverter::convertToFile(): compressed 2D image conversion not supported \n " ) ;
}
void AbstractImageConverterTest : : exportToImage ( ) {
void AbstractImageConverterTest : : convert2D ( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertImage ; }
Containers : : Optional < Image2D > doExportToImage ( const ImageView2D & image ) override {
return Image2D { PixelFormat : : RGBA8Unorm , image . size ( ) , Containers : : Array < char > { 96 } } ;
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2D ; }
Containers : : Optional < ImageData 2D > doConvert ( const ImageView2D & image ) override {
return ImageData 2D { PixelFormat : : RGBA8Unorm , image . size ( ) , Containers : : Array < char > { 96 } } ;
}
} converter ;
Containers : : Optional < Image2D > actual = converter . expo rtToImage ( ImageView2D { PixelFormat : : R8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 24 } } ) ;
Containers : : Optional < ImageData 2D > actual = converter . conv ert( ImageView2D { PixelFormat : : R8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 24 } } ) ;
CORRADE_VERIFY ( actual ) ;
CORRADE_VERIFY ( ! actual - > isCompressed ( ) ) ;
CORRADE_COMPARE ( actual - > data ( ) . size ( ) , 96 ) ;
CORRADE_COMPARE ( actual - > size ( ) , ( Vector2i { 4 , 6 } ) ) ;
}
void AbstractImageConverterTest : : exportToImage NotImplemented( ) {
void AbstractImageConverterTest : : convert2D NotImplemented( ) {
# ifdef CORRADE_NO_ASSERT
CORRADE_SKIP ( " CORRADE_NO_ASSERT defined, can't test assertions " ) ;
# endif
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertImage ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2D ; }
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . expo rtToImage ( ImageView2D { PixelFormat : : R8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 128 } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::exportToImage(): feature advertised but not implemented \n " ) ;
converter . conv ert( ImageView2D { PixelFormat : : R8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 128 } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::convert(): 2D image conversion advertised but not implemented \n " ) ;
}
void AbstractImageConverterTest : : exportToImage CustomDeleter( ) {
void AbstractImageConverterTest : : convert2D CustomDeleter( ) {
# ifdef CORRADE_NO_ASSERT
CORRADE_SKIP ( " CORRADE_NO_ASSERT defined, can't test assertions " ) ;
# endif
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertImage ; }
Containers : : Optional < Image2D > doExportToImage ( const ImageView2D & ) override {
return Image2D { PixelFormat : : RGBA8Unorm , { } , Containers : : Array < char > { nullptr , 0 , [ ] ( char * , std : : size_t ) { } } } ;
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2D ; }
Containers : : Optional < ImageData 2D > doConvert ( const ImageView2D & ) override {
return ImageData 2D { PixelFormat : : RGBA8Unorm , { } , Containers : : Array < char > { nullptr , 0 , [ ] ( char * , std : : size_t ) { } } } ;
}
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . expo rtToImage ( ImageView2D { PixelFormat : : R8Unorm , { } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::expo rtToImage (): implementation is not allowed to use a custom Array deleter \n " ) ;
converter . conv ert( ImageView2D { PixelFormat : : R8Unorm , { } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::conv ert(): implementation is not allowed to use a custom Array deleter \n " ) ;
}
void AbstractImageConverterTest : : exportToCompressedImage ( ) {
void AbstractImageConverterTest : : convertCompressed2D ( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressedImage ; }
Containers : : Optional < Compressed Image2D> doExportToCompressedImage ( const ImageView2D & image ) override {
return CompressedImage2D { CompressedPixelFormat : : Bc1RGBAUnorm , image . size ( ) , Containers : : Array < char > { 64 } } ;
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2D ; }
Containers : : Optional < ImageData 2D > doConvert ( const Compressed ImageView2D& image ) override {
return ImageData2D { image . format ( ) , image . size ( ) , Containers : : Array < char > { 64 } } ;
}
} converter ;
Containers : : Optional < Compressed Image2D> actual = converter . exportToCompressedImage ( ImageView2D { PixelFormat : : R8 Unorm, { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 128 } } ) ;
Containers : : Optional < ImageData 2D > actual = converter . convert ( Compressed ImageView2D{ Compressed PixelFormat: : Bc1RGBA Unorm, { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 128 } } ) ;
CORRADE_VERIFY ( actual ) ;
CORRADE_VERIFY ( actual - > isCompressed ( ) ) ;
CORRADE_COMPARE ( actual - > data ( ) . size ( ) , 64 ) ;
CORRADE_COMPARE ( actual - > size ( ) , ( Vector2i { 16 , 8 } ) ) ;
}
void AbstractImageConverterTest : : exportToCompressedImage NotImplemented( ) {
void AbstractImageConverterTest : : convertCompressed2D NotImplemented( ) {
# ifdef CORRADE_NO_ASSERT
CORRADE_SKIP ( " CORRADE_NO_ASSERT defined, can't test assertions " ) ;
# endif
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressedImage ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2D ; }
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . exportToCompressedImage ( ImageView2D { PixelFormat : : R8 Unorm, { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 128 } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::exportToCompressedImage(): feature advertised but not implemented \n " ) ;
converter . convert ( Compressed ImageView2D{ Compressed PixelFormat: : Bc1RGBA Unorm, { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 128 } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::convert(): compressed 2D image conversion advertised but not implemented \n " ) ;
}
void AbstractImageConverterTest : : exportToCompressedImage CustomDeleter( ) {
void AbstractImageConverterTest : : convertCompressed2D CustomDeleter( ) {
# ifdef CORRADE_NO_ASSERT
CORRADE_SKIP ( " CORRADE_NO_ASSERT defined, can't test assertions " ) ;
# endif
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressedImage ; }
Containers : : Optional < Compressed Image2D> doExportToCompressedImage ( const ImageView2D & ) override {
return Compressed Image2D{ CompressedPixelFormat : : Bc1RGBAUnorm , { } , Containers : : Array < char > { nullptr , 0 , [ ] ( char * , std : : size_t ) { } } } ;
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2D ; }
Containers : : Optional < ImageData 2D > doConvert ( const Compressed ImageView2D& ) override {
return ImageData 2D { CompressedPixelFormat : : Bc1RGBAUnorm , { } , Containers : : Array < char > { nullptr , 0 , [ ] ( char * , std : : size_t ) { } } } ;
}
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . exportToCompressedImage ( ImageView2D { PixelFormat : : R8 Unorm, { } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::exportToCompressedImage (): implementation is not allowed to use a custom Array deleter \n " ) ;
converter . convert ( Compressed ImageView2D{ Compressed PixelFormat: : Bc1RGBA Unorm, { } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::convert (): implementation is not allowed to use a custom Array deleter \n " ) ;
}
void AbstractImageConverterTest : : exportToData ( ) {
void AbstractImageConverterTest : : convertImageData2D ( ) {
struct : Trade : : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2D | ImageConverterFeature : : ConvertCompressed2D ; }
Containers : : Optional < ImageData2D > doConvert ( const ImageView2D & ) override {
return ImageData2D { PixelFormat : : R8Unorm , { } , Containers : : array ( { ' B ' } ) } ;
} ;
Containers : : Optional < ImageData2D > doConvert ( const CompressedImageView2D & ) override {
return ImageData2D { PixelFormat : : R8Unorm , { } , Containers : : array ( { ' C ' } ) } ;
} ;
} converter ;
{
/* Should get "B" when converting uncompressed */
ImageData2D image { PixelFormat : : RGBA8Unorm , { } , nullptr } ;
Containers : : Optional < ImageData2D > out = converter . convert ( image ) ;
CORRADE_VERIFY ( out ) ;
CORRADE_COMPARE_AS ( out - > data ( ) ,
Containers : : arrayView < char > ( { ' B ' } ) ,
TestSuite : : Compare : : Container ) ;
} {
/* Should get "C" when converting compressed */
ImageData2D image { CompressedPixelFormat : : Bc1RGBUnorm , { } , nullptr } ;
Containers : : Optional < ImageData2D > out = converter . convert ( image ) ;
CORRADE_VERIFY ( out ) ;
CORRADE_COMPARE_AS ( out - > data ( ) ,
Containers : : arrayView < char > ( { ' C ' } ) ,
TestSuite : : Compare : : Container ) ;
}
}
void AbstractImageConverterTest : : convert2DToData ( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertData ; }
Containers : : Array < char > doExportToData ( const ImageView2D & image ) override {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2DTo Data ; }
Containers : : Array < char > doConve rtToData ( const ImageView2D & image ) override {
return Containers : : Array < char > { nullptr , std : : size_t ( image . size ( ) . product ( ) ) } ;
}
} converter ;
Containers : : Array < char > actual = converter . exportToData ( ImageView2D { PixelFormat : : RGBA8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 96 } } ) ;
Containers : : Array < char > actual = converter . conv ertToData( ImageView2D { PixelFormat : : RGBA8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 96 } } ) ;
CORRADE_COMPARE ( actual . size ( ) , 24 ) ;
}
void AbstractImageConverterTest : : exportToDataNotImplemented ( ) {
void AbstractImageConverterTest : : conv ert2D ToDataNotImplemented( ) {
# ifdef CORRADE_NO_ASSERT
CORRADE_SKIP ( " CORRADE_NO_ASSERT defined, can't test assertions " ) ;
# endif
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertData ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2DTo Data ; }
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . exportToData ( ImageView2D { PixelFormat : : RGBA8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 96 } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::exportToData(): feature advertised but not implemented \n " ) ;
converter . conv ertToData( ImageView2D { PixelFormat : : RGBA8Unorm , { 4 , 6 } , Containers : : ArrayView < char > { nullptr , 96 } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::convertToData(): 2D image conversion advertised but not implemented \n " ) ;
}
void AbstractImageConverterTest : : exportToDataCustomDeleter ( ) {
void AbstractImageConverterTest : : conv ert2D ToDataCustomDeleter( ) {
# ifdef CORRADE_NO_ASSERT
CORRADE_SKIP ( " CORRADE_NO_ASSERT defined, can't test assertions " ) ;
# endif
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertData ; }
Containers : : Array < char > doExpo rtToData ( const ImageView2D & ) override {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2DTo Data ; }
Containers : : Array < char > doConve rtToData ( const ImageView2D & ) override {
return Containers : : Array < char > { nullptr , 0 , [ ] ( char * , std : : size_t ) { } } ;
}
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . expo rtToData ( ImageView2D { PixelFormat : : RGBA8Unorm , { } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::expo rtToData(): implementation is not allowed to use a custom Array deleter \n " ) ;
converter . conv ertToData( ImageView2D { PixelFormat : : RGBA8Unorm , { } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::conv ertToData(): implementation is not allowed to use a custom Array deleter \n " ) ;
}
void AbstractImageConverterTest : : expo rtCompressedToData ( ) {
void AbstractImageConverterTest : : conv ertCompressed2D ToData( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressedData ; }
Containers : : Array < char > doExpo rtToData ( const CompressedImageView2D & image ) override {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2DTo Data ; }
Containers : : Array < char > doConve rtToData ( const CompressedImageView2D & image ) override {
return Containers : : Array < char > { nullptr , std : : size_t ( image . size ( ) . product ( ) ) } ;
}
} converter ;
Containers : : Array < char > actual = converter . expo rtToData ( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 64 } } ) ;
Containers : : Array < char > actual = converter . conv ertToData( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 64 } } ) ;
CORRADE_COMPARE ( actual . size ( ) , 128 ) ;
}
void AbstractImageConverterTest : : expo rtCompressedToDataNotImplemented ( ) {
void AbstractImageConverterTest : : conv ertCompressed2D ToDataNotImplemented( ) {
# ifdef CORRADE_NO_ASSERT
CORRADE_SKIP ( " CORRADE_NO_ASSERT defined, can't test assertions " ) ;
# endif
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertData ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2DTo Data ; }
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . expo rtToData ( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 64 } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::exportToData(): feature advertised but not implemented \n " ) ;
converter . conv ertToData( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , Containers : : ArrayView < char > { nullptr , 64 } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::convertToData(): compressed 2D image conversion advertised but not implemented \n " ) ;
}
void AbstractImageConverterTest : : expo rtCompressedToDataCustomDeleter ( ) {
void AbstractImageConverterTest : : conv ertCompressed2D ToDataCustomDeleter( ) {
# ifdef CORRADE_NO_ASSERT
CORRADE_SKIP ( " CORRADE_NO_ASSERT defined, can't test assertions " ) ;
# endif
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressedData ; }
Containers : : Array < char > doExpo rtToData ( const CompressedImageView2D & ) override {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2DTo Data ; }
Containers : : Array < char > doConve rtToData ( const CompressedImageView2D & ) override {
return Containers : : Array < char > { nullptr , 0 , [ ] ( char * , std : : size_t ) { } } ;
}
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . expo rtToData ( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::expo rtToData(): implementation is not allowed to use a custom Array deleter \n " ) ;
converter . conv ertToData( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { } } ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::conv ertToData(): implementation is not allowed to use a custom Array deleter \n " ) ;
}
/* Used by convertImageDataToData() and convertImageDataToFile() */
class ImageDataConverter : public Trade : : AbstractImageConverter {
class ImageData2D Converter : public Trade : : AbstractImageConverter {
private :
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertData | ImageConverterFeature : : ConvertCompressedData ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2DTo Data | ImageConverterFeature : : ConvertCompressed2DTo Data ; }
Containers : : Array < char > doExpo rtToData ( const ImageView2D & ) override {
Containers : : Array < char > doConve rtToData ( const ImageView2D & ) override {
return Containers : : array ( { ' B ' } ) ;
} ;
Containers : : Array < char > doExpo rtToData ( const CompressedImageView2D & ) override {
Containers : : Array < char > doConve rtToData ( const CompressedImageView2D & ) override {
return Containers : : array ( { ' C ' } ) ;
} ;
} ;
void AbstractImageConverterTest : : expo rtImageDataToData ( ) {
ImageDataConverter converter ;
void AbstractImageConverterTest : : conv ertImageData2D ToData( ) {
ImageData2D Converter converter ;
{
/* Should get "B" when converting uncompressed */
ImageData2D image { PixelFormat : : RGBA8Unorm , { } , nullptr } ;
CORRADE_COMPARE_AS ( converter . exportToData ( image ) ,
Containers : : arrayView ( { ' B ' } ) ,
TestSuite : : Compare : : Container ) ;
} {
/* Should get "C" when converting compressed */
ImageData2D image { CompressedPixelFormat : : Bc1RGBUnorm , { } , nullptr } ;
CORRADE_COMPARE_AS ( converter . exportToData ( image ) ,
Containers : : arrayView ( { ' C ' } ) ,
TestSuite : : Compare : : Container ) ;
}
/* Should get "B" when converting uncompressed */
CORRADE_COMPARE_AS ( converter . convertToData ( ImageData2D { PixelFormat : : RGBA8Unorm , { } , nullptr } ) ,
Containers : : arrayView ( { ' B ' } ) ,
TestSuite : : Compare : : Container ) ;
/* Should get "C" when converting compressed */
CORRADE_COMPARE_AS ( converter . convertToData ( ImageData2D { CompressedPixelFormat : : Bc1RGBUnorm , { } , nullptr } ) ,
Containers : : arrayView ( { ' C ' } ) ,
TestSuite : : Compare : : Container ) ;
}
void AbstractImageConverterTest : : expo rtToFile ( ) {
void AbstractImageConverterTest : : convert2DToFile ( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertData ; }
bool doExpo rtToFile ( const ImageView2D & image , const std : : string & filename ) override {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2DToFile ; }
bool doConve rtToFile ( const ImageView2D & image , Containers : : StringView filename ) override {
return Utility : : Directory : : write ( filename , Containers : : arrayView (
{ char ( image . size ( ) . x ( ) ) , char ( image . size ( ) . y ( ) ) } ) ) ;
}
@ -455,16 +491,16 @@ void AbstractImageConverterTest::exportToFile() {
Utility : : Directory : : rm ( filename ) ;
CORRADE_VERIFY ( ! Utility : : Directory : : exists ( filename ) ) ;
CORRADE_VERIFY ( converter . expo rtToFile ( ImageView2D { PixelFormat : : RGBA8Unorm , { 0xf0 , 0x0d } , { nullptr , 0xf0 * 0x0d * 4 } } , filename ) ) ;
CORRADE_VERIFY ( converter . conv ertToFile( ImageView2D { PixelFormat : : RGBA8Unorm , { 0xf0 , 0x0d } , { nullptr , 0xf0 * 0x0d * 4 } } , filename ) ) ;
CORRADE_COMPARE_AS ( filename ,
" \xf0 \x0d " , TestSuite : : Compare : : FileToString ) ;
}
void AbstractImageConverterTest : : expo rtToFileThroughData ( ) {
void AbstractImageConverterTest : : conv ert2D ToFileThroughData( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertData ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2DTo Data ; }
Containers : : Array < char > doExpo rtToData ( const ImageView2D & image ) override {
Containers : : Array < char > doConve rtToData ( const ImageView2D & image ) override {
return Containers : : array ( { char ( image . size ( ) . x ( ) ) , char ( image . size ( ) . y ( ) ) } ) ;
} ;
} converter ;
@ -475,17 +511,17 @@ void AbstractImageConverterTest::exportToFileThroughData() {
Utility : : Directory : : rm ( filename ) ;
CORRADE_VERIFY ( ! Utility : : Directory : : exists ( filename ) ) ;
/* doExportToFile() should call doExpo rtToData() */
CORRADE_VERIFY ( converter . expo rtToFile ( ImageView2D ( PixelFormat : : RGBA8Unorm , { 0xfe , 0xed } , { nullptr , 0xfe * 0xed * 4 } ) , filename ) ) ;
/* doConvertToFile() should call doConve rtToData() */
CORRADE_VERIFY ( converter . conv ertToFile( ImageView2D ( PixelFormat : : RGBA8Unorm , { 0xfe , 0xed } , { nullptr , 0xfe * 0xed * 4 } ) , filename ) ) ;
CORRADE_COMPARE_AS ( filename ,
" \xfe \xed " , TestSuite : : Compare : : FileToString ) ;
}
void AbstractImageConverterTest : : expo rtToFileThroughDataFailed ( ) {
void AbstractImageConverterTest : : conv ert2D ToFileThroughDataFailed( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertData ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2DTo Data ; }
Containers : : Array < char > doExpo rtToData ( const ImageView2D & ) override {
Containers : : Array < char > doConve rtToData ( const ImageView2D & ) override {
return { } ;
} ;
} converter ;
@ -500,47 +536,47 @@ void AbstractImageConverterTest::exportToFileThroughDataFailed() {
should be printed ( the base implementation assumes the plugin does it ) */
std : : ostringstream out ;
Error redirectError { & out } ;
CORRADE_VERIFY ( ! converter . expo rtToFile ( ImageView2D ( PixelFormat : : RGBA8Unorm , { 0xfe , 0xed } , { nullptr , 0xfe * 0xed * 4 } ) , filename ) ) ;
CORRADE_VERIFY ( ! converter . conv ertToFile( ImageView2D ( PixelFormat : : RGBA8Unorm , { 0xfe , 0xed } , { nullptr , 0xfe * 0xed * 4 } ) , filename ) ) ;
CORRADE_VERIFY ( ! Utility : : Directory : : exists ( filename ) ) ;
CORRADE_COMPARE ( out . str ( ) , " " ) ;
}
void AbstractImageConverterTest : : expo rtToFileThroughDataNotWritable ( ) {
void AbstractImageConverterTest : : conv ert2D ToFileThroughDataNotWritable( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertData ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2DTo Data ; }
Containers : : Array < char > doExpo rtToData ( const ImageView2D & image ) override {
Containers : : Array < char > doConve rtToData ( const ImageView2D & image ) override {
return Containers : : array ( { char ( image . size ( ) . x ( ) ) , char ( image . size ( ) . y ( ) ) } ) ;
} ;
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
CORRADE_VERIFY ( ! converter . expo rtToFile ( ImageView2D { PixelFormat : : RGBA8Unorm , { 0xfe , 0xed } , { nullptr , 0xfe * 0xed * 4 } } , " /some/path/that/does/not/exist " ) ) ;
CORRADE_VERIFY ( ! converter . conv ertToFile( ImageView2D { PixelFormat : : RGBA8Unorm , { 0xfe , 0xed } , { nullptr , 0xfe * 0xed * 4 } } , " /some/path/that/does/not/exist " ) ) ;
CORRADE_COMPARE ( out . str ( ) ,
" Utility::Directory::write(): can't open /some/path/that/does/not/exist \n "
" Trade::AbstractImageConverter::expo rtToFile(): cannot write to file /some/path/that/does/not/exist \n " ) ;
" Trade::AbstractImageConverter::conv ertToFile(): cannot write to file /some/path/that/does/not/exist \n " ) ;
}
void AbstractImageConverterTest : : expo rtToFileNotImplemented ( ) {
void AbstractImageConverterTest : : conv ert2D ToFileNotImplemented( ) {
# ifdef CORRADE_NO_ASSERT
CORRADE_SKIP ( " CORRADE_NO_ASSERT defined, can't test assertions " ) ;
# endif
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertFile ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : Convert2DTo File ; }
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . expo rtToFile ( ImageView2D { PixelFormat : : RGBA8Unorm , { 4 , 6 } , { nullptr , 96 } } , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::exportToFile(): feature advertised but not implemented \n " ) ;
converter . conv ertToFile( ImageView2D { PixelFormat : : RGBA8Unorm , { 4 , 6 } , { nullptr , 96 } } , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::convertToFile(): 2D image conversion advertised but not implemented \n " ) ;
}
void AbstractImageConverterTest : : expo rtCompressedToFile ( ) {
void AbstractImageConverterTest : : conv ertCompressed2D ToFile( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressedFile ; }
bool doExpo rtToFile ( const CompressedImageView2D & image , const std : : string & filename ) override {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2DTo File ; }
bool doConve rtToFile ( const CompressedImageView2D & image , Containers : : StringView filename ) override {
return Utility : : Directory : : write ( filename , Containers : : arrayView (
{ char ( image . size ( ) . x ( ) ) , char ( image . size ( ) . y ( ) ) } ) ) ;
}
@ -552,16 +588,16 @@ void AbstractImageConverterTest::exportCompressedToFile() {
Utility : : Directory : : rm ( filename ) ;
CORRADE_VERIFY ( ! Utility : : Directory : : exists ( filename ) ) ;
CORRADE_VERIFY ( converter . expo rtToFile ( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 0xd0 , 0x0d } , { nullptr , 64 } } , filename ) ) ;
CORRADE_VERIFY ( converter . conv ertToFile( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 0xd0 , 0x0d } , { nullptr , 64 } } , filename ) ) ;
CORRADE_COMPARE_AS ( filename ,
" \xd0 \x0d " , TestSuite : : Compare : : FileToString ) ;
}
void AbstractImageConverterTest : : expo rtCompressedToFileThroughData ( ) {
void AbstractImageConverterTest : : conv ertCompressed2D ToFileThroughData( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressedData ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2DTo Data ; }
Containers : : Array < char > doExpo rtToData ( const CompressedImageView2D & image ) override {
Containers : : Array < char > doConve rtToData ( const CompressedImageView2D & image ) override {
return Containers : : array ( { char ( image . size ( ) . x ( ) ) , char ( image . size ( ) . y ( ) ) } ) ;
} ;
} converter ;
@ -572,17 +608,17 @@ void AbstractImageConverterTest::exportCompressedToFileThroughData() {
Utility : : Directory : : rm ( filename ) ;
CORRADE_VERIFY ( ! Utility : : Directory : : exists ( filename ) ) ;
/* doExportToFile() should call doExpo rtToData() */
CORRADE_VERIFY ( converter . expo rtToFile ( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 0xb0 , 0xd9 } , { nullptr , 64 } } , filename ) ) ;
/* doConvertToFile() should call doConve rtToData() */
CORRADE_VERIFY ( converter . conv ertToFile( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 0xb0 , 0xd9 } , { nullptr , 64 } } , filename ) ) ;
CORRADE_COMPARE_AS ( filename ,
" \xb0 \xd9 " , TestSuite : : Compare : : FileToString ) ;
}
void AbstractImageConverterTest : : expo rtCompressedToFileThroughDataFailed ( ) {
void AbstractImageConverterTest : : conv ertCompressed2D ToFileThroughDataFailed( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressedData ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2DTo Data ; }
Containers : : Array < char > doExpo rtToData ( const CompressedImageView2D & ) override {
Containers : : Array < char > doConve rtToData ( const CompressedImageView2D & ) override {
return { } ;
} ;
} converter ;
@ -597,73 +633,69 @@ void AbstractImageConverterTest::exportCompressedToFileThroughDataFailed() {
should be printed ( the base implementation assumes the plugin does it ) */
std : : ostringstream out ;
Error redirectError { & out } ;
CORRADE_VERIFY ( ! converter . expo rtToFile ( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 0xb0 , 0xd9 } , { nullptr , 64 } } , filename ) ) ;
CORRADE_VERIFY ( ! converter . conv ertToFile( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 0xb0 , 0xd9 } , { nullptr , 64 } } , filename ) ) ;
CORRADE_VERIFY ( ! Utility : : Directory : : exists ( filename ) ) ;
CORRADE_COMPARE ( out . str ( ) , " " ) ;
}
void AbstractImageConverterTest : : expo rtCompressedToFileThroughDataNotWritable ( ) {
void AbstractImageConverterTest : : conv ertCompressed2D ToFileThroughDataNotWritable( ) {
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressedData ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2DTo Data ; }
Containers : : Array < char > doExpo rtToData ( const CompressedImageView2D & image ) override {
Containers : : Array < char > doConve rtToData ( const CompressedImageView2D & image ) override {
return Containers : : array ( { char ( image . size ( ) . x ( ) ) , char ( image . size ( ) . y ( ) ) } ) ;
} ;
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . expo rtToFile ( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , { nullptr , 64 } } , " /some/path/that/does/not/exist " ) ;
converter . conv ertToFile( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , { nullptr , 64 } } , " /some/path/that/does/not/exist " ) ;
CORRADE_COMPARE ( out . str ( ) ,
" Utility::Directory::write(): can't open /some/path/that/does/not/exist \n "
" Trade::AbstractImageConverter::expo rtToFile(): cannot write to file /some/path/that/does/not/exist \n " ) ;
" Trade::AbstractImageConverter::conv ertToFile(): cannot write to file /some/path/that/does/not/exist \n " ) ;
}
void AbstractImageConverterTest : : expo rtCompressedToFileNotImplemented ( ) {
void AbstractImageConverterTest : : conv ertCompressed2D ToFileNotImplemented( ) {
# ifdef CORRADE_NO_ASSERT
CORRADE_SKIP ( " CORRADE_NO_ASSERT defined, can't test assertions " ) ;
# endif
struct : AbstractImageConverter {
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressedFile ; }
ImageConverterFeatures doFeatures ( ) const override { return ImageConverterFeature : : ConvertCompressed2DTo File ; }
} converter ;
std : : ostringstream out ;
Error redirectError { & out } ;
converter . expo rtToFile ( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , { nullptr , 64 } } , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::exportToFile(): feature advertised but not implemented \n " ) ;
converter . conv ertToFile( CompressedImageView2D { CompressedPixelFormat : : Bc1RGBAUnorm , { 16 , 8 } , { nullptr , 64 } } , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::AbstractImageConverter::convertToFile(): compressed 2D image conversion advertised but not implemented \n " ) ;
}
void AbstractImageConverterTest : : expo rtImageDataToFile ( ) {
ImageDataConverter converter ;
void AbstractImageConverterTest : : conv ertImageData2D ToFile( ) {
ImageData2D Converter converter ;
{
/* Should get "B" when converting uncompressed */
ImageData2D image { PixelFormat : : RGBA16F , { } , nullptr } ;
CORRADE_VERIFY ( converter . exportToFile ( image , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ) ;
CORRADE_COMPARE_AS ( Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ,
" B " , TestSuite : : Compare : : FileToString ) ;
} {
/* Should get "C" when converting compressed */
ImageData2D image { CompressedPixelFormat : : Bc2RGBAUnorm , { } , nullptr } ;
CORRADE_VERIFY ( converter . exportToFile ( image , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ) ;
CORRADE_COMPARE_AS ( Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ,
" C " , TestSuite : : Compare : : FileToString ) ;
}
/* Should get "B" when converting uncompressed */
CORRADE_VERIFY ( converter . convertToFile ( ImageData2D { PixelFormat : : RGBA16F , { } , nullptr } , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ) ;
CORRADE_COMPARE_AS ( Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ,
" B " , TestSuite : : Compare : : FileToString ) ;
/* Should get "C" when converting compressed */
CORRADE_VERIFY ( converter . convertToFile ( ImageData2D { CompressedPixelFormat : : Bc2RGBAUnorm , { } , nullptr } , Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ) ) ;
CORRADE_COMPARE_AS ( Utility : : Directory : : join ( TRADE_TEST_OUTPUT_DIR , " image.out " ) ,
" C " , TestSuite : : Compare : : FileToString ) ;
}
void AbstractImageConverterTest : : debugFeature ( ) {
std : : ostringstream out ;
Debug { & out } < < ImageConverterFeature : : ConvertCompressedImage < < ImageConverterFeature ( 0xf0 ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::ImageConverterFeature::ConvertCompressedImage Trade::ImageConverterFeature(0xf0 ) \n " ) ;
Debug { & out } < < ImageConverterFeature : : ConvertCompressed2D < < ImageConverterFeature ( 0xdeadbee f ) ;
CORRADE_COMPARE ( out . str ( ) , " Trade::ImageConverterFeature::ConvertCompressed2D Trade::ImageConverterFeature(0xdeadbeef ) \n " ) ;
}
void AbstractImageConverterTest : : debugFeatures ( ) {
std : : ostringstream out ;
Debug { & out } < < ( ImageConverterFeature : : ConvertData | ImageConverterFeature : : ConvertCompressedFile ) < < ImageConverterFeatures { } ;
CORRADE_COMPARE ( out . str ( ) , " Trade::ImageConverterFeature::ConvertData|Trade::ImageConverterFeature::ConvertCompressedFile Trade::ImageConverterFeatures{} \n " ) ;
Debug { & out } < < ( ImageConverterFeature : : Convert2DTo Data | ImageConverterFeature : : ConvertCompressed2DTo File ) < < ImageConverterFeatures { } ;
CORRADE_COMPARE ( out . str ( ) , " Trade::ImageConverterFeature::Convert2DTo Data|Trade::ImageConverterFeature::ConvertCompressed2DTo File Trade::ImageConverterFeatures{} \n " ) ;
}
void AbstractImageConverterTest : : debugFlag ( ) {