Browse Source

AnyImageImporter: test 3D image loading code path.

Using the fresh new OpenExrImporter cubemap support.
pull/537/head
Vladimír Vondruš 5 years ago
parent
commit
f989630a09
  1. 40
      src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp
  2. 5
      src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt
  3. 1
      src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake

40
src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp

@ -80,6 +80,16 @@ constexpr struct {
{"TGA data", TGA_FILE, fileCallback, "openData"}
};
constexpr struct {
const char* name;
const char* filename;
Containers::Optional<Containers::ArrayView<const char>>(*callback)(const std::string&, InputFileCallbackPolicy, Containers::Array<char>&);
const char* messageFunctionName;
} Load3DData[]{
{"EXR", EXR_CUBE_FILE, nullptr, "OpenExrImporter"},
{"EXR data", EXR_CUBE_FILE, fileCallback, "OpenExrImporter"},
};
constexpr struct {
const char* name;
const char* filename;
@ -94,8 +104,6 @@ constexpr struct {
{"JPEG2000", "image.jp2", nullptr, "Jpeg2000Importer"},
{"KTX2", "image.ktx2", nullptr, "KtxImporter"},
/** @todo KTX2 data once we have some */
{"EXR", "image.exr", nullptr, "OpenExrImporter"},
{"EXR data", "image.exr", fileCallback, "OpenExrImporter"},
{"HDR", "rgb.hdr", nullptr, "HdrImporter"},
{"HDR data", "rgb.hdr", fileCallback, "HdrImporter"},
{"ICO", "pngs.ico", nullptr, "IcoImporter"},
@ -146,7 +154,8 @@ AnyImageImporterTest::AnyImageImporterTest() {
addInstancedTests({&AnyImageImporterTest::load2D},
Containers::arraySize(Load2DData));
addTests({&AnyImageImporterTest::load3D});
addInstancedTests({&AnyImageImporterTest::load3D},
Containers::arraySize(Load3DData));
addInstancedTests({&AnyImageImporterTest::detect},
Containers::arraySize(DetectData));
@ -195,6 +204,7 @@ void AnyImageImporterTest::load2D() {
importer->setFileCallback(data.callback, storage);
CORRADE_VERIFY(importer->openFile(data.filename));
CORRADE_COMPARE(importer->image2DCount(), 1);
/* Check only size, as it is good enough proof that it is working */
Containers::Optional<ImageData2D> image = importer->image2D(0);
@ -206,7 +216,29 @@ void AnyImageImporterTest::load2D() {
}
void AnyImageImporterTest::load3D() {
CORRADE_SKIP("No file formats supporting 3D images yet.");
auto&& data = Load3DData[testCaseInstanceId()];
setTestCaseDescription(data.name);
PluginManager::Manager<AbstractImporter> manager{MAGNUM_PLUGINS_IMPORTER_INSTALL_DIR};
#ifdef ANYIMAGEIMPORTER_PLUGIN_FILENAME
CORRADE_VERIFY(manager.load(ANYIMAGEIMPORTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded);
#endif
if(manager.loadState("OpenExrImporter") < PluginManager::LoadState::Loaded)
CORRADE_SKIP("OpenExrImporter plugin can't be loaded.");
Containers::Pointer<AbstractImporter> importer = manager.instantiate("AnyImageImporter");
Containers::Array<char> storage;
importer->setFileCallback(data.callback, storage);
CORRADE_VERIFY(importer->openFile(data.filename));
CORRADE_COMPARE(importer->image3DCount(), 1);
/* Check only size, as it is good enough proof that it is working */
Containers::Optional<ImageData3D> image = importer->image3D(0);
CORRADE_VERIFY(image);
CORRADE_COMPARE(image->size(), (Vector3i{1, 1, 6}));
}
void AnyImageImporterTest::detect() {

5
src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt

@ -27,10 +27,12 @@ if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID)
set(TEST_FILE_DIR .)
set(TGA_FILE rgb.tga)
set(EXR_FILE depth32f-custom-channels.exr)
set(EXR_CUBE_FILE cube.exr)
else()
set(TEST_FILE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(TGA_FILE ${CMAKE_CURRENT_SOURCE_DIR}/rgb.tga)
set(EXR_FILE ${CMAKE_CURRENT_SOURCE_DIR}/depth32f-custom-channels.exr)
set(EXR_CUBE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cube.exr)
endif()
# CMake before 3.8 has broken $<TARGET_FILE*> expressions for iOS (see
@ -53,7 +55,10 @@ file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/configure.h
corrade_add_test(AnyImageImporterTest AnyImageImporterTest.cpp
LIBRARIES MagnumTrade MagnumDebugTools
FILES
# Taken from OpenExrImporter tests
depth32f-custom-channels.exr
# Generated by AnyImageConverterTest::propagateConfiguration3D()
cube.exr
gray.jpg
image.exr
image.tiff

1
src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake

@ -28,6 +28,7 @@
#define TGA_FILE "${TGA_FILE}"
#define TEST_FILE_DIR "${TEST_FILE_DIR}"
#define EXR_FILE "${EXR_FILE}"
#define EXR_CUBE_FILE "${EXR_CUBE_FILE}"
#ifdef CORRADE_TARGET_WINDOWS
#ifdef CORRADE_IS_DEBUG_BUILD

Loading…
Cancel
Save