From 68cd6f56142bf0c3bbc93170278208be38e4b668 Mon Sep 17 00:00:00 2001 From: Lucas CHOLLET Date: Mon, 27 Feb 2023 14:32:41 -0500 Subject: [PATCH] Tests: Add a test for SOF2 images with only spectral selection You can generate one by using `cjpeg` with the -scan argument. This image has been generated with the following scan file: 0 1 2: 0 0 0 0; 0: 1 9 0 0; 2: 1 63 0 0 ; 1: 1 63 0 0 ; 0: 10 63 0 0; --- Tests/LibGfx/TestImageDecoder.cpp | 11 +++++++++++ Tests/LibGfx/test-inputs/spectral_selection.jpg | Bin 0 -> 8467 bytes 2 files changed, 11 insertions(+) create mode 100644 Tests/LibGfx/test-inputs/spectral_selection.jpg diff --git a/Tests/LibGfx/TestImageDecoder.cpp b/Tests/LibGfx/TestImageDecoder.cpp index 57d5270ad5..4ec10c932e 100644 --- a/Tests/LibGfx/TestImageDecoder.cpp +++ b/Tests/LibGfx/TestImageDecoder.cpp @@ -112,6 +112,17 @@ TEST_CASE(test_jpeg_sof0_several_scans) EXPECT_EQ(frame.image->size(), Gfx::IntSize(720, 859)); } +TEST_CASE(test_jpeg_sof2_spectral_selection) +{ + auto file = MUST(Core::MappedFile::map(TEST_INPUT("spectral_selection.jpg"sv))); + EXPECT(Gfx::JPEGImageDecoderPlugin::sniff(file->bytes())); + auto plugin_decoder = MUST(Gfx::JPEGImageDecoderPlugin::create(file->bytes())); + EXPECT(plugin_decoder->initialize()); + + auto frame = MUST(plugin_decoder->frame(0)); + EXPECT_EQ(frame.image->size(), Gfx::IntSize(592, 800)); +} + TEST_CASE(test_pbm) { auto file = MUST(Core::MappedFile::map(TEST_INPUT("buggie-raw.pbm"sv))); diff --git a/Tests/LibGfx/test-inputs/spectral_selection.jpg b/Tests/LibGfx/test-inputs/spectral_selection.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c77ca210a7d329bc0c98e58df1b93a824b7b105 GIT binary patch literal 8467 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