[Libreoffice-commits] core.git: vcl/qa
Tomaž Vajngerl (via logerrit)
logerrit at kemper.freedesktop.org
Fri Apr 19 08:05:12 UTC 2019
vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx | 46 ++++++++++++++++++-----
1 file changed, 36 insertions(+), 10 deletions(-)
New commits:
commit 39cab14ce5a8d12b0656f0dce13c08a8f81a5dbb
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Thu Apr 18 21:35:46 2019 +0900
Commit: Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Fri Apr 19 10:04:38 2019 +0200
vcl: Allow for rounding errors on Win32 in testAlphaVirtualDevice
Windows Tinerbox fails because of rounding error in blending
(but only in some environments), so allow for a small rounding
error in colors.
Change-Id: If45ae99a445e9d6f795d06d88c902a723913b9a6
Reviewed-on: https://gerrit.libreoffice.org/70932
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx b/vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx
index b363da7386a1..cfb1143f3e02 100644
--- a/vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx
+++ b/vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx
@@ -151,6 +151,22 @@ void BitmapRenderTest::testDrawAlphaBitmapEx()
#endif
}
+#ifdef _WIN32
+
+namespace
+{
+int deltaColor(BitmapColor aColor1, BitmapColor aColor2)
+{
+ int deltaR = std::abs(aColor1.GetRed() - aColor2.GetRed());
+ int deltaG = std::abs(aColor1.GetGreen() - aColor2.GetGreen());
+ int deltaB = std::abs(aColor1.GetBlue() - aColor2.GetBlue());
+
+ return std::max(std::max(deltaR, deltaG), deltaB);
+}
+}
+
+#endif
+
void BitmapRenderTest::testAlphaVirtualDevice()
{
// Create an alpha virtual device
@@ -167,17 +183,20 @@ void BitmapRenderTest::testAlphaVirtualDevice()
CPPUNIT_ASSERT_EQUAL(long(4), aBitmap.GetSizePixel().Width());
CPPUNIT_ASSERT_EQUAL(long(4), aBitmap.GetSizePixel().Height());
Color aColor = aBitmap.GetPixelColor(1, 1);
- CPPUNIT_ASSERT_EQUAL(Color(0xff, 0xff, 0xff, 0xff), aColor);
+ CPPUNIT_ASSERT_EQUAL(Color(0xffffffff), aColor);
// Draw an opaque pixel to the VirDev
- pAlphaVirtualDevice->DrawPixel(Point(1, 1), Color(0x00, 0x22, 0xff, 0x55));
+ pAlphaVirtualDevice->DrawPixel(Point(1, 1), Color(0x0022ff55));
+ aColor = pAlphaVirtualDevice->GetPixel(Point(1, 1));
// Read back the opaque pixel
#ifdef MACOSX
// Oh no.. what we input is not the same as what we get out!
- CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x2C, 0xff, 0x44), pAlphaVirtualDevice->GetPixel(Point(1, 1)));
+ CPPUNIT_ASSERT_EQUAL(Color(0x002Cff44), aColor);
+#elif defined _WIN32
+ CPPUNIT_ASSERT_LESS(3, deltaColor(Color(0x0022ff55), aColor));
#else
- CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x22, 0xff, 0x55), pAlphaVirtualDevice->GetPixel(Point(1, 1)));
+ CPPUNIT_ASSERT_EQUAL(Color(0x0022ff55), aColor);
#endif
// Read back the BitmapEx and check the opaque pixel
@@ -188,20 +207,25 @@ void BitmapRenderTest::testAlphaVirtualDevice()
aColor = aBitmap.GetPixelColor(1, 1);
#ifdef MACOSX
// Oh no.. what we input is not the same as what we get out!
- CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x2C, 0xff, 0x44), aColor);
+ CPPUNIT_ASSERT_EQUAL(Color(0x002Cff44), aColor);
+#elif defined _WIN32
+ CPPUNIT_ASSERT_LESS(3, deltaColor(Color(0x0022ff55), aColor));
#else
- CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x22, 0xff, 0x55), aColor);
+ CPPUNIT_ASSERT_EQUAL(Color(0x0022ff55), aColor);
#endif
// Draw an semi-transparent pixel
pAlphaVirtualDevice->DrawPixel(Point(0, 0), Color(0x44, 0x22, 0xff, 0x55));
+ aColor = pAlphaVirtualDevice->GetPixel(Point(0, 0));
// Read back the semi-transparent pixel
#ifdef MACOSX
// Oh no.. what we input is not the same as what we get out!
- CPPUNIT_ASSERT_EQUAL(Color(0x34, 0x2C, 0xFF, 0x44), pAlphaVirtualDevice->GetPixel(Point(0, 0)));
+ CPPUNIT_ASSERT_EQUAL(Color(0x342CFF44), aColor);
+#elif defined _WIN32
+ CPPUNIT_ASSERT_LESS(3, deltaColor(Color(0x4422FF55), aColor));
#else
- CPPUNIT_ASSERT_EQUAL(Color(0x44, 0x22, 0xFF, 0x55), pAlphaVirtualDevice->GetPixel(Point(0, 0)));
+ CPPUNIT_ASSERT_EQUAL(Color(0x4422FF55), aColor);
#endif
// Read back the BitmapEx and check the semi-transparent pixel
@@ -212,9 +236,11 @@ void BitmapRenderTest::testAlphaVirtualDevice()
aColor = aBitmap.GetPixelColor(0, 0);
#ifdef MACOSX
// Oh no.. what we input is not the same as what we get out!
- CPPUNIT_ASSERT_EQUAL(Color(0x34, 0x2C, 0xFF, 0x44), aColor);
+ CPPUNIT_ASSERT_EQUAL(Color(0x342CFF44), aColor);
+#elif defined _WIN32
+ CPPUNIT_ASSERT_LESS(3, deltaColor(Color(0x4422FF55), aColor));
#else
- CPPUNIT_ASSERT_EQUAL(Color(0x44, 0x22, 0xFF, 0x55), aColor);
+ CPPUNIT_ASSERT_EQUAL(Color(0x4422FF55), aColor);
#endif
}
More information about the Libreoffice-commits
mailing list