Mark WriteImage() as Do not remove Only PNG is handled by WriteImage() for now so only save to file paths ending with ".png". Add coverage of WriteImage() in avifimagetest.cc.
diff --git a/tests/gtest/avifimagetest.cc b/tests/gtest/avifimagetest.cc index 297f2b2..43954eb 100644 --- a/tests/gtest/avifimagetest.cc +++ b/tests/gtest/avifimagetest.cc
@@ -40,5 +40,15 @@ IsValidAvifImageCreate(0, 0, /*depth=*/17, AVIF_PIXEL_FORMAT_YUV400)); } +TEST(AvifImageTest, WriteImage) { + testutil::AvifImagePtr image = + testutil::CreateImage(/*width=*/12, /*height=*/34, /*depth=*/10, + AVIF_PIXEL_FORMAT_YUV444, AVIF_PLANES_ALL); + ASSERT_NE(image, nullptr); + testutil::FillImageGradient(image.get()); + ASSERT_TRUE(testutil::WriteImage( + image.get(), (testing::TempDir() + "/avifimagetest.png").c_str())); +} + } // namespace } // namespace libavif
diff --git a/tests/gtest/aviftest_helpers.cc b/tests/gtest/aviftest_helpers.cc index e7c54b2..32e7f1b 100644 --- a/tests/gtest/aviftest_helpers.cc +++ b/tests/gtest/aviftest_helpers.cc
@@ -8,6 +8,7 @@ #include <cmath> #include <cstdint> #include <cstdlib> +#include <cstring> #include <string> #include <vector> @@ -340,9 +341,15 @@ } bool WriteImage(const avifImage* image, const char* file_path) { - return avifPNGWrite(file_path, image, /*requestedDepth=*/0, - AVIF_CHROMA_UPSAMPLING_BEST_QUALITY, - /*compressionLevel=*/0); + if (!image || !file_path) return false; + const size_t str_len = std::strlen(file_path); + if (str_len >= 4 && !std::strncmp(file_path + str_len - 4, ".png", 4)) { + return avifPNGWrite(file_path, image, /*requestedDepth=*/0, + AVIF_CHROMA_UPSAMPLING_BEST_QUALITY, + /*compressionLevel=*/0); + } + // Other formats are not supported. + return false; } AvifRwData Encode(const avifImage* image, int speed) {
diff --git a/tests/gtest/aviftest_helpers.h b/tests/gtest/aviftest_helpers.h index af5e00f..ba99faf 100644 --- a/tests/gtest/aviftest_helpers.h +++ b/tests/gtest/aviftest_helpers.h
@@ -92,6 +92,7 @@ avifBool ignore_icc = false, avifBool ignore_exif = false, avifBool ignore_xmp = false); // Convenient wrapper around avifPNGWrite() for debugging purposes. +// Do not remove. bool WriteImage(const avifImage* image, const char* file_path); // Encodes the image with default parameters.