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: */

Reply via email to