vcl/qa/cppunit/graphicfilter/data/tiff/blue16.tif |binary vcl/qa/cppunit/graphicfilter/data/tiff/blue8.tif |binary vcl/qa/cppunit/graphicfilter/data/tiff/green16.tif |binary vcl/qa/cppunit/graphicfilter/data/tiff/green8.tif |binary vcl/qa/cppunit/graphicfilter/data/tiff/red16.tif |binary vcl/qa/cppunit/graphicfilter/data/tiff/red8.tif |binary vcl/qa/cppunit/graphicfilter/filters-tiff-test.cxx | 77 +++++++++++++++++++++ 7 files changed, 77 insertions(+)
New commits: commit 4845e68e6575030464c260406b667f0a51bf4a9e Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Mon Apr 18 12:52:42 2022 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Mon Apr 18 18:15:24 2022 +0200 tdf#142151: vcl_filters: Add unittest While at it, use the files Julien attached to the bug report to test 8 bits and 16 bits Change-Id: Ibed7409483e33200f6183db3df2bd5a0ad6f6a52 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133116 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/vcl/qa/cppunit/graphicfilter/data/tiff/blue16.tif b/vcl/qa/cppunit/graphicfilter/data/tiff/blue16.tif new file mode 100644 index 000000000000..284594d34dd8 Binary files /dev/null and b/vcl/qa/cppunit/graphicfilter/data/tiff/blue16.tif differ diff --git a/vcl/qa/cppunit/graphicfilter/data/tiff/blue8.tif b/vcl/qa/cppunit/graphicfilter/data/tiff/blue8.tif new file mode 100644 index 000000000000..29d17dcb32d8 Binary files /dev/null and b/vcl/qa/cppunit/graphicfilter/data/tiff/blue8.tif differ diff --git a/vcl/qa/cppunit/graphicfilter/data/tiff/green16.tif b/vcl/qa/cppunit/graphicfilter/data/tiff/green16.tif new file mode 100644 index 000000000000..28ae344d82e5 Binary files /dev/null and b/vcl/qa/cppunit/graphicfilter/data/tiff/green16.tif differ diff --git a/vcl/qa/cppunit/graphicfilter/data/tiff/green8.tif b/vcl/qa/cppunit/graphicfilter/data/tiff/green8.tif new file mode 100644 index 000000000000..945ddc7a0461 Binary files /dev/null and b/vcl/qa/cppunit/graphicfilter/data/tiff/green8.tif differ diff --git a/vcl/qa/cppunit/graphicfilter/data/tiff/red16.tif b/vcl/qa/cppunit/graphicfilter/data/tiff/red16.tif new file mode 100644 index 000000000000..9ec1e8d3faa1 Binary files /dev/null and b/vcl/qa/cppunit/graphicfilter/data/tiff/red16.tif differ diff --git a/vcl/qa/cppunit/graphicfilter/data/tiff/red8.tif b/vcl/qa/cppunit/graphicfilter/data/tiff/red8.tif new file mode 100644 index 000000000000..be41707aff16 Binary files /dev/null and b/vcl/qa/cppunit/graphicfilter/data/tiff/red8.tif differ diff --git a/vcl/qa/cppunit/graphicfilter/filters-tiff-test.cxx b/vcl/qa/cppunit/graphicfilter/filters-tiff-test.cxx index d3e7dec94d6f..24ce5492d3be 100644 --- a/vcl/qa/cppunit/graphicfilter/filters-tiff-test.cxx +++ b/vcl/qa/cppunit/graphicfilter/filters-tiff-test.cxx @@ -46,6 +46,8 @@ public: void testTdf115863(); void testTdf138818(); void testRoundtrip(); + void testRGB8bits(); + void testRGB16bits(); CPPUNIT_TEST_SUITE(TiffFilterTest); CPPUNIT_TEST(testCVEs); @@ -53,6 +55,8 @@ public: CPPUNIT_TEST(testTdf115863); CPPUNIT_TEST(testTdf138818); CPPUNIT_TEST(testRoundtrip); + CPPUNIT_TEST(testRGB8bits); + CPPUNIT_TEST(testRGB16bits); CPPUNIT_TEST_SUITE_END(); }; @@ -164,6 +168,79 @@ void TiffFilterTest::testRoundtrip() CPPUNIT_ASSERT_EQUAL(OUString(u"TIF"), aDetector.msDetectedFormat); } +void TiffFilterTest::testRGB8bits() +{ + const std::initializer_list<std::u16string_view> aNames = { + u"red8.tif", + u"green8.tif", + u"blue8.tif", + }; + + for (const auto& rName : aNames) + { + OUString aURL = getUrl() + rName; + SvFileStream aFileStream(aURL, StreamMode::READ); + Graphic aGraphic; + GraphicFilter& rFilter = GraphicFilter::GetGraphicFilter(); + + ErrCode bResult = rFilter.ImportGraphic(aGraphic, aURL, aFileStream); + CPPUNIT_ASSERT_EQUAL(ERRCODE_NONE, bResult); + + Bitmap aBitmap = aGraphic.GetBitmapEx().GetBitmap(); + Size aSize = aBitmap.GetSizePixel(); + CPPUNIT_ASSERT_EQUAL(tools::Long(10), aSize.Width()); + CPPUNIT_ASSERT_EQUAL(tools::Long(10), aSize.Height()); + + Bitmap::ScopedReadAccess pReadAccess(aBitmap); + const Color aColor = pReadAccess->GetColor(5, 5); + + if (rName == u"red8.tif") + CPPUNIT_ASSERT_EQUAL(COL_LIGHTRED, aColor); + else if (rName == u"green8.tif") + CPPUNIT_ASSERT_EQUAL(COL_LIGHTGREEN, aColor); + else + CPPUNIT_ASSERT_EQUAL(COL_LIGHTBLUE, aColor); + } +} + +void TiffFilterTest::testRGB16bits() +{ + const std::initializer_list<std::u16string_view> aNames = { + u"red16.tif", + u"green16.tif", + u"blue16.tif", + }; + + for (const auto& rName : aNames) + { + OUString aURL = getUrl() + rName; + SvFileStream aFileStream(aURL, StreamMode::READ); + Graphic aGraphic; + GraphicFilter& rFilter = GraphicFilter::GetGraphicFilter(); + + ErrCode bResult = rFilter.ImportGraphic(aGraphic, aURL, aFileStream); + CPPUNIT_ASSERT_EQUAL(ERRCODE_NONE, bResult); + + Bitmap aBitmap = aGraphic.GetBitmapEx().GetBitmap(); + Size aSize = aBitmap.GetSizePixel(); + CPPUNIT_ASSERT_EQUAL(tools::Long(10), aSize.Width()); + CPPUNIT_ASSERT_EQUAL(tools::Long(10), aSize.Height()); + + Bitmap::ScopedReadAccess pReadAccess(aBitmap); + const Color aColor = pReadAccess->GetColor(5, 5); + + if (rName == u"red16.tif") + CPPUNIT_ASSERT_EQUAL(COL_LIGHTRED, aColor); + else if (rName == u"green16.tif") + // tdf#142151: Without the fix in place, this test would have failed with + // - Expected: rgba[00ff00ff] + // - Actual : rgba[000000ff] + CPPUNIT_ASSERT_EQUAL(COL_LIGHTGREEN, aColor); + else + CPPUNIT_ASSERT_EQUAL(COL_LIGHTBLUE, aColor); + } +} + CPPUNIT_TEST_SUITE_REGISTRATION(TiffFilterTest); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */