From 404093a42e2fad7f76995300dfc129883fc6f969 Mon Sep 17 00:00:00 2001 From: Lucas CHOLLET Date: Sun, 29 Oct 2023 00:12:05 -0400 Subject: [PATCH] Tests/LibGfx: Add a test for the TIFF decoder --- Tests/LibGfx/TestImageDecoder.cpp | 13 +++++++++++++ Tests/LibGfx/test-inputs/uncompressed.tiff | Bin 0 -> 360269 bytes 2 files changed, 13 insertions(+) create mode 100644 Tests/LibGfx/test-inputs/uncompressed.tiff diff --git a/Tests/LibGfx/TestImageDecoder.cpp b/Tests/LibGfx/TestImageDecoder.cpp index f61ae92013..a2b4275bd9 100644 --- a/Tests/LibGfx/TestImageDecoder.cpp +++ b/Tests/LibGfx/TestImageDecoder.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -369,6 +370,18 @@ TEST_CASE(test_targa_top_left_compressed) expect_single_frame(*plugin_decoder); } +TEST_CASE(test_tiff_uncompressed) +{ + auto file = MUST(Core::MappedFile::map(TEST_INPUT("uncompressed.tiff"sv))); + EXPECT(Gfx::TIFFImageDecoderPlugin::sniff(file->bytes())); + auto plugin_decoder = MUST(Gfx::TIFFImageDecoderPlugin::create(file->bytes())); + + auto frame = expect_single_frame_of_size(*plugin_decoder, { 400, 300 }); + + EXPECT_EQ(frame.image->get_pixel(0, 0), Gfx::Color::NamedColor::White); + EXPECT_EQ(frame.image->get_pixel(60, 75), Gfx::Color::NamedColor::Red); +} + TEST_CASE(test_webp_simple_lossy) { auto file = MUST(Core::MappedFile::map(TEST_INPUT("webp/simple-vp8.webp"sv))); diff --git a/Tests/LibGfx/test-inputs/uncompressed.tiff b/Tests/LibGfx/test-inputs/uncompressed.tiff new file mode 100644 index 0000000000000000000000000000000000000000..f16883dd3106dd3b05475aa25cd477ac8f0642db GIT binary patch literal 360269 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 ajtC|Ojtwjfj9}=Ln4FznlwX>c!T