sw/qa/extras/ooxmlexport/data/tdf153042_largeTab.docx |binary sw/qa/extras/ooxmlexport/data/tdf153042_noTab.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport18.cxx | 32 ++++++++++++++++++ sw/qa/extras/rtfimport/rtfimport.cxx | 8 ++++ sw/qa/extras/ww8export/ww8export3.cxx | 5 ++ 5 files changed, 45 insertions(+)
New commits: commit ff3440535e786c73237176670372c565ca3421b4 Author: Justin Luth <jl...@mail.com> AuthorDate: Thu Feb 9 11:05:48 2023 -0500 Commit: Justin Luth <jl...@mail.com> CommitDate: Thu Feb 9 23:14:46 2023 +0000 tdf#153042 doc/x/rtf: pre-emptive unit tests for numbering tabstop These existing unit tests need to have a tabstop in the front. Although different versions of MS Word can handle similar situations differently (regardless of compatibility settings - i.e. buggy) in these cases they are all rendered the same way by Word 2003/2010/2019. make CppunitTest_sw_rtfimport CPPUNIT_TEST_NAME=testTdf78506 make CppunitTest_sw_rtfimport CPPUNIT_TEST_NAME=testTdf116265 In this one, LO's chapter numbering defaults to none-numbering followed by a tabstop. The tabstop should not be there/never become visible. make CppunitTest_sw_ww8export3 CPPUNIT_TEST_NAME=testPresetDash For this added test, older versions of Word 2010/2003 don't show a tabstop. According to MS Word 2019 however, this should have a tabstop in the front. make CppunitTest_sw_ooxmlexport18 CPPUNIT_TEST_NAME=testTdf153042_largeTab ... but this nearly identical file does not display with any tabstop, and looks the same in all versions of Word. make CppunitTest_sw_ooxmlexport18 CPPUNIT_TEST_NAME=testTdf153042_noTab Change-Id: I59d904ef7dd37b694b02f57d6743ee5b232b42a6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146731 Tested-by: Jenkins Reviewed-by: Justin Luth <jl...@mail.com> diff --git a/sw/qa/extras/ooxmlexport/data/tdf153042_largeTab.docx b/sw/qa/extras/ooxmlexport/data/tdf153042_largeTab.docx new file mode 100644 index 000000000000..87730d6d1215 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf153042_largeTab.docx differ diff --git a/sw/qa/extras/ooxmlexport/data/tdf153042_noTab.docx b/sw/qa/extras/ooxmlexport/data/tdf153042_noTab.docx new file mode 100644 index 000000000000..38b5208eab44 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf153042_noTab.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx index 2441a7febfd8..8de09d6d3c7c 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx @@ -80,6 +80,38 @@ DECLARE_OOXMLEXPORT_TEST(testTdf147646, "tdf147646_mergedCellNumbering.docx") CPPUNIT_ASSERT_EQUAL(OUString("2."),parseDump("/root/page/body/tab/row[4]/cell/txt/SwParaPortion/SwLineLayout/child::*[@type='PortionType::Number']","expand")); } +DECLARE_OOXMLEXPORT_TEST(testTdf153042_largeTab, "tdf153042_largeTab.docx") +{ + // This is not the greatest test because it is slightly weird, and has a different layout + // in MS Word 2010/2003 than it does in Word 2019. This tests for the 2019 layout. + // Additionally (in Word 2019), going to paragraph properties and hitting OK changes the layout. + // It changes back by going to outline numbering properties and hitting OK. + + // export does not keep the tabstop when exporting non-numbering. (Probably a good thing...) + if (isExported()) + return; + + const auto& pLayout = parseLayoutDump(); + // Ensure a large tabstop is used in the pseudo-numbering (numbering::NONE followed by tabstop) + assertXPath(pLayout, "//SwFixPortion", "width", "1701"); +} + +DECLARE_OOXMLEXPORT_TEST(testTdf153042_noTab, "tdf153042_noTab.docx") +{ + // This is not the greatest test because it is slightly weird. + // It is the same as the "largeTab" file, except the paragraph properties were viewed + // and OK'ed, and now it looks like how Word 2010 and 2003 were laying it out. + // Amazingly, LO is handling both documents correctly at the moment, so let's unit test that... + + // export does not keep the tabstop when exporting non-numbering. (Probably a good thing...) + if (isExported()) + return; + + const auto& pLayout = parseLayoutDump(); + // Ensure a miniscule tab is used in the pseudo-numbering (numbering::NONE followed by tabstop) + assertXPath(pLayout, "//SwFixPortion", "width", "10"); +} + CPPUNIT_TEST_FIXTURE(Test, testTdf149551_mongolianVert) { // Given a docx document with a shape with vert="mongolianVert". diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index eb2596e44c44..37acceaa7d6c 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -743,6 +743,10 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf116265) // matching \fi in list definition (and with invalid level numbers). CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraph(2), "ParaFirstLineIndent")); + + const auto& pLayout = parseLayoutDump(); + // Ensure that there is a tabstop in the pseudo-numbering (numbering::NONE followed by tabstop) + assertXPath(pLayout, "//SwFixPortion", 1); } CPPUNIT_TEST_FIXTURE(Test, testFdo66565) @@ -1422,6 +1426,10 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf78506) // This was '0', invalid \levelnumbers wasn't ignored. CPPUNIT_ASSERT(rProp.Value.get<OUString>().isEmpty()); } + + const auto& pLayout = parseLayoutDump(); + // Ensure that there is a tabstop in the pseudo-numbering (numbering::NONE followed by tabstop) + assertXPath(pLayout, "//SwFixPortion", 1); } CPPUNIT_TEST_FIXTURE(Test, testTdf117403) diff --git a/sw/qa/extras/ww8export/ww8export3.cxx b/sw/qa/extras/ww8export/ww8export3.cxx index ae83818c16e2..0b116c232d60 100644 --- a/sw/qa/extras/ww8export/ww8export3.cxx +++ b/sw/qa/extras/ww8export/ww8export3.cxx @@ -852,6 +852,11 @@ DECLARE_WW8EXPORT_TEST(testPresetDash, "tdf127166_prstDash_Word97.doc") && aPresetLineDash.Distance == aShapeLineDash.Distance; CPPUNIT_ASSERT_MESSAGE("LineDash differ", bIsEqual); } + + const auto& pLayout = parseLayoutDump(); + // Ensure that there is no tabstop in the first paragraph (despite chapter numbering's setting) + // This is a pre-emptive test to ensure something visibly correct is not broken. + assertXPath(pLayout, "//body/txt[1]//SwFixPortion", 0); } CPPUNIT_TEST_FIXTURE(Test, testRtlGutter)