Kaydet (Commit) 8c75e662 authored tarafından Luboš Luňák's avatar Luboš Luňák

adjust BitmapTest::testN8Greyscale() for OpenGL values

Greyscale conversion with OpenGL results in RGB values sometimes
having color components one off compared to the normal VCL values,
so be a bit lenient.

Change-Id: I58c279fb90e540cd2ac76d4217c774ff09229051
Reviewed-on: https://gerrit.libreoffice.org/70778
Tested-by: Jenkins
Reviewed-by: 's avatarLuboš Luňák <l.lunak@collabora.com>
üst 1ab14d87
...@@ -74,6 +74,30 @@ class BitmapTest : public CppUnit::TestFixture ...@@ -74,6 +74,30 @@ class BitmapTest : public CppUnit::TestFixture
CPPUNIT_TEST_SUITE_END(); CPPUNIT_TEST_SUITE_END();
}; };
void assertColorsAreSimilar(int maxDifference, const std::string& message,
const BitmapColor& expected, const BitmapColor& actual)
{
// Check that the two colors match or are reasonably similar.
if (expected == actual)
return;
if (abs(expected.GetRed() - actual.GetRed()) <= maxDifference
&& abs(expected.GetGreen() - actual.GetGreen()) <= maxDifference
&& abs(expected.GetBlue() - actual.GetBlue()) <= maxDifference
&& abs(expected.GetAlpha() - actual.GetAlpha()) <= maxDifference)
{
return;
}
CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual);
}
void assertColorsAreSimilar(int maxDifference, int line, const BitmapColor& expected,
const BitmapColor& actual)
{
std::stringstream stream;
stream << "Line: " << line;
assertColorsAreSimilar(maxDifference, stream.str(), expected, actual);
}
void BitmapTest::testCreation() void BitmapTest::testCreation()
{ {
{ {
...@@ -317,38 +341,38 @@ void BitmapTest::testN8Greyscale() ...@@ -317,38 +341,38 @@ void BitmapTest::testN8Greyscale()
aBmp.Convert(BmpConversion::N8BitGreys); aBmp.Convert(BmpConversion::N8BitGreys);
BitmapReadAccess aBmpReadAccess(aBmp); BitmapReadAccess aBmpReadAccess(aBmp);
CPPUNIT_ASSERT_EQUAL_MESSAGE("Black pixel wrong 8-bit greyscale value", aGreyscalePalette[0], assertColorsAreSimilar(1, "Black pixel wrong 8-bit greyscale value", aGreyscalePalette[0],
aBmpReadAccess.GetColor(0, 0)); aBmpReadAccess.GetColor(0, 0));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Blue pixel wrong 8-bit greyscale value", aGreyscalePalette[14], assertColorsAreSimilar(1, "Blue pixel wrong 8-bit greyscale value", aGreyscalePalette[14],
aBmpReadAccess.GetColor(0, 1)); aBmpReadAccess.GetColor(0, 1));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Green pixel wrong 8-bit greyscale value", aGreyscalePalette[75], assertColorsAreSimilar(1, "Green pixel wrong 8-bit greyscale value", aGreyscalePalette[75],
aBmpReadAccess.GetColor(0, 2)); aBmpReadAccess.GetColor(0, 2));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Cyan pixel wrong 8-bit greyscale value", aGreyscalePalette[89], assertColorsAreSimilar(1, "Cyan pixel wrong 8-bit greyscale value", aGreyscalePalette[89],
aBmpReadAccess.GetColor(0, 3)); aBmpReadAccess.GetColor(0, 3));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Red pixel wrong 8-bit greyscale value", aGreyscalePalette[38], assertColorsAreSimilar(1, "Red pixel wrong 8-bit greyscale value", aGreyscalePalette[38],
aBmpReadAccess.GetColor(1, 0)); aBmpReadAccess.GetColor(1, 0));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Magenta pixel wrong 8-bit greyscale value", aGreyscalePalette[52], assertColorsAreSimilar(1, "Magenta pixel wrong 8-bit greyscale value", aGreyscalePalette[52],
aBmpReadAccess.GetColor(1, 1)); aBmpReadAccess.GetColor(1, 1));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Brown pixel wrong 8-bit greyscale value", aGreyscalePalette[114], assertColorsAreSimilar(1, "Brown pixel wrong 8-bit greyscale value", aGreyscalePalette[114],
aBmpReadAccess.GetColor(1, 2)); aBmpReadAccess.GetColor(1, 2));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Gray pixel wrong 8-bit greyscale value", aGreyscalePalette[128], assertColorsAreSimilar(1, "Gray pixel wrong 8-bit greyscale value", aGreyscalePalette[128],
aBmpReadAccess.GetColor(1, 3)); aBmpReadAccess.GetColor(1, 3));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Light gray pixel wrong 8-bit greyscale value", assertColorsAreSimilar(1, "Light gray pixel wrong 8-bit greyscale value",
aGreyscalePalette[192], aBmpReadAccess.GetColor(2, 0)); aGreyscalePalette[192], aBmpReadAccess.GetColor(2, 0));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Light blue pixel wrong 8-bit greyscale value", assertColorsAreSimilar(1, "Light blue pixel wrong 8-bit greyscale value", aGreyscalePalette[27],
aGreyscalePalette[27], aBmpReadAccess.GetColor(2, 1)); aBmpReadAccess.GetColor(2, 1));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Light green pixel wrong 8-bit greyscale value", assertColorsAreSimilar(1, "Light green pixel wrong 8-bit greyscale value",
aGreyscalePalette[150], aBmpReadAccess.GetColor(2, 2)); aGreyscalePalette[150], aBmpReadAccess.GetColor(2, 2));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Light cyan pixel wrong 8-bit greyscale value", assertColorsAreSimilar(1, "Light cyan pixel wrong 8-bit greyscale value",
aGreyscalePalette[178], aBmpReadAccess.GetColor(2, 3)); aGreyscalePalette[178], aBmpReadAccess.GetColor(2, 3));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Light red pixel wrong 8-bit greyscale value", assertColorsAreSimilar(1, "Light red pixel wrong 8-bit greyscale value", aGreyscalePalette[76],
aGreyscalePalette[76], aBmpReadAccess.GetColor(3, 0)); aBmpReadAccess.GetColor(3, 0));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Light magenta pixel wrong 8-bit greyscale value", assertColorsAreSimilar(1, "Light magenta pixel wrong 8-bit greyscale value",
aGreyscalePalette[104], aBmpReadAccess.GetColor(3, 1)); aGreyscalePalette[104], aBmpReadAccess.GetColor(3, 1));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Yellow pixel wrong 8-bit greyscale value", aGreyscalePalette[227], assertColorsAreSimilar(1, "Yellow pixel wrong 8-bit greyscale value", aGreyscalePalette[227],
aBmpReadAccess.GetColor(3, 2)); aBmpReadAccess.GetColor(3, 2));
CPPUNIT_ASSERT_EQUAL_MESSAGE("White pixel wrong 8-bit greyscale value", aGreyscalePalette[255], assertColorsAreSimilar(1, "White pixel wrong 8-bit greyscale value", aGreyscalePalette[255],
aBmpReadAccess.GetColor(3, 3)); aBmpReadAccess.GetColor(3, 3));
} }
void BitmapTest::testConvert() void BitmapTest::testConvert()
...@@ -461,23 +485,6 @@ void BitmapTest::testScaleSymmetry() ...@@ -461,23 +485,6 @@ void BitmapTest::testScaleSymmetry()
} }
} }
void assertColorsAreSimilar(const BitmapColor& expected, const BitmapColor& actual, int line)
{
// Check that the two colors match or are reasonably similar.
if (expected == actual)
return;
if (abs(expected.GetRed() - actual.GetRed()) < 3
&& abs(expected.GetGreen() - actual.GetGreen()) < 3
&& abs(expected.GetBlue() - actual.GetBlue()) < 3
&& abs(expected.GetAlpha() - actual.GetAlpha()) < 3)
{
return;
}
std::stringstream stream;
stream << "Line: " << line;
CPPUNIT_ASSERT_EQUAL_MESSAGE(stream.str(), expected, actual);
}
void BitmapTest::testScale() void BitmapTest::testScale()
{ {
const bool bExportBitmap(false); const bool bExportBitmap(false);
...@@ -555,12 +562,12 @@ void BitmapTest::testScale() ...@@ -555,12 +562,12 @@ void BitmapTest::testScale()
BitmapReadAccess readAccess(bitmap); BitmapReadAccess readAccess(bitmap);
const int lastW = scaleSize.destSize.getWidth() - 1; const int lastW = scaleSize.destSize.getWidth() - 1;
const int lastH = scaleSize.destSize.getHeight() - 1; const int lastH = scaleSize.destSize.getHeight() - 1;
assertColorsAreSimilar(COL_GREEN, readAccess.GetColor(0, 0), __LINE__); assertColorsAreSimilar(2, __LINE__, COL_GREEN, readAccess.GetColor(0, 0));
assertColorsAreSimilar(COL_RED, readAccess.GetColor(lastH, 0), __LINE__); assertColorsAreSimilar(2, __LINE__, COL_RED, readAccess.GetColor(lastH, 0));
assertColorsAreSimilar(COL_YELLOW, readAccess.GetColor(0, lastW), __LINE__); assertColorsAreSimilar(2, __LINE__, COL_YELLOW, readAccess.GetColor(0, lastW));
assertColorsAreSimilar(COL_BLACK, readAccess.GetColor(lastH, lastW), __LINE__); assertColorsAreSimilar(2, __LINE__, COL_BLACK, readAccess.GetColor(lastH, lastW));
assertColorsAreSimilar(COL_BLUE, readAccess.GetColor(lastH / 2, lastW / 2), assertColorsAreSimilar(2, __LINE__, COL_BLUE,
__LINE__); readAccess.GetColor(lastH / 2, lastW / 2));
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment