diff --git a/doc/snippets/MagnumTrade.cpp b/doc/snippets/MagnumTrade.cpp index 06082a698..fe078fb71 100644 --- a/doc/snippets/MagnumTrade.cpp +++ b/doc/snippets/MagnumTrade.cpp @@ -26,10 +26,11 @@ #include #include #include +#include /** @todo remove once file callbacks are -free */ #include #include #include -#include +#include #include #include "Magnum/FileCallback.h" @@ -162,8 +163,8 @@ if(!importer->openData(data)) /* or openMemory() */ Containers::Pointer importer; /* [AbstractImporter-usage-callbacks] */ struct Data { - std::unordered_map> files; + std::unordered_map>> files; } data; importer->setFileCallback([](const std::string& filename, @@ -178,11 +179,13 @@ importer->setFileCallback([](const std::string& filename, return {}; } - /* Load if not there yet */ + /* Load if not there yet. If the mapping fails, remember that to not + attempt to load the same file again next time. */ if(found == data.files.end()) found = data.files.emplace( - filename, Utility::Directory::mapRead(filename)).first; + filename, Utility::Path::mapRead(filename)).first; - return Containers::arrayView(found->second); + if(!found->second) return {}; + return Containers::arrayView(*found->second); }, data); importer->openFile("scene.gltf"); // memory-maps all files diff --git a/src/Magnum/Trade/AbstractImageConverter.cpp b/src/Magnum/Trade/AbstractImageConverter.cpp index fca6f3f21..89eba4043 100644 --- a/src/Magnum/Trade/AbstractImageConverter.cpp +++ b/src/Magnum/Trade/AbstractImageConverter.cpp @@ -29,9 +29,9 @@ #include #include #include -#include /* for Directory */ +#include /** @todo remove once PluginManager is -free */ #include -#include +#include #include #include "Magnum/Image.h" @@ -55,9 +55,10 @@ std::string AbstractImageConverter::pluginInterface() { #ifndef CORRADE_PLUGINMANAGER_NO_DYNAMIC_PLUGIN_SUPPORT std::vector AbstractImageConverter::pluginSearchPaths() { + const Containers::Optional libraryLocation = Utility::Path::libraryLocation(&pluginInterface); return PluginManager::implicitPluginSearchPaths( #ifndef MAGNUM_BUILD_STATIC - Utility::Directory::libraryLocation(&pluginInterface), + libraryLocation ? *libraryLocation : Containers::String{}, #else {}, #endif @@ -647,7 +648,7 @@ bool AbstractImageConverter::doConvertToFile(const ImageView1D& image, const Con /* No deleter checks as it doesn't matter here */ if(!data) return false; - if(!Utility::Directory::write(filename, data)) { + if(!Utility::Path::write(filename, data)) { Error() << "Trade::AbstractImageConverter::convertToFile(): cannot write to file" << filename; return false; } @@ -681,7 +682,7 @@ bool AbstractImageConverter::doConvertToFile(const ImageView2D& image, const Con /* No deleter checks as it doesn't matter here */ if(!data) return false; - if(!Utility::Directory::write(filename, data)) { + if(!Utility::Path::write(filename, data)) { Error() << "Trade::AbstractImageConverter::convertToFile(): cannot write to file" << filename; return false; } @@ -721,7 +722,7 @@ bool AbstractImageConverter::doConvertToFile(const ImageView3D& image, const Con /* No deleter checks as it doesn't matter here */ if(!data) return false; - if(!Utility::Directory::write(filename, data)) { + if(!Utility::Path::write(filename, data)) { Error() << "Trade::AbstractImageConverter::convertToFile(): cannot write to file" << filename; return false; } @@ -755,7 +756,7 @@ bool AbstractImageConverter::doConvertToFile(const CompressedImageView1D& image, /* No deleter checks as it doesn't matter here */ if(!data) return false; - if(!Utility::Directory::write(filename, data)) { + if(!Utility::Path::write(filename, data)) { Error() << "Trade::AbstractImageConverter::convertToFile(): cannot write to file" << filename; return false; } @@ -789,7 +790,7 @@ bool AbstractImageConverter::doConvertToFile(const CompressedImageView2D& image, /* No deleter checks as it doesn't matter here */ if(!data) return false; - if(!Utility::Directory::write(filename, data)) { + if(!Utility::Path::write(filename, data)) { Error() << "Trade::AbstractImageConverter::convertToFile(): cannot write to file" << filename; return false; } @@ -829,7 +830,7 @@ bool AbstractImageConverter::doConvertToFile(const CompressedImageView3D& image, /* No deleter checks as it doesn't matter here */ if(!data) return false; - if(!Utility::Directory::write(filename, data)) { + if(!Utility::Path::write(filename, data)) { Error() << "Trade::AbstractImageConverter::convertToFile(): cannot write to file" << filename; return false; } @@ -879,7 +880,7 @@ bool AbstractImageConverter::doConvertToFile(const Containers::ArrayView #include #include +#include +#include /** @todo remove once PluginManager is -free */ #include #include -#include +#include #include "Magnum/FileCallback.h" #include "Magnum/Trade/AnimationData.h" @@ -77,9 +79,10 @@ std::string AbstractImporter::pluginInterface() { #ifndef CORRADE_PLUGINMANAGER_NO_DYNAMIC_PLUGIN_SUPPORT std::vector AbstractImporter::pluginSearchPaths() { + const Containers::Optional libraryLocation = Utility::Path::libraryLocation(&pluginInterface); return PluginManager::implicitPluginSearchPaths( #ifndef MAGNUM_BUILD_STATIC - Utility::Directory::libraryLocation(&pluginInterface), + libraryLocation ? *libraryLocation : Containers::String{}, #else {}, #endif @@ -249,12 +252,13 @@ void AbstractImporter::doOpenFile(const std::string& filename) { /* Otherwise open the file directly */ } else { - if(!Utility::Directory::exists(filename)) { + Containers::Optional> data = Utility::Path::read(filename); + if(!data) { Error() << "Trade::AbstractImporter::openFile(): cannot open file" << filename; return; } - doOpenData(Utility::Directory::read(filename), DataFlag::Owned|DataFlag::Mutable); + doOpenData(*std::move(data), DataFlag::Owned|DataFlag::Mutable); } } diff --git a/src/Magnum/Trade/AbstractSceneConverter.cpp b/src/Magnum/Trade/AbstractSceneConverter.cpp index b4f7e2dd7..a2034e802 100644 --- a/src/Magnum/Trade/AbstractSceneConverter.cpp +++ b/src/Magnum/Trade/AbstractSceneConverter.cpp @@ -28,10 +28,9 @@ #include #include #include -#include /* Needed for Directory */ -#include -#include -#include +#include +#include /** @todo remove once PluginManager is -free */ +#include #include "Magnum/Trade/ArrayAllocator.h" #include "Magnum/Trade/MeshData.h" @@ -52,9 +51,10 @@ std::string AbstractSceneConverter::pluginInterface() { #ifndef CORRADE_PLUGINMANAGER_NO_DYNAMIC_PLUGIN_SUPPORT std::vector AbstractSceneConverter::pluginSearchPaths() { + const Containers::Optional libraryLocation = Utility::Path::libraryLocation(&pluginInterface); return PluginManager::implicitPluginSearchPaths( #ifndef MAGNUM_BUILD_STATIC - Utility::Directory::libraryLocation(&pluginInterface), + libraryLocation ? *libraryLocation : Containers::String{}, #else {}, #endif @@ -161,7 +161,7 @@ bool AbstractSceneConverter::doConvertToFile(const MeshData& mesh, const Contain /* No deleter checks as it doesn't matter here */ if(!data) return false; - if(!Utility::Directory::write(filename, data)) { + if(!Utility::Path::write(filename, data)) { Error() << "Trade::AbstractSceneConverter::convertToFile(): cannot write to file" << filename; return false; } diff --git a/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp b/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp index f74be49e1..7908add4e 100644 --- a/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractImageConverterTest.cpp @@ -27,13 +27,13 @@ #include #include #include -#include +#include /** @todo remove once Debug is stream-free */ #include #include #include #include #include -#include +#include #include "Magnum/Image.h" #include "Magnum/ImageView.h" @@ -466,7 +466,7 @@ AbstractImageConverterTest::AbstractImageConverterTest() { &AbstractImageConverterTest::debugFlags}); /* Create testing dir */ - Utility::Directory::mkpath(TRADE_TEST_OUTPUT_DIR); + Utility::Path::make(TRADE_TEST_OUTPUT_DIR); } void AbstractImageConverterTest::construct() { @@ -555,18 +555,18 @@ void AbstractImageConverterTest::thingNotSupported() { converter.convertToData({CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0, nullptr}}); converter.convertToData({CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}}); converter.convertToData({CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}}); - converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 0, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {}, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {}, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile({ImageView1D{PixelFormat::RGBA8Unorm, 0, nullptr}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile({ImageView2D{PixelFormat::RGBA8Unorm, {}, nullptr}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile({ImageView3D{PixelFormat::RGBA8Unorm, {}, nullptr}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile(CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile(CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile({CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0, nullptr}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile({CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); - converter.convertToFile({CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 0, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {}, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {}, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({ImageView1D{PixelFormat::RGBA8Unorm, 0, nullptr}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({ImageView2D{PixelFormat::RGBA8Unorm, {}, nullptr}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({ImageView3D{PixelFormat::RGBA8Unorm, {}, nullptr}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0, nullptr}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convert(): 1D image conversion not supported\n" "Trade::AbstractImageConverter::convert(): 2D image conversion not supported\n" @@ -2084,16 +2084,15 @@ void AbstractImageConverterTest::convert1DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::Convert1DToFile; } bool doConvertToFile(const ImageView1D& image, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(image.size()[0])})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{0x0f*4}}, filename)); CORRADE_COMPARE_AS(filename, @@ -2104,16 +2103,15 @@ void AbstractImageConverterTest::convert2DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::Convert2DToFile; } bool doConvertToFile(const ImageView2D& image, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(image.size().x()), char(image.size().y())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{0x0f*0x0d*4}}, filename)); CORRADE_COMPARE_AS(filename, @@ -2124,16 +2122,15 @@ void AbstractImageConverterTest::convert3DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::Convert3DToFile; } bool doConvertToFile(const ImageView3D& image, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(image.size().x()), char(image.size().y()), char(image.size().z())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x02}, Containers::Array{0x0f*0x0d*0x02*4}}, filename)); CORRADE_COMPARE_AS(filename, @@ -2149,11 +2146,10 @@ void AbstractImageConverterTest::convert1DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile(ImageView1D(PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{0x0f*4}), filename)); @@ -2170,11 +2166,10 @@ void AbstractImageConverterTest::convert2DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile(ImageView2D(PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{0x0f*0x0d*4}), filename)); @@ -2191,11 +2186,10 @@ void AbstractImageConverterTest::convert3DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile(ImageView3D(PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x02}, Containers::Array{0x0f*0x0d*0x02*4}), filename)); @@ -2212,19 +2206,19 @@ void AbstractImageConverterTest::convert1DToFileThroughDataFailed() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[4]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 1, data}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -2237,19 +2231,19 @@ void AbstractImageConverterTest::convert2DToFileThroughDataFailed() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[4]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {1, 1}, data}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -2262,19 +2256,19 @@ void AbstractImageConverterTest::convert3DToFileThroughDataFailed() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[4]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {1, 1, 1}, data}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -2343,7 +2337,7 @@ void AbstractImageConverterTest::convert1DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 0, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 0, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): can't convert image with a zero size: Vector(0)\n"); } @@ -2358,7 +2352,7 @@ void AbstractImageConverterTest::convert2DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {}, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {}, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): can't convert image with a zero size: Vector(0, 0)\n"); } @@ -2373,7 +2367,7 @@ void AbstractImageConverterTest::convert3DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {}, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {}, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): can't convert image with a zero size: Vector(0, 0, 0)\n"); } @@ -2389,7 +2383,7 @@ void AbstractImageConverterTest::convert1DToFileNotImplemented() { const char data[4]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 1, data}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 1, data}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): 1D image conversion advertised but not implemented\n"); } @@ -2405,7 +2399,7 @@ void AbstractImageConverterTest::convert2DToFileNotImplemented() { const char data[4]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {1, 1}, data}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {1, 1}, data}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): 2D image conversion advertised but not implemented\n"); } @@ -2421,7 +2415,7 @@ void AbstractImageConverterTest::convert3DToFileNotImplemented() { const char data[4]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {1, 1, 1}, data}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {1, 1, 1}, data}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): 3D image conversion advertised but not implemented\n"); } @@ -2429,16 +2423,15 @@ void AbstractImageConverterTest::convertCompressed1DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressed1DToFile; } bool doConvertToFile(const CompressedImageView1D& image, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(image.size()[0])})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{64}}, filename)); CORRADE_COMPARE_AS(filename, @@ -2449,16 +2442,15 @@ void AbstractImageConverterTest::convertCompressed2DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressed2DToFile; } bool doConvertToFile(const CompressedImageView2D& image, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(image.size().x()), char(image.size().y())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {0x0f, 0x0d}, Containers::Array{64}}, filename)); CORRADE_COMPARE_AS(filename, @@ -2469,16 +2461,15 @@ void AbstractImageConverterTest::convertCompressed3DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressed3DToFile; } bool doConvertToFile(const CompressedImageView3D& image, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(image.size().x()), char(image.size().y()), char(image.size().z())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {0x0f, 0x0d, 0x02}, Containers::Array{64}}, filename)); CORRADE_COMPARE_AS(filename, @@ -2494,11 +2485,10 @@ void AbstractImageConverterTest::convertCompressed1DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{64}}, filename)); @@ -2515,11 +2505,10 @@ void AbstractImageConverterTest::convertCompressed2DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile(CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {0x0f, 0x0d}, Containers::Array{64}}, filename)); @@ -2536,11 +2525,10 @@ void AbstractImageConverterTest::convertCompressed3DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile(CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {0x0f, 0x0d, 0x02}, Containers::Array{64}}, filename)); @@ -2557,19 +2545,19 @@ void AbstractImageConverterTest::convertCompressed1DToFileThroughDataFailed() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[8]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 4, data}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -2582,19 +2570,19 @@ void AbstractImageConverterTest::convertCompressed2DToFileThroughDataFailed() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[8]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile(CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4}, data}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -2607,19 +2595,19 @@ void AbstractImageConverterTest::convertCompressed3DToFileThroughDataFailed() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[8]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile(CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4, 1}, data}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -2688,7 +2676,7 @@ void AbstractImageConverterTest::convertCompressed1DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): can't convert image with a zero size: Vector(0)\n"); } @@ -2703,7 +2691,7 @@ void AbstractImageConverterTest::convertCompressed2DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): can't convert image with a zero size: Vector(0, 0)\n"); } @@ -2718,7 +2706,7 @@ void AbstractImageConverterTest::convertCompressed3DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {}, nullptr}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): can't convert image with a zero size: Vector(0, 0, 0)\n"); } @@ -2734,7 +2722,7 @@ void AbstractImageConverterTest::convertCompressed1DToFileNotImplemented() { const char data[8]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 4, data}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 4, data}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): compressed 1D image conversion advertised but not implemented\n"); } @@ -2750,7 +2738,7 @@ void AbstractImageConverterTest::convertCompressed2DToFileNotImplemented() { const char data[8]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4}, data}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4}, data}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): compressed 2D image conversion advertised but not implemented\n"); } @@ -2766,7 +2754,7 @@ void AbstractImageConverterTest::convertCompressed3DToFileNotImplemented() { const char data[8]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4, 1}, data}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4, 1}, data}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): compressed 3D image conversion advertised but not implemented\n"); } @@ -2774,13 +2762,13 @@ void AbstractImageConverterTest::convertImageData1DToFile() { ImageData1DConverter converter; /* Should get "B" when converting uncompressed */ - CORRADE_VERIFY(converter.convertToFile(ImageData1D{PixelFormat::RGBA16F, 1, Containers::Array{8}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); - CORRADE_COMPARE_AS(Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"), + CORRADE_VERIFY(converter.convertToFile(ImageData1D{PixelFormat::RGBA16F, 1, Containers::Array{8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); + CORRADE_COMPARE_AS(Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"), "B", TestSuite::Compare::FileToString); /* Should get "C" when converting compressed */ - CORRADE_VERIFY(converter.convertToFile(ImageData1D{CompressedPixelFormat::Bc2RGBAUnorm, 4, Containers::Array{8}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); - CORRADE_COMPARE_AS(Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"), + CORRADE_VERIFY(converter.convertToFile(ImageData1D{CompressedPixelFormat::Bc2RGBAUnorm, 4, Containers::Array{8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); + CORRADE_COMPARE_AS(Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"), "C", TestSuite::Compare::FileToString); } @@ -2788,13 +2776,13 @@ void AbstractImageConverterTest::convertImageData2DToFile() { ImageData2DConverter converter; /* Should get "B" when converting uncompressed */ - CORRADE_VERIFY(converter.convertToFile(ImageData2D{PixelFormat::RGBA16F, {1, 1}, Containers::Array{8}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); - CORRADE_COMPARE_AS(Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"), + CORRADE_VERIFY(converter.convertToFile(ImageData2D{PixelFormat::RGBA16F, {1, 1}, Containers::Array{8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); + CORRADE_COMPARE_AS(Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"), "B", TestSuite::Compare::FileToString); /* Should get "C" when converting compressed */ - CORRADE_VERIFY(converter.convertToFile(ImageData2D{CompressedPixelFormat::Bc2RGBAUnorm, {4, 4}, Containers::Array{8}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); - CORRADE_COMPARE_AS(Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"), + CORRADE_VERIFY(converter.convertToFile(ImageData2D{CompressedPixelFormat::Bc2RGBAUnorm, {4, 4}, Containers::Array{8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); + CORRADE_COMPARE_AS(Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"), "C", TestSuite::Compare::FileToString); } @@ -2802,13 +2790,13 @@ void AbstractImageConverterTest::convertImageData3DToFile() { ImageData3DConverter converter; /* Should get "B" when converting uncompressed */ - CORRADE_VERIFY(converter.convertToFile(ImageData3D{PixelFormat::RGBA16F, {1, 1, 1}, Containers::Array{8}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); - CORRADE_COMPARE_AS(Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"), + CORRADE_VERIFY(converter.convertToFile(ImageData3D{PixelFormat::RGBA16F, {1, 1, 1}, Containers::Array{8}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); + CORRADE_COMPARE_AS(Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"), "B", TestSuite::Compare::FileToString); /* Should get "C" when converting compressed */ - CORRADE_VERIFY(converter.convertToFile(ImageData3D{CompressedPixelFormat::Bc2RGBAUnorm, {4, 4, 1}, Containers::Array{4}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); - CORRADE_COMPARE_AS(Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"), + CORRADE_VERIFY(converter.convertToFile(ImageData3D{CompressedPixelFormat::Bc2RGBAUnorm, {4, 4, 1}, Containers::Array{4}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"))); + CORRADE_COMPARE_AS(Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"), "C", TestSuite::Compare::FileToString); } @@ -2816,18 +2804,17 @@ void AbstractImageConverterTest::convertLevels1DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size()[0]), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + const char data[4]{}; CORRADE_VERIFY(converter.convertToFile({ /* Arbitrary dimensions should be fine */ ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{0x0f*4}}, @@ -2841,18 +2828,17 @@ void AbstractImageConverterTest::convertLevels2DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + const char data[4]{}; CORRADE_VERIFY(converter.convertToFile({ /* Arbitrary dimensions should be fine */ ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{0x0f*0x0d*4}}, @@ -2866,18 +2852,17 @@ void AbstractImageConverterTest::convertLevels3DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels[0].size().z()), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + const char data[4]{}; CORRADE_VERIFY(converter.convertToFile({ /* Arbitrary dimensions should be fine */ ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x0e}, Containers::Array{0x0f*0x0d*0x0e*4}}, @@ -2896,12 +2881,12 @@ void AbstractImageConverterTest::convertLevels1DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[4]{}; /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile({ @@ -2922,12 +2907,12 @@ void AbstractImageConverterTest::convertLevels2DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[4]{}; /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile({ @@ -2947,12 +2932,12 @@ void AbstractImageConverterTest::convertLevels3DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[4]{}; /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile({ @@ -2972,19 +2957,19 @@ void AbstractImageConverterTest::convertLevels1DToFileThroughDataFailed() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[4]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile({ImageView1D{PixelFormat::RGBA8Unorm, 1, data}}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -2997,19 +2982,19 @@ void AbstractImageConverterTest::convertLevels2DToFileThroughDataFailed() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[4]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile({ImageView2D{PixelFormat::RGBA8Unorm, {1, 1}, data}}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -3022,19 +3007,19 @@ void AbstractImageConverterTest::convertLevels3DToFileThroughDataFailed() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[4]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[4]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile({ImageView3D{PixelFormat::RGBA8Unorm, {1, 1, 1}, data}}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -3102,7 +3087,7 @@ void AbstractImageConverterTest::convertLevels1DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(std::initializer_list{}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(std::initializer_list{}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): at least one image has to be specified\n"); } @@ -3117,7 +3102,7 @@ void AbstractImageConverterTest::convertLevels2DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(std::initializer_list{}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(std::initializer_list{}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): at least one image has to be specified\n"); } @@ -3132,7 +3117,7 @@ void AbstractImageConverterTest::convertLevels3DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(std::initializer_list{}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(std::initializer_list{}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): at least one image has to be specified\n"); } @@ -3148,7 +3133,7 @@ void AbstractImageConverterTest::convertLevels1DToFileNotImplemented() { const char data[4]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile({ImageView1D{PixelFormat::RGBA8Unorm, 1, data}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({ImageView1D{PixelFormat::RGBA8Unorm, 1, data}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): multi-level 1D image conversion advertised but not implemented\n"); } @@ -3164,7 +3149,7 @@ void AbstractImageConverterTest::convertLevels2DToFileNotImplemented() { const char data[4]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile({ImageView2D{PixelFormat::RGBA8Unorm, {1, 1}, data}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({ImageView2D{PixelFormat::RGBA8Unorm, {1, 1}, data}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): multi-level 2D image conversion advertised but not implemented\n"); } @@ -3180,7 +3165,7 @@ void AbstractImageConverterTest::convertLevels3DToFileNotImplemented() { const char data[4]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile({ImageView3D{PixelFormat::RGBA8Unorm, {1, 1, 1}, data}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({ImageView3D{PixelFormat::RGBA8Unorm, {1, 1, 1}, data}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): multi-level 3D image conversion advertised but not implemented\n"); } @@ -3188,18 +3173,17 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size()[0]), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + const char data[8]{}; CORRADE_VERIFY(converter.convertToFile({ CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{64}}, CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 4, data} @@ -3212,18 +3196,17 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + const char data[8]{}; CORRADE_VERIFY(converter.convertToFile({ CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {0x0f, 0x0d}, Containers::Array{64}}, CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4}, data} @@ -3236,18 +3219,17 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFile() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels[0].size().z()), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + const char data[8]{}; CORRADE_VERIFY(converter.convertToFile({ CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {0x0f, 0x0d, 0x0e}, Containers::Array{64}}, CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4, 1}, data} @@ -3265,12 +3247,12 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[8]{}; /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile({ @@ -3290,12 +3272,12 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[8]{}; /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile({ @@ -3315,12 +3297,12 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFileThroughData() { }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[8]{}; /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile({ @@ -3340,19 +3322,19 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileThroughDataFaile }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[8]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile({CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 4, data}}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -3365,19 +3347,19 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFileThroughDataFaile }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[8]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile({CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4}, data}}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -3390,19 +3372,19 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFileThroughDataFaile }; } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - const char data[8]{}; - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); + + const char data[8]{}; /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile({CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4, 4}, data}}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -3471,7 +3453,7 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(std::initializer_list{}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(std::initializer_list{}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): at least one image has to be specified\n"); } @@ -3486,7 +3468,7 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(std::initializer_list{}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(std::initializer_list{}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): at least one image has to be specified\n"); } @@ -3501,7 +3483,7 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFileInvalidImage() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(std::initializer_list{}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile(std::initializer_list{}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): at least one image has to be specified\n"); } @@ -3517,7 +3499,7 @@ void AbstractImageConverterTest::convertCompressedLevels1DToFileNotImplemented() const char data[8]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile({CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 4, data}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 4, data}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 1D image conversion advertised but not implemented\n"); } @@ -3533,7 +3515,7 @@ void AbstractImageConverterTest::convertCompressedLevels2DToFileNotImplemented() const char data[8]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile({CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4}, data}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4}, data}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 2D image conversion advertised but not implemented\n"); } @@ -3549,7 +3531,7 @@ void AbstractImageConverterTest::convertCompressedLevels3DToFileNotImplemented() const char data[8]{}; std::ostringstream out; Error redirectError{&out}; - converter.convertToFile({CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4, 4}, data}}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out")); + converter.convertToFile({CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {4, 4, 4}, data}}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractImageConverter::convertToFile(): multi-level compressed 3D image conversion advertised but not implemented\n"); } @@ -3557,16 +3539,15 @@ void AbstractImageConverterTest::convert1DToFileThroughLevels() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels1DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size()[0]), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(ImageView1D{PixelFormat::RGBA8Unorm, 0x0f, Containers::Array{0x0f*4}}, filename)); CORRADE_COMPARE_AS(filename, @@ -3577,16 +3558,15 @@ void AbstractImageConverterTest::convert2DToFileThroughLevels() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels2DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(ImageView2D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d}, Containers::Array{0x0f*0x0d*4}}, filename)); CORRADE_COMPARE_AS(filename, @@ -3597,16 +3577,15 @@ void AbstractImageConverterTest::convert3DToFileThroughLevels() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertLevels3DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels[0].size().z()), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(ImageView3D{PixelFormat::RGBA8Unorm, {0x0f, 0x0d, 0x0e}, Containers::Array{0x0f*0x0d*0x0e*4}}, filename)); CORRADE_COMPARE_AS(filename, @@ -3617,16 +3596,15 @@ void AbstractImageConverterTest::convertCompressed1DToFileThroughLevels() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels1DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size()[0]), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(CompressedImageView1D{CompressedPixelFormat::Bc1RGBAUnorm, 0x0f, Containers::Array{64}}, filename)); CORRADE_COMPARE_AS(filename, @@ -3637,16 +3615,15 @@ void AbstractImageConverterTest::convertCompressed2DToFileThroughLevels() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels2DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(CompressedImageView2D{CompressedPixelFormat::Bc1RGBAUnorm, {0x0f, 0x0d}, Containers::Array{64}}, filename)); CORRADE_COMPARE_AS(filename, @@ -3657,16 +3634,15 @@ void AbstractImageConverterTest::convertCompressed3DToFileThroughLevels() { struct: AbstractImageConverter { ImageConverterFeatures doFeatures() const override { return ImageConverterFeature::ConvertCompressedLevels3DToFile; } bool doConvertToFile(Containers::ArrayView imageLevels, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( + return Utility::Path::write(filename, Containers::arrayView( {char(imageLevels[0].size().x()), char(imageLevels[0].size().y()), char(imageLevels[0].size().z()), char(imageLevels.size())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "image.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "image.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(CompressedImageView3D{CompressedPixelFormat::Bc1RGBAUnorm, {0x0f, 0x0d, 0x0e}, Containers::Array{64}}, filename)); CORRADE_COMPARE_AS(filename, diff --git a/src/Magnum/Trade/Test/AbstractImporterTest.cpp b/src/Magnum/Trade/Test/AbstractImporterTest.cpp index 799885abb..e213de99b 100644 --- a/src/Magnum/Trade/Test/AbstractImporterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractImporterTest.cpp @@ -26,11 +26,14 @@ #include #include #include +#include +#include /** @todo remove once Debug is stream-free and AbstractImporter is -free */ #include #include #include +#include #include -#include +#include #include "Magnum/PixelFormat.h" #include "Magnum/FileCallback.h" @@ -831,7 +834,7 @@ void AbstractImporterTest::openFileAsData() { /* doOpenFile() should call doOpenData() */ CORRADE_VERIFY(!importer.isOpened()); - CORRADE_VERIFY(importer.openFile(Utility::Directory::join(TRADE_TEST_DIR, "file.bin"))); + CORRADE_VERIFY(importer.openFile(Utility::Path::join(TRADE_TEST_DIR, "file.bin"))); CORRADE_VERIFY(importer.isOpened()); importer.close(); @@ -856,7 +859,10 @@ void AbstractImporterTest::openFileAsDataNotFound() { CORRADE_VERIFY(!importer.openFile("nonexistent.bin")); CORRADE_VERIFY(!importer.isOpened()); - CORRADE_COMPARE(out.str(), "Trade::AbstractImporter::openFile(): cannot open file nonexistent.bin\n"); + /* There's an error message from Path::read() before */ + CORRADE_COMPARE_AS(out.str(), + "\nTrade::AbstractImporter::openFile(): cannot open file nonexistent.bin\n", + TestSuite::Compare::StringHasSuffix); } void AbstractImporterTest::openFileNotImplemented() { diff --git a/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp b/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp index 96866b479..9a03f3444 100644 --- a/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp @@ -25,14 +25,14 @@ #include #include -#include +#include /** @todo remove once Debug is stream-free */ #include #include #include #include #include #include -#include +#include #include "Magnum/Math/Vector3.h" #include "Magnum/Trade/ArrayAllocator.h" @@ -117,7 +117,7 @@ AbstractSceneConverterTest::AbstractSceneConverterTest() { &AbstractSceneConverterTest::debugFlags}); /* Create testing dir */ - Utility::Directory::mkpath(TRADE_TEST_OUTPUT_DIR); + Utility::Path::make(TRADE_TEST_OUTPUT_DIR); } void AbstractSceneConverterTest::featuresNone() { @@ -197,7 +197,7 @@ void AbstractSceneConverterTest::thingNotSupported() { converter.convert(mesh); converter.convertInPlace(mesh); converter.convertToData(mesh); - converter.convertToFile(mesh, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "mesh.out")); + converter.convertToFile(mesh, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "mesh.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractSceneConverter::convert(): mesh conversion not supported\n" "Trade::AbstractSceneConverter::convertInPlace(): mesh conversion not supported\n" @@ -446,15 +446,14 @@ void AbstractSceneConverterTest::convertMeshToFile() { SceneConverterFeatures doFeatures() const override { return SceneConverterFeature::ConvertMeshToFile; } bool doConvertToFile(const MeshData& mesh, Containers::StringView filename) override { - return Utility::Directory::write(filename, Containers::arrayView( {char(mesh.vertexCount())})); + return Utility::Path::write(filename, Containers::arrayView( {char(mesh.vertexCount())})); } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "mesh.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "mesh.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); CORRADE_VERIFY(converter.convertToFile(MeshData{MeshPrimitive::Triangles, 0xef}, filename)); CORRADE_COMPARE_AS(filename, @@ -470,11 +469,10 @@ void AbstractSceneConverterTest::convertMeshToFileThroughData() { } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "mesh.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "mesh.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); /* doConvertToFile() should call doConvertToData() */ CORRADE_VERIFY(converter.convertToFile(MeshData{MeshPrimitive::Triangles, 0xef}, filename)); @@ -491,18 +489,17 @@ void AbstractSceneConverterTest::convertMeshToFileThroughDataFailed() { } } converter; - const std::string filename = Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "mesh.out"); - /* Remove previous file, if any */ - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + Containers::String filename = Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "mesh.out"); + if(Utility::Path::exists(filename)) + CORRADE_VERIFY(Utility::Path::remove(filename)); /* Function should fail, no file should get written and no error output should be printed (the base implementation assumes the plugin does it) */ std::ostringstream out; Error redirectError{&out}; CORRADE_VERIFY(!converter.convertToFile(MeshData{MeshPrimitive::Triangles, 0xef}, filename)); - CORRADE_VERIFY(!Utility::Directory::exists(filename)); + CORRADE_VERIFY(!Utility::Path::exists(filename)); CORRADE_COMPARE(out.str(), ""); } @@ -534,7 +531,7 @@ void AbstractSceneConverterTest::convertMeshToFileNotImplemented() { std::ostringstream out; Error redirectError{&out}; - converter.convertToFile(MeshData{MeshPrimitive::Triangles, 6}, Utility::Directory::join(TRADE_TEST_OUTPUT_DIR, "mesh.out")); + converter.convertToFile(MeshData{MeshPrimitive::Triangles, 6}, Utility::Path::join(TRADE_TEST_OUTPUT_DIR, "mesh.out")); CORRADE_COMPARE(out.str(), "Trade::AbstractSceneConverter::convertToFile(): mesh conversion advertised but not implemented\n"); }