From 2ecdaa672b0362eb314afeea811c72cfa06bb20a Mon Sep 17 00:00:00 2001 From: Xisco Fauli Date: Tue, 15 Dec 2020 22:10:59 +0100 Subject: tdf#138950: vcl_jpeg_read_write: Add unittest Change-Id: Ia1adcac3e10d1aa17281963d27718a37bf37b953 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107814 Tested-by: Jenkins Reviewed-by: Xisco Fauli --- vcl/qa/cppunit/jpeg/JpegReaderTest.cxx | 29 +++++++++++++++++++++++++++++ vcl/qa/cppunit/jpeg/data/tdf138950.jpeg | Bin 0 -> 60662 bytes 2 files changed, 29 insertions(+) create mode 100644 vcl/qa/cppunit/jpeg/data/tdf138950.jpeg diff --git a/vcl/qa/cppunit/jpeg/JpegReaderTest.cxx b/vcl/qa/cppunit/jpeg/JpegReaderTest.cxx index 78124beef5f3..9c01583d1f8c 100644 --- a/vcl/qa/cppunit/jpeg/JpegReaderTest.cxx +++ b/vcl/qa/cppunit/jpeg/JpegReaderTest.cxx @@ -28,11 +28,13 @@ public: void testReadRGB(); void testReadGray(); void testReadCMYK(); + void testTdf138950(); CPPUNIT_TEST_SUITE(JpegReaderTest); CPPUNIT_TEST(testReadRGB); CPPUNIT_TEST(testReadGray); CPPUNIT_TEST(testReadCMYK); + CPPUNIT_TEST(testTdf138950); CPPUNIT_TEST_SUITE_END(); }; @@ -162,6 +164,33 @@ void JpegReaderTest::testReadCMYK() CPPUNIT_ASSERT_EQUAL(4, getNumberOfImageComponents(aGraphic)); } +void JpegReaderTest::testTdf138950() +{ + Graphic aGraphic = loadJPG(getFullUrl("tdf138950.jpeg")); + Bitmap aBitmap = aGraphic.GetBitmapEx().GetBitmap(); + Size aSize = aBitmap.GetSizePixel(); + CPPUNIT_ASSERT_EQUAL(tools::Long(720), aSize.Width()); + CPPUNIT_ASSERT_EQUAL(tools::Long(1280), aSize.Height()); + + Bitmap::ScopedReadAccess pReadAccess(aBitmap); + int nBlackCount = 0; + for (tools::Long nY = 0; nY < aSize.Height(); ++nY) + { + for (tools::Long nX = 0; nX < aSize.Width(); ++nX) + { + const Color aColor = pReadAccess->GetColor(nY, nX); + if ((aColor.GetRed() == 0x00) && (aColor.GetGreen() == 0x00) + && (aColor.GetBlue() == 0x00)) + ++nBlackCount; + } + } + + // Without the fix in place, this test would have failed with + // - Expected: 0 + // - Actual : 921600 + CPPUNIT_ASSERT_EQUAL(0, nBlackCount); +} + CPPUNIT_TEST_SUITE_REGISTRATION(JpegReaderTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/vcl/qa/cppunit/jpeg/data/tdf138950.jpeg b/vcl/qa/cppunit/jpeg/data/tdf138950.jpeg new file mode 100644 index 000000000000..d0296077c6bb Binary files /dev/null and b/vcl/qa/cppunit/jpeg/data/tdf138950.jpeg differ -- cgit