summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2018-12-24 14:32:20 +0300
committerMichael Weghorn <m.weghorn@posteo.de>2019-04-27 15:37:57 +0200
commitf6bca0587e337553cacfdbe16cbe3806639327a0 (patch)
tree4c1432f3d0977e601f44fa4569a7bc88120ebd00
parentdd8e9e7e271ce2d60a35a778ac265e8dda25c060 (diff)
Fix CppunitTest_chart2_xshape failing with Display Scaling on Windows
See thread starting at https://lists.freedesktop.org/archives/libreoffice/2018-December/081589.html Regression from commit 7263d223ddf42cc39d10a501159c7b04ef48df96. That change has made unit tests DPI-aware; and then some tests started failing on systems with resolutions other than 96 DPI. It has been suggested that the proper fix would be to do for Windows what commit ada20402efa81273e03e46cbedc21f25b9daeeac did for macOS. Another approach would be to fix all the tests to be DPI-aware. I cannot do the first mentioned fix; so I have fixed testFDO74215 test in sw_ooxmlexport4; and added DPI checks to the other failing tests in chart2_xshape and sc_subsequent_filters_test to skip testing when using non-default DPI. This is not ideal, of course, and conditionally skipped tests need to be re-enabled unconditionally once a proper fix arrives. Change-Id: I5c92cfe93ae65f53a8a180fcaec49231df377b8a Reviewed-on: https://gerrit.libreoffice.org/65595 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 9520378e37b97b0a44130c86be482060465b479e) Reviewed-on: https://gerrit.libreoffice.org/71356 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
-rw-r--r--chart2/qa/extras/xshape/chart2xshape.cxx26
-rw-r--r--sc/qa/unit/subsequent_filters-test.cxx12
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport4.cxx32
3 files changed, 62 insertions, 8 deletions
diff --git a/chart2/qa/extras/xshape/chart2xshape.cxx b/chart2/qa/extras/xshape/chart2xshape.cxx
index 8021990e0be3..19ed5bf40974 100644
--- a/chart2/qa/extras/xshape/chart2xshape.cxx
+++ b/chart2/qa/extras/xshape/chart2xshape.cxx
@@ -21,6 +21,8 @@
#include <test/xmldiff.hxx>
#include <test/xmltesttools.hxx>
+#include <vcl/outdev.hxx>
+#include <vcl/svapp.hxx>
#include <fstream>
@@ -121,6 +123,12 @@ void Chart2XShapeTest::testPropertyMappingBarChart()
void Chart2XShapeTest::testPieChartLabels1()
{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (Application::GetDefaultDevice()->GetDPIX() != 96
+ || Application::GetDefaultDevice()->GetDPIY() != 96)
+ return;
+
// inside placement for the best fit case
load("chart2/qa/extras/xshape/data/xlsx/", "tdf90839-1.xlsx");
compareAgainstReference("tdf90839-1.xml");
@@ -128,6 +136,12 @@ void Chart2XShapeTest::testPieChartLabels1()
void Chart2XShapeTest::testPieChartLabels2()
{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (Application::GetDefaultDevice()->GetDPIX() != 96
+ || Application::GetDefaultDevice()->GetDPIY() != 96)
+ return;
+
// text wrap: wrap all text labels except one
load("chart2/qa/extras/xshape/data/xlsx/", "tdf90839-2.xlsx");
compareAgainstReference("tdf90839-2.xml");
@@ -135,6 +149,12 @@ void Chart2XShapeTest::testPieChartLabels2()
void Chart2XShapeTest::testPieChartLabels3()
{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (Application::GetDefaultDevice()->GetDPIX() != 96
+ || Application::GetDefaultDevice()->GetDPIY() != 96)
+ return;
+
// text wrap: wrap no text label except one
load("chart2/qa/extras/xshape/data/xlsx/", "tdf90839-3.xlsx");
compareAgainstReference("tdf90839-3.xml");
@@ -142,6 +162,12 @@ void Chart2XShapeTest::testPieChartLabels3()
void Chart2XShapeTest::testPieChartLabels4()
{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (Application::GetDefaultDevice()->GetDPIX() != 96
+ || Application::GetDefaultDevice()->GetDPIY() != 96)
+ return;
+
// data value and percent value are centered horizontally
load("chart2/qa/extras/xshape/data/ods/", "tdf90839-4.ods");
compareAgainstReference("tdf90839-4.xml");
diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx
index c1d68418ba1f..c6d3bc4f644e 100644
--- a/sc/qa/unit/subsequent_filters-test.cxx
+++ b/sc/qa/unit/subsequent_filters-test.cxx
@@ -2765,6 +2765,12 @@ void ScFiltersTest::testFormulaDependency()
void ScFiltersTest::testMiscRowHeights()
{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (Application::GetDefaultDevice()->GetDPIX() != 96
+ || Application::GetDefaultDevice()->GetDPIY() != 96)
+ return;
+
static const TestParam::RowData DfltRowData[] =
{
// check rows at the beginning and end of document
@@ -2803,6 +2809,12 @@ void ScFiltersTest::testMiscRowHeights()
void ScFiltersTest::testOptimalHeightReset()
{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (Application::GetDefaultDevice()->GetDPIX() != 96
+ || Application::GetDefaultDevice()->GetDPIY() != 96)
+ return;
+
ScDocShellRef xDocSh = loadDoc("multilineoptimal.", FORMAT_ODS, true);
SCTAB nTab = 0;
SCROW nRow = 0;
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
index f3faf8cfab15..074d7ad977c5 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
@@ -369,14 +369,30 @@ DECLARE_OOXMLEXPORT_TEST(testFDO74215, "FDO74215.docx")
return;
// tdf#106849 NumPicBullet xShape should not to be resized.
-// Seems this is dependent on the running system, which is - unfortunate
-// see: MSWordExportBase::BulletDefinitions
-// FIXME: the size of a bullet is defined by GraphicSize property
-// (stored in SvxNumberFormat::aGraphicSize) so use that for the size
-// (properly convert from 100mm to pt (1 inch is 72 pt, 1 pt is 20 twips).
-#if !defined(MACOSX)
- assertXPath(pXmlDoc, "/w:numbering/w:numPicBullet[2]/w:pict/v:shape", "style", "width:11.25pt;height:11.25pt");
-#endif
+ // This is dependent on the running system: see MSWordExportBase::BulletDefinitions
+ // FIXME: the size of a bullet is defined by GraphicSize property
+ // (stored in SvxNumberFormat::aGraphicSize) so use that for the size
+ // (properly convert from 100mm to pt (1 inch is 72 pt, 1 pt is 20 twips).
+
+ // On 96 DPI "width:11.25pt;height:11.25pt"; on 120 DPI "width:9pt;height:9pt"
+ const OUString sStyle
+ = getXPath(pXmlDoc, "/w:numbering/w:numPicBullet[2]/w:pict/v:shape", "style");
+ {
+ const OUString sWidth = sStyle.getToken(0, ';');
+ CPPUNIT_ASSERT(sWidth.startsWith("width:"));
+ CPPUNIT_ASSERT(sWidth.endsWith("pt"));
+ const double fWidth = sWidth.copy(6, sWidth.getLength() - 8).toDouble();
+ const double fXScaleFactor = 96.0 / Application::GetDefaultDevice()->GetDPIX();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(11.25 * fXScaleFactor, fWidth, 0.001);
+ }
+ {
+ const OUString sHeight = sStyle.getToken(1, ';');
+ CPPUNIT_ASSERT(sHeight.startsWith("height:"));
+ CPPUNIT_ASSERT(sHeight.endsWith("pt"));
+ const double fHeight = sHeight.copy(7, sHeight.getLength() - 9).toDouble();
+ const double fYScaleFactor = 96.0 / Application::GetDefaultDevice()->GetDPIY();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(11.25 * fYScaleFactor, fHeight, 0.001);
+ }
}
DECLARE_OOXMLEXPORT_TEST(testColumnBreak_ColumnCountIsZero,"fdo74153.docx")