summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorJustin Luth <justin_luth@sil.org>2016-10-07 13:44:01 +0300
committerJustin Luth <justin_luth@sil.org>2016-10-11 05:09:49 +0000
commit086550313260d9fa45b91dc705b21bb9b51ce0b8 (patch)
tree4c5dea7564b7f0b6447ee37ebd749a961271fbe3 /sw
parent91d406f5afb6e08f418d14761beb4a5af5783275 (diff)
move round-tripables to ooxmlexport
This serves two purposes. It helps to prevent regressions and it allows focus on features that still don't export properly. The standard .mk file had trouble on the Mac, so I ended up copying ooxmlimport.mk instead of trying to tweak the export template. The huge section of tests excluded from Win32 testing is still excluded here. The ole-anchor test works as export in the import code, but didn't work from the ooxmlexport directory, so left that one as import only. Change-Id: I9d72202c577940ba94855096c5a11d4dec4790a5 Reviewed-on: https://gerrit.libreoffice.org/29588 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Justin Luth <justin_luth@sil.org>
Diffstat (limited to 'sw')
-rw-r--r--sw/CppunitTest_sw_ooxmlexport8.mk104
-rw-r--r--sw/CppunitTest_sw_ooxmlexport9.mk16
-rw-r--r--sw/Module_sw.mk2
-rw-r--r--sw/ooxmlexport_setup.mk1
-rw-r--r--sw/qa/extras/ooxmlexport/data/all_gaps_word.docx (renamed from sw/qa/extras/ooxmlimport/data/all_gaps_word.docx)bin10226 -> 10226 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/annotation-formatting.docx (renamed from sw/qa/extras/ooxmlimport/data/annotation-formatting.docx)bin14298 -> 14298 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/bnc780044_spacing.docx (renamed from sw/qa/extras/ooxmlimport/data/bnc780044_spacing.docx)bin7437 -> 7437 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/bnc865381.docx (renamed from sw/qa/extras/ooxmlimport/data/bnc865381.docx)bin19510 -> 19510 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/bnc875718.docx (renamed from sw/qa/extras/ooxmlimport/data/bnc875718.docx)bin7369 -> 7369 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/bnc891663.docx (renamed from sw/qa/extras/ooxmlimport/data/bnc891663.docx)bin7911 -> 7911 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/caption.docx (renamed from sw/qa/extras/ooxmlimport/data/caption.docx)bin13773 -> 13773 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/chart-prop.docx (renamed from sw/qa/extras/ooxmlimport/data/chart-prop.docx)bin17749 -> 17749 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/chart-size.docx (renamed from sw/qa/extras/ooxmlimport/data/chart-size.docx)bin18128 -> 18128 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/chtoutline.docx (renamed from sw/qa/extras/ooxmlimport/data/chtoutline.docx)bin15406 -> 15406 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/conditionalstyles-tbllook.docx (renamed from sw/qa/extras/ooxmlimport/data/conditionalstyles-tbllook.docx)bin11531 -> 11531 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/dml-charheight-default.docx (renamed from sw/qa/extras/ooxmlimport/data/dml-charheight-default.docx)bin15770 -> 15770 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/dml-groupshape-capitalization.docx (renamed from sw/qa/extras/ooxmlimport/data/dml-groupshape-capitalization.docx)bin17676 -> 17676 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/dml-groupshape-runfonts.docx (renamed from sw/qa/extras/ooxmlimport/data/dml-groupshape-runfonts.docx)bin16971 -> 16971 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/dml-groupshape-sdt.docx (renamed from sw/qa/extras/ooxmlimport/data/dml-groupshape-sdt.docx)bin19727 -> 19727 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo38414.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo38414.docx)bin21800 -> 21800 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo43093b.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo43093.docx)bin12959 -> 12959 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo46361.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo46361.docx)bin13791 -> 13791 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo49940.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo49940.docx)bin9909 -> 9909 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo52208.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo52208.docx)bin13356 -> 13356 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo53985.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo53985.docx)bin20115 -> 20115 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo55187.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo55187.docx)bin12759 -> 12759 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo59273.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo59273.docx)bin4358 -> 4358 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo59638.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo59638.docx)bin12166 -> 12166 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo60922.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo60922.docx)bin4503 -> 4503 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo61343.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo61343.docx)bin114220 -> 114220 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo63685.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo63685.docx)bin10964 -> 10964 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo65090.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo65090.docx)bin10409 -> 10409 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo65632.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo65632.docx)bin12862 -> 12862 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo66474.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo66474.docx)bin96326 -> 96326 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo68607.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo68607.docx)bin36117 -> 36117 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo69548.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo69548.docx)bin3802 -> 3802 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo70457.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo70457.docx)bin20296 -> 20296 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo72560.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo72560.docx)bin15144 -> 15144 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo73389.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo73389.docx)bin11067 -> 11067 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo74357.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo74357.docx)bin11930 -> 11930 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo74401.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo74401.docx)bin18425 -> 18425 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo74745.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo74745.docx)bin32560 -> 32560 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo78883.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo78883.docx)bin18303 -> 18303 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo78904.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo78904.docx)bin14388 -> 14388 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo78939.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo78939.docx)bin73680 -> 73680 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo79535.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo79535.docx)bin22547 -> 22547 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo79738.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo79738.docx)bin10159 -> 10159 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo80555.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo80555.docx)bin15018 -> 15018 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo81486.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo81486.docx)bin13354 -> 13354 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo85542.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo85542.docx)bin10299 -> 10299 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/file_crash.docx (renamed from sw/qa/extras/ooxmlimport/data/file_crash.docx)bin17243 -> 17243 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/floating-tables-anchor.docx (renamed from sw/qa/extras/ooxmlimport/data/floating-tables-anchor.docx)bin16348 -> 16348 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/footnote.docx (renamed from sw/qa/extras/ooxmlimport/data/footnote.docx)bin15779 -> 15779 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/frame-wrap-auto.docx (renamed from sw/qa/extras/ooxmlimport/data/frame-wrap-auto.docx)bin10348 -> 10348 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/gridbefore.docx (renamed from sw/qa/extras/ooxmlimport/data/gridbefore.docx)bin4987 -> 4987 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/groupshape-rotation.docx (renamed from sw/qa/extras/ooxmlimport/data/groupshape-rotation.docx)bin10462 -> 10462 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/groupshape-smarttag.docx (renamed from sw/qa/extras/ooxmlimport/data/groupshape-smarttag.docx)bin10694 -> 10694 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/groupshape-trackedchanges.docx (renamed from sw/qa/extras/ooxmlimport/data/groupshape-trackedchanges.docx)bin17667 -> 17667 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/hello.docx (renamed from sw/qa/extras/ooxmlimport/data/hello.docx)bin12578 -> 12578 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/hidemark.docx (renamed from sw/qa/extras/ooxmlimport/data/hidemark.docx)bin12816 -> 12816 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/i124106.docx (renamed from sw/qa/extras/ooxmlimport/data/i124106.docx)bin4810 -> 4810 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/imgshadow.docx (renamed from sw/qa/extras/ooxmlimport/data/imgshadow.docx)bin29629 -> 29629 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/indentation.docx (renamed from sw/qa/extras/ooxmlimport/data/indentation.docx)bin16945 -> 16945 bytes
-rwxr-xr-xsw/qa/extras/ooxmlexport/data/indents.docx (renamed from sw/qa/extras/ooxmlimport/data/indents.docx)bin11553 -> 11553 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/inline-groupshape.docx (renamed from sw/qa/extras/ooxmlimport/data/inline-groupshape.docx)bin16992 -> 16992 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/large-twips.docx (renamed from sw/qa/extras/ooxmlimport/data/large-twips.docx)bin5365 -> 5365 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/libreoffice.png (renamed from sw/qa/extras/ooxmlimport/data/libreoffice.png)bin767 -> 767 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/mathtype.docx (renamed from sw/qa/extras/ooxmlimport/data/mathtype.docx)bin12533 -> 12533 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/mce-nested.docx (renamed from sw/qa/extras/ooxmlimport/data/mce-nested.docx)bin32734 -> 32734 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/mce-wpg.docx (renamed from sw/qa/extras/ooxmlimport/data/mce-wpg.docx)bin17404 -> 17404 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/missing-path.docx (renamed from sw/qa/extras/ooxmlimport/data/missing-path.docx)bin15860 -> 15860 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/msobrightnesscontrast.docx (renamed from sw/qa/extras/ooxmlimport/data/msobrightnesscontrast.docx)bin18972 -> 18972 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n592908-frame.docx (renamed from sw/qa/extras/ooxmlimport/data/n592908-frame.docx)bin13589 -> 13589 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n592908-picture.docx (renamed from sw/qa/extras/ooxmlimport/data/n592908-picture.docx)bin62593 -> 62593 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n652364.docx (renamed from sw/qa/extras/ooxmlimport/data/n652364.docx)bin8975 -> 8975 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n693238.docx (renamed from sw/qa/extras/ooxmlimport/data/n693238.docx)bin9933 -> 9933 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n705956-1.docx (renamed from sw/qa/extras/ooxmlimport/data/n705956-1.docx)bin7861 -> 7861 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n705956-2.docx (renamed from sw/qa/extras/ooxmlimport/data/n705956-2.docx)bin9363 -> 9363 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n747461.docx (renamed from sw/qa/extras/ooxmlimport/data/n747461.docx)bin6489 -> 6489 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n750255.docx (renamed from sw/qa/extras/ooxmlimport/data/n750255.docx)bin10102 -> 10102 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n750935.docx (renamed from sw/qa/extras/ooxmlimport/data/n750935.docx)bin57750 -> 57750 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n751054.docx (renamed from sw/qa/extras/ooxmlimport/data/n751054.docx)bin13100 -> 13100 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n751117.docx (renamed from sw/qa/extras/ooxmlimport/data/n751117.docx)bin10312 -> 10312 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n764005.docx (renamed from sw/qa/extras/ooxmlimport/data/n764005.docx)bin13088 -> 13088 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n766481.docx (renamed from sw/qa/extras/ooxmlimport/data/n766481.docx)bin10021 -> 10021 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n766487.docx (renamed from sw/qa/extras/ooxmlimport/data/n766487.docx)bin9273 -> 9273 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n775906.docx (renamed from sw/qa/extras/ooxmlimport/data/n775906.docx)bin11750 -> 11750 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n777337.docx (renamed from sw/qa/extras/ooxmlimport/data/n777337.docx)bin13409 -> 13409 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n778828.docx (renamed from sw/qa/extras/ooxmlimport/data/n778828.docx)bin10012 -> 10012 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n778836.docx (renamed from sw/qa/extras/ooxmlimport/data/n778836.docx)bin9649 -> 9649 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n779630.docx (renamed from sw/qa/extras/ooxmlimport/data/n779630.docx)bin12500 -> 12500 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n779642.docx (renamed from sw/qa/extras/ooxmlimport/data/n779642.docx)bin85485 -> 85485 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n779834.docx (renamed from sw/qa/extras/ooxmlimport/data/n779834.docx)bin22624 -> 22624 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n779941.docx (renamed from sw/qa/extras/ooxmlimport/data/n779941.docx)bin10316 -> 10316 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n780563.docx (renamed from sw/qa/extras/ooxmlimport/data/n780563.docx)bin24144 -> 24144 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n780843.docx (renamed from sw/qa/extras/ooxmlimport/data/n780843.docx)bin12614 -> 12614 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n780843b.docx (renamed from sw/qa/extras/ooxmlimport/data/n780843b.docx)bin13623 -> 13623 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n780853.docx (renamed from sw/qa/extras/ooxmlimport/data/n780853.docx)bin9261 -> 9261 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n782345.docx (renamed from sw/qa/extras/ooxmlimport/data/n782345.docx)bin12607 -> 12607 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n783638.docx (renamed from sw/qa/extras/ooxmlimport/data/n783638.docx)bin19119 -> 19119 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n785767.docx (renamed from sw/qa/extras/ooxmlimport/data/n785767.docx)bin12848 -> 12848 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n792778.docx (renamed from sw/qa/extras/ooxmlimport/data/n792778.docx)bin15329 -> 15329 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n793262.docx (renamed from sw/qa/extras/ooxmlimport/data/n793262.docx)bin15449 -> 15449 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n793998.docx (renamed from sw/qa/extras/ooxmlimport/data/n793998.docx)bin13167 -> 13167 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n816593.docx (renamed from sw/qa/extras/ooxmlimport/data/n816593.docx)bin17030 -> 17030 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n820509.docx (renamed from sw/qa/extras/ooxmlimport/data/n820509.docx)bin10414 -> 10414 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/n830205.docx (renamed from sw/qa/extras/ooxmlimport/data/n830205.docx)bin33186 -> 33186 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/negative-cell-margin-twips.docx (renamed from sw/qa/extras/ooxmlimport/data/negative-cell-margin-twips.docx)bin5902 -> 5902 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/numbering1.docx (renamed from sw/qa/extras/ooxmlimport/data/numbering1.docx)bin14346 -> 14346 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/page-border-shadow.docx (renamed from sw/qa/extras/ooxmlimport/data/page-border-shadow.docx)bin10012 -> 10012 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/picture-with-schemecolor.docx (renamed from sw/qa/extras/ooxmlimport/data/picture-with-schemecolor.docx)bin35489 -> 35489 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/rhbz1180114.docx (renamed from sw/qa/extras/ooxmlimport/data/rhbz1180114.docx)bin3435 -> 3435 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/rprchange_closed.docx (renamed from sw/qa/extras/ooxmlimport/data/rprchange_closed.docx)bin24695 -> 24695 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/section_break_numbering.docx (renamed from sw/qa/extras/ooxmlimport/data/section_break_numbering.docx)bin5614 -> 5614 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/strict-smartart.docx (renamed from sw/qa/extras/ooxmlimport/data/strict-smartart.docx)bin18661 -> 18661 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/strict.docx (renamed from sw/qa/extras/ooxmlimport/data/strict.docx)bin25636 -> 25636 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/table-auto-column-fixed-size.docx (renamed from sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size.docx)bin17672 -> 17672 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/table-auto-column-fixed-size2.docx (renamed from sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size2.docx)bin12907 -> 12907 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/table-auto-nested.docx (renamed from sw/qa/extras/ooxmlimport/data/table-auto-nested.docx)bin10297 -> 10297 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/table-btlr-center.docx (renamed from sw/qa/extras/ooxmlimport/data/table-btlr-center.docx)bin10686 -> 10686 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/table-pagebreak.docx (renamed from sw/qa/extras/ooxmlimport/data/table-pagebreak.docx)bin10148 -> 10148 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/table-style-parprop.docx (renamed from sw/qa/extras/ooxmlimport/data/table-style-parprop.docx)bin10098 -> 10098 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tableborder-finedash.docx (renamed from sw/qa/extras/ooxmlimport/data/tableborder-finedash.docx)bin10266 -> 10266 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tblr-height.docx (renamed from sw/qa/extras/ooxmlimport/data/tblr-height.docx)bin10466 -> 10466 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tcw-rounding.docx (renamed from sw/qa/extras/ooxmlimport/data/tcw-rounding.docx)bin14876 -> 14876 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf59699.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf59699.docx)bin13232 -> 13232 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf78902.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf78902.docx)bin30230 -> 30230 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf8255.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf8255.docx)bin27607 -> 27607 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf83300.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf83300.docx)bin9948 -> 9948 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf86374.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf86374.docx)bin13194 -> 13194 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf87460.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf87460.docx)bin17343 -> 17343 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf87924.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf87924.docx)bin15925 -> 15925 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf89165.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf89165.docx)bin89495 -> 89495 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf89702.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf89702.docx)bin13147 -> 13147 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf90153.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf90153.docx)bin4856 -> 4856 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf90611.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf90611.docx)bin14706 -> 14706 bytes
-rwxr-xr-xsw/qa/extras/ooxmlexport/data/tdf90810short.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf90810short.docx)bin22286 -> 22286 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf91122.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf91122.docx)bin16946 -> 16946 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf91260.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf91260.docx)bin16422 -> 16422 bytes
-rwxr-xr-xsw/qa/extras/ooxmlexport/data/tdf91417.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf91417.docx)bin13007 -> 13007 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf92045.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf92045.docx)bin12629 -> 12629 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf92124.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf92124.docx)bin7042 -> 7042 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf92157.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf92157.docx)bin25188 -> 25188 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf92454.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf92454.docx)bin32409 -> 32409 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf93919.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf93919.docx)bin15336 -> 15336 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf94043.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf94043.docx)bin12326 -> 12326 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf94374.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf94374.docx)bin12578 -> 12578 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf95213.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf95213.docx)bin17747 -> 17747 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf95376.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf95376.docx)bin25375 -> 25375 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf95775.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf95775.docx)bin22523 -> 22523 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf95777.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf95777.docx)bin19126 -> 19126 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf97371.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf97371.docx)bin18800 -> 18800 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf99140.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf99140.docx)bin13349 -> 13349 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/test_extra_image.docx (renamed from sw/qa/extras/ooxmlimport/data/test_extra_image.docx)bin120620 -> 120620 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/textbox-wpg-only.docx (renamed from sw/qa/extras/ooxmlimport/data/textbox-wpg-only.docx)bin16526 -> 16526 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tools-line-numbering.docx (renamed from sw/qa/extras/ooxmlimport/data/tools-line-numbering.docx)bin15052 -> 15052 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/vml-text-vertical-adjust.docx (renamed from sw/qa/extras/ooxmlimport/data/vml-text-vertical-adjust.docx)bin10578 -> 10578 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/wpg-nested.docx (renamed from sw/qa/extras/ooxmlimport/data/wpg-nested.docx)bin34068 -> 34068 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/wpg-only.docx (renamed from sw/qa/extras/ooxmlimport/data/wpg-only.docx)bin13503 -> 13503 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/wps-only.docx (renamed from sw/qa/extras/ooxmlimport/data/wps-only.docx)bin13180 -> 13180 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport8.cxx2082
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport9.cxx45
-rw-r--r--sw/qa/extras/ooxmlimport/data/Table_cell_auto_width_fdo69656.docxbin18939 -> 0 bytes
-rw-r--r--sw/qa/extras/ooxmlimport/data/fdo69636.docxbin23779 -> 0 bytes
-rw-r--r--sw/qa/extras/ooxmlimport/data/fdo69649.docxbin35048 -> 0 bytes
-rw-r--r--sw/qa/extras/ooxmlimport/data/smartart.docxbin20453 -> 0 bytes
-rw-r--r--sw/qa/extras/ooxmlimport/ooxmlimport.cxx2032
167 files changed, 2254 insertions, 2028 deletions
diff --git a/sw/CppunitTest_sw_ooxmlexport8.mk b/sw/CppunitTest_sw_ooxmlexport8.mk
new file mode 100644
index 000000000000..8bf3f5dab8d7
--- /dev/null
+++ b/sw/CppunitTest_sw_ooxmlexport8.mk
@@ -0,0 +1,104 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sw_ooxmlexport8))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sw_ooxmlexport8, \
+ sw/qa/extras/ooxmlexport/ooxmlexport8 \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sw_ooxmlexport8, \
+ basegfx \
+ comphelper \
+ cppu \
+ cppuhelper \
+ sal \
+ test \
+ unotest \
+ utl \
+ sw \
+ tl \
+ vcl \
+ svxcore \
+ $(gb_UWINAPI) \
+))
+
+$(eval $(call gb_CppunitTest_use_externals,sw_ooxmlexport8,\
+ boost_headers \
+ libxml2 \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sw_ooxmlexport8,\
+ -I$(SRCDIR)/sw/inc \
+ -I$(SRCDIR)/sw/source/core/inc \
+ -I$(SRCDIR)/sw/qa/extras/inc \
+ $$(INCLUDE) \
+))
+
+ifeq ($(OS),MACOSX)
+
+$(eval $(call gb_CppunitTest_add_cxxflags,sw_ooxmlexport8,\
+ $(gb_OBJCXXFLAGS) \
+))
+
+$(eval $(call gb_CppunitTest_use_system_darwin_frameworks,sw_ooxmlexport8,\
+ AppKit \
+))
+
+endif
+
+$(eval $(call gb_CppunitTest_use_sdk_api,sw_ooxmlexport8))
+
+$(eval $(call gb_CppunitTest_use_ure,sw_ooxmlexport8))
+$(eval $(call gb_CppunitTest_use_vcl,sw_ooxmlexport8))
+
+$(eval $(call gb_CppunitTest_use_components,sw_ooxmlexport8,\
+ basic/util/sb \
+ chart2/source/controller/chartcontroller \
+ chart2/source/chartcore \
+ canvas/source/factory/canvasfactory \
+ comphelper/util/comphelp \
+ configmgr/source/configmgr \
+ drawinglayer/drawinglayer \
+ embeddedobj/util/embobj \
+ filter/source/config/cache/filterconfig1 \
+ forms/util/frm \
+ framework/util/fwk \
+ i18npool/util/i18npool \
+ linguistic/source/lng \
+ oox/util/oox \
+ package/source/xstor/xstor \
+ package/util/package2 \
+ sax/source/expatwrap/expwrap \
+ sw/util/sw \
+ sw/util/swd \
+ sw/util/msword \
+ sfx2/util/sfx \
+ starmath/util/sm \
+ svl/source/fsstor/fsstorage \
+ svl/util/svl \
+ svtools/util/svt \
+ svx/util/svx \
+ svx/util/svxcore \
+ toolkit/util/tk \
+ ucb/source/core/ucb1 \
+ ucb/source/ucp/file/ucpfile1 \
+ unotools/util/utl \
+ unoxml/source/service/unoxml \
+ unoxml/source/rdf/unordf \
+ uui/util/uui \
+ writerfilter/util/writerfilter \
+ xmloff/util/xo \
+))
+
+$(eval $(call gb_CppunitTest_use_configuration,sw_ooxmlexport8))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/CppunitTest_sw_ooxmlexport9.mk b/sw/CppunitTest_sw_ooxmlexport9.mk
new file mode 100644
index 000000000000..9b7c409271d0
--- /dev/null
+++ b/sw/CppunitTest_sw_ooxmlexport9.mk
@@ -0,0 +1,16 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+include $(SRCDIR)/sw/ooxmlexport_setup.mk
+
+$(eval $(call sw_ooxmlexport_test,9))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk
index 3341552ea8b1..d63c5a2dcdcc 100644
--- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk
@@ -59,6 +59,8 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_ooxmlexport5 \
CppunitTest_sw_ooxmlexport6 \
CppunitTest_sw_ooxmlexport7 \
+ CppunitTest_sw_ooxmlexport8 \
+ CppunitTest_sw_ooxmlexport9 \
CppunitTest_sw_ooxmlfieldexport \
CppunitTest_sw_ooxmlw14export \
CppunitTest_sw_ooxmlimport \
diff --git a/sw/ooxmlexport_setup.mk b/sw/ooxmlexport_setup.mk
index da06f1a37bf0..91ffc4b431f0 100644
--- a/sw/ooxmlexport_setup.mk
+++ b/sw/ooxmlexport_setup.mk
@@ -20,6 +20,7 @@ define sw_ooxmlexport_libraries
unotest \
utl \
vcl \
+ svxcore \
$(gb_UWINAPI)
endef
diff --git a/sw/qa/extras/ooxmlimport/data/all_gaps_word.docx b/sw/qa/extras/ooxmlexport/data/all_gaps_word.docx
index fc52281a2552..fc52281a2552 100644
--- a/sw/qa/extras/ooxmlimport/data/all_gaps_word.docx
+++ b/sw/qa/extras/ooxmlexport/data/all_gaps_word.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/annotation-formatting.docx b/sw/qa/extras/ooxmlexport/data/annotation-formatting.docx
index 87af02b780e5..87af02b780e5 100644
--- a/sw/qa/extras/ooxmlimport/data/annotation-formatting.docx
+++ b/sw/qa/extras/ooxmlexport/data/annotation-formatting.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/bnc780044_spacing.docx b/sw/qa/extras/ooxmlexport/data/bnc780044_spacing.docx
index 927d4d37671a..927d4d37671a 100644
--- a/sw/qa/extras/ooxmlimport/data/bnc780044_spacing.docx
+++ b/sw/qa/extras/ooxmlexport/data/bnc780044_spacing.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/bnc865381.docx b/sw/qa/extras/ooxmlexport/data/bnc865381.docx
index bb125cc73095..bb125cc73095 100644
--- a/sw/qa/extras/ooxmlimport/data/bnc865381.docx
+++ b/sw/qa/extras/ooxmlexport/data/bnc865381.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/bnc875718.docx b/sw/qa/extras/ooxmlexport/data/bnc875718.docx
index 878a46fdf912..878a46fdf912 100644
--- a/sw/qa/extras/ooxmlimport/data/bnc875718.docx
+++ b/sw/qa/extras/ooxmlexport/data/bnc875718.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/bnc891663.docx b/sw/qa/extras/ooxmlexport/data/bnc891663.docx
index d5f057e66fd6..d5f057e66fd6 100644
--- a/sw/qa/extras/ooxmlimport/data/bnc891663.docx
+++ b/sw/qa/extras/ooxmlexport/data/bnc891663.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/caption.docx b/sw/qa/extras/ooxmlexport/data/caption.docx
index 301472cbc7ad..301472cbc7ad 100644
--- a/sw/qa/extras/ooxmlimport/data/caption.docx
+++ b/sw/qa/extras/ooxmlexport/data/caption.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/chart-prop.docx b/sw/qa/extras/ooxmlexport/data/chart-prop.docx
index f9cddd4949a6..f9cddd4949a6 100644
--- a/sw/qa/extras/ooxmlimport/data/chart-prop.docx
+++ b/sw/qa/extras/ooxmlexport/data/chart-prop.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/chart-size.docx b/sw/qa/extras/ooxmlexport/data/chart-size.docx
index da5d144438a3..da5d144438a3 100644
--- a/sw/qa/extras/ooxmlimport/data/chart-size.docx
+++ b/sw/qa/extras/ooxmlexport/data/chart-size.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/chtoutline.docx b/sw/qa/extras/ooxmlexport/data/chtoutline.docx
index 92fdaf71e745..92fdaf71e745 100644
--- a/sw/qa/extras/ooxmlimport/data/chtoutline.docx
+++ b/sw/qa/extras/ooxmlexport/data/chtoutline.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/conditionalstyles-tbllook.docx b/sw/qa/extras/ooxmlexport/data/conditionalstyles-tbllook.docx
index 4222d6376789..4222d6376789 100644
--- a/sw/qa/extras/ooxmlimport/data/conditionalstyles-tbllook.docx
+++ b/sw/qa/extras/ooxmlexport/data/conditionalstyles-tbllook.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/dml-charheight-default.docx b/sw/qa/extras/ooxmlexport/data/dml-charheight-default.docx
index 0f22a87f0e29..0f22a87f0e29 100644
--- a/sw/qa/extras/ooxmlimport/data/dml-charheight-default.docx
+++ b/sw/qa/extras/ooxmlexport/data/dml-charheight-default.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/dml-groupshape-capitalization.docx b/sw/qa/extras/ooxmlexport/data/dml-groupshape-capitalization.docx
index 67fd21f64d14..67fd21f64d14 100644
--- a/sw/qa/extras/ooxmlimport/data/dml-groupshape-capitalization.docx
+++ b/sw/qa/extras/ooxmlexport/data/dml-groupshape-capitalization.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/dml-groupshape-runfonts.docx b/sw/qa/extras/ooxmlexport/data/dml-groupshape-runfonts.docx
index e4c8c6cb575f..e4c8c6cb575f 100644
--- a/sw/qa/extras/ooxmlimport/data/dml-groupshape-runfonts.docx
+++ b/sw/qa/extras/ooxmlexport/data/dml-groupshape-runfonts.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/dml-groupshape-sdt.docx b/sw/qa/extras/ooxmlexport/data/dml-groupshape-sdt.docx
index 7314d876a45c..7314d876a45c 100644
--- a/sw/qa/extras/ooxmlimport/data/dml-groupshape-sdt.docx
+++ b/sw/qa/extras/ooxmlexport/data/dml-groupshape-sdt.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo38414.docx b/sw/qa/extras/ooxmlexport/data/fdo38414.docx
index 135cd32c981e..135cd32c981e 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo38414.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo38414.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo43093.docx b/sw/qa/extras/ooxmlexport/data/fdo43093b.docx
index 3e5a910e2003..3e5a910e2003 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo43093.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo43093b.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo46361.docx b/sw/qa/extras/ooxmlexport/data/fdo46361.docx
index 2f894e4b3ccd..2f894e4b3ccd 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo46361.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo46361.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo49940.docx b/sw/qa/extras/ooxmlexport/data/fdo49940.docx
index 242284463632..242284463632 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo49940.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo49940.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo52208.docx b/sw/qa/extras/ooxmlexport/data/fdo52208.docx
index be842ad2acbc..be842ad2acbc 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo52208.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo52208.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo53985.docx b/sw/qa/extras/ooxmlexport/data/fdo53985.docx
index 0c8b32fb671f..0c8b32fb671f 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo53985.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo53985.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo55187.docx b/sw/qa/extras/ooxmlexport/data/fdo55187.docx
index 59cd0a806250..59cd0a806250 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo55187.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo55187.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo59273.docx b/sw/qa/extras/ooxmlexport/data/fdo59273.docx
index fcdfd7734411..fcdfd7734411 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo59273.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo59273.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo59638.docx b/sw/qa/extras/ooxmlexport/data/fdo59638.docx
index d33e7cc0a037..d33e7cc0a037 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo59638.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo59638.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo60922.docx b/sw/qa/extras/ooxmlexport/data/fdo60922.docx
index 0d1ff2613ecd..0d1ff2613ecd 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo60922.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo60922.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo61343.docx b/sw/qa/extras/ooxmlexport/data/fdo61343.docx
index 9ab99739b7c2..9ab99739b7c2 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo61343.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo61343.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo63685.docx b/sw/qa/extras/ooxmlexport/data/fdo63685.docx
index a1348fcff3b6..a1348fcff3b6 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo63685.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo63685.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo65090.docx b/sw/qa/extras/ooxmlexport/data/fdo65090.docx
index 4d45737ddc37..4d45737ddc37 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo65090.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo65090.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo65632.docx b/sw/qa/extras/ooxmlexport/data/fdo65632.docx
index 8c336c20fdfc..8c336c20fdfc 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo65632.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo65632.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo66474.docx b/sw/qa/extras/ooxmlexport/data/fdo66474.docx
index 0252746f5b6e..0252746f5b6e 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo66474.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo66474.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo68607.docx b/sw/qa/extras/ooxmlexport/data/fdo68607.docx
index 11f57064ce92..11f57064ce92 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo68607.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo68607.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo69548.docx b/sw/qa/extras/ooxmlexport/data/fdo69548.docx
index 6799f5ef26bf..6799f5ef26bf 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo69548.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo69548.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo70457.docx b/sw/qa/extras/ooxmlexport/data/fdo70457.docx
index b9cabb11902c..b9cabb11902c 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo70457.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo70457.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo72560.docx b/sw/qa/extras/ooxmlexport/data/fdo72560.docx
index b21535bfd453..b21535bfd453 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo72560.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo72560.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo73389.docx b/sw/qa/extras/ooxmlexport/data/fdo73389.docx
index 02b55f74e2b8..02b55f74e2b8 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo73389.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo73389.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo74357.docx b/sw/qa/extras/ooxmlexport/data/fdo74357.docx
index 970372906e29..970372906e29 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo74357.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo74357.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo74401.docx b/sw/qa/extras/ooxmlexport/data/fdo74401.docx
index fd3cbabdd9d2..fd3cbabdd9d2 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo74401.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo74401.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo74745.docx b/sw/qa/extras/ooxmlexport/data/fdo74745.docx
index 773567756a79..773567756a79 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo74745.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo74745.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo78883.docx b/sw/qa/extras/ooxmlexport/data/fdo78883.docx
index a72ff9436e0c..a72ff9436e0c 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo78883.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo78883.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo78904.docx b/sw/qa/extras/ooxmlexport/data/fdo78904.docx
index c171ae2ca813..c171ae2ca813 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo78904.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo78904.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo78939.docx b/sw/qa/extras/ooxmlexport/data/fdo78939.docx
index 2fc3198630cd..2fc3198630cd 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo78939.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo78939.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo79535.docx b/sw/qa/extras/ooxmlexport/data/fdo79535.docx
index 64aab18e0ad7..64aab18e0ad7 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo79535.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo79535.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo79738.docx b/sw/qa/extras/ooxmlexport/data/fdo79738.docx
index e6873e7a2362..e6873e7a2362 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo79738.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo79738.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo80555.docx b/sw/qa/extras/ooxmlexport/data/fdo80555.docx
index a15bdc1ecd31..a15bdc1ecd31 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo80555.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo80555.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo81486.docx b/sw/qa/extras/ooxmlexport/data/fdo81486.docx
index 6e680c350a7c..6e680c350a7c 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo81486.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo81486.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo85542.docx b/sw/qa/extras/ooxmlexport/data/fdo85542.docx
index db4940845140..db4940845140 100644
--- a/sw/qa/extras/ooxmlimport/data/fdo85542.docx
+++ b/sw/qa/extras/ooxmlexport/data/fdo85542.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/file_crash.docx b/sw/qa/extras/ooxmlexport/data/file_crash.docx
index 7a233aba5c47..7a233aba5c47 100644
--- a/sw/qa/extras/ooxmlimport/data/file_crash.docx
+++ b/sw/qa/extras/ooxmlexport/data/file_crash.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/floating-tables-anchor.docx b/sw/qa/extras/ooxmlexport/data/floating-tables-anchor.docx
index 70dc7cf8bf10..70dc7cf8bf10 100644
--- a/sw/qa/extras/ooxmlimport/data/floating-tables-anchor.docx
+++ b/sw/qa/extras/ooxmlexport/data/floating-tables-anchor.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/footnote.docx b/sw/qa/extras/ooxmlexport/data/footnote.docx
index f5c94bd27004..f5c94bd27004 100644
--- a/sw/qa/extras/ooxmlimport/data/footnote.docx
+++ b/sw/qa/extras/ooxmlexport/data/footnote.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/frame-wrap-auto.docx b/sw/qa/extras/ooxmlexport/data/frame-wrap-auto.docx
index 6ad7fe059449..6ad7fe059449 100644
--- a/sw/qa/extras/ooxmlimport/data/frame-wrap-auto.docx
+++ b/sw/qa/extras/ooxmlexport/data/frame-wrap-auto.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/gridbefore.docx b/sw/qa/extras/ooxmlexport/data/gridbefore.docx
index 571fb48eaa9a..571fb48eaa9a 100644
--- a/sw/qa/extras/ooxmlimport/data/gridbefore.docx
+++ b/sw/qa/extras/ooxmlexport/data/gridbefore.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/groupshape-rotation.docx b/sw/qa/extras/ooxmlexport/data/groupshape-rotation.docx
index d63b5d0734e1..d63b5d0734e1 100644
--- a/sw/qa/extras/ooxmlimport/data/groupshape-rotation.docx
+++ b/sw/qa/extras/ooxmlexport/data/groupshape-rotation.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/groupshape-smarttag.docx b/sw/qa/extras/ooxmlexport/data/groupshape-smarttag.docx
index 6fc1cb2e6936..6fc1cb2e6936 100644
--- a/sw/qa/extras/ooxmlimport/data/groupshape-smarttag.docx
+++ b/sw/qa/extras/ooxmlexport/data/groupshape-smarttag.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/groupshape-trackedchanges.docx b/sw/qa/extras/ooxmlexport/data/groupshape-trackedchanges.docx
index 116721f39ecc..116721f39ecc 100644
--- a/sw/qa/extras/ooxmlimport/data/groupshape-trackedchanges.docx
+++ b/sw/qa/extras/ooxmlexport/data/groupshape-trackedchanges.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/hello.docx b/sw/qa/extras/ooxmlexport/data/hello.docx
index d5d8d43ebdac..d5d8d43ebdac 100644
--- a/sw/qa/extras/ooxmlimport/data/hello.docx
+++ b/sw/qa/extras/ooxmlexport/data/hello.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/hidemark.docx b/sw/qa/extras/ooxmlexport/data/hidemark.docx
index 4a273d6039bb..4a273d6039bb 100644
--- a/sw/qa/extras/ooxmlimport/data/hidemark.docx
+++ b/sw/qa/extras/ooxmlexport/data/hidemark.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/i124106.docx b/sw/qa/extras/ooxmlexport/data/i124106.docx
index de1d542936ce..de1d542936ce 100644
--- a/sw/qa/extras/ooxmlimport/data/i124106.docx
+++ b/sw/qa/extras/ooxmlexport/data/i124106.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/imgshadow.docx b/sw/qa/extras/ooxmlexport/data/imgshadow.docx
index efe0e9596008..efe0e9596008 100644
--- a/sw/qa/extras/ooxmlimport/data/imgshadow.docx
+++ b/sw/qa/extras/ooxmlexport/data/imgshadow.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/indentation.docx b/sw/qa/extras/ooxmlexport/data/indentation.docx
index cf57aaf5417e..cf57aaf5417e 100644
--- a/sw/qa/extras/ooxmlimport/data/indentation.docx
+++ b/sw/qa/extras/ooxmlexport/data/indentation.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/indents.docx b/sw/qa/extras/ooxmlexport/data/indents.docx
index b16736791c2e..b16736791c2e 100755
--- a/sw/qa/extras/ooxmlimport/data/indents.docx
+++ b/sw/qa/extras/ooxmlexport/data/indents.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/inline-groupshape.docx b/sw/qa/extras/ooxmlexport/data/inline-groupshape.docx
index def5a05b40e4..def5a05b40e4 100644
--- a/sw/qa/extras/ooxmlimport/data/inline-groupshape.docx
+++ b/sw/qa/extras/ooxmlexport/data/inline-groupshape.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/large-twips.docx b/sw/qa/extras/ooxmlexport/data/large-twips.docx
index 6e9d82dfab42..6e9d82dfab42 100644
--- a/sw/qa/extras/ooxmlimport/data/large-twips.docx
+++ b/sw/qa/extras/ooxmlexport/data/large-twips.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/libreoffice.png b/sw/qa/extras/ooxmlexport/data/libreoffice.png
index 437f613c178c..437f613c178c 100644
--- a/sw/qa/extras/ooxmlimport/data/libreoffice.png
+++ b/sw/qa/extras/ooxmlexport/data/libreoffice.png
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/mathtype.docx b/sw/qa/extras/ooxmlexport/data/mathtype.docx
index bf60f43b25b7..bf60f43b25b7 100644
--- a/sw/qa/extras/ooxmlimport/data/mathtype.docx
+++ b/sw/qa/extras/ooxmlexport/data/mathtype.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/mce-nested.docx b/sw/qa/extras/ooxmlexport/data/mce-nested.docx
index 907ac080c1e3..907ac080c1e3 100644
--- a/sw/qa/extras/ooxmlimport/data/mce-nested.docx
+++ b/sw/qa/extras/ooxmlexport/data/mce-nested.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/mce-wpg.docx b/sw/qa/extras/ooxmlexport/data/mce-wpg.docx
index bd0d84681317..bd0d84681317 100644
--- a/sw/qa/extras/ooxmlimport/data/mce-wpg.docx
+++ b/sw/qa/extras/ooxmlexport/data/mce-wpg.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/missing-path.docx b/sw/qa/extras/ooxmlexport/data/missing-path.docx
index 8d75e9f630ed..8d75e9f630ed 100644
--- a/sw/qa/extras/ooxmlimport/data/missing-path.docx
+++ b/sw/qa/extras/ooxmlexport/data/missing-path.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/msobrightnesscontrast.docx b/sw/qa/extras/ooxmlexport/data/msobrightnesscontrast.docx
index 132f23575b57..132f23575b57 100644
--- a/sw/qa/extras/ooxmlimport/data/msobrightnesscontrast.docx
+++ b/sw/qa/extras/ooxmlexport/data/msobrightnesscontrast.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n592908-frame.docx b/sw/qa/extras/ooxmlexport/data/n592908-frame.docx
index ff59cacbad79..ff59cacbad79 100644
--- a/sw/qa/extras/ooxmlimport/data/n592908-frame.docx
+++ b/sw/qa/extras/ooxmlexport/data/n592908-frame.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n592908-picture.docx b/sw/qa/extras/ooxmlexport/data/n592908-picture.docx
index 2766d3691cdd..2766d3691cdd 100644
--- a/sw/qa/extras/ooxmlimport/data/n592908-picture.docx
+++ b/sw/qa/extras/ooxmlexport/data/n592908-picture.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n652364.docx b/sw/qa/extras/ooxmlexport/data/n652364.docx
index 0845509e84b7..0845509e84b7 100644
--- a/sw/qa/extras/ooxmlimport/data/n652364.docx
+++ b/sw/qa/extras/ooxmlexport/data/n652364.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n693238.docx b/sw/qa/extras/ooxmlexport/data/n693238.docx
index 5bcda0fff6f7..5bcda0fff6f7 100644
--- a/sw/qa/extras/ooxmlimport/data/n693238.docx
+++ b/sw/qa/extras/ooxmlexport/data/n693238.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n705956-1.docx b/sw/qa/extras/ooxmlexport/data/n705956-1.docx
index edff3bac412c..edff3bac412c 100644
--- a/sw/qa/extras/ooxmlimport/data/n705956-1.docx
+++ b/sw/qa/extras/ooxmlexport/data/n705956-1.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n705956-2.docx b/sw/qa/extras/ooxmlexport/data/n705956-2.docx
index 138818523a92..138818523a92 100644
--- a/sw/qa/extras/ooxmlimport/data/n705956-2.docx
+++ b/sw/qa/extras/ooxmlexport/data/n705956-2.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n747461.docx b/sw/qa/extras/ooxmlexport/data/n747461.docx
index 1064e5db060b..1064e5db060b 100644
--- a/sw/qa/extras/ooxmlimport/data/n747461.docx
+++ b/sw/qa/extras/ooxmlexport/data/n747461.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n750255.docx b/sw/qa/extras/ooxmlexport/data/n750255.docx
index a0c7370022b0..a0c7370022b0 100644
--- a/sw/qa/extras/ooxmlimport/data/n750255.docx
+++ b/sw/qa/extras/ooxmlexport/data/n750255.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n750935.docx b/sw/qa/extras/ooxmlexport/data/n750935.docx
index 0dd01592dd65..0dd01592dd65 100644
--- a/sw/qa/extras/ooxmlimport/data/n750935.docx
+++ b/sw/qa/extras/ooxmlexport/data/n750935.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n751054.docx b/sw/qa/extras/ooxmlexport/data/n751054.docx
index 49d7d6af9cc6..49d7d6af9cc6 100644
--- a/sw/qa/extras/ooxmlimport/data/n751054.docx
+++ b/sw/qa/extras/ooxmlexport/data/n751054.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n751117.docx b/sw/qa/extras/ooxmlexport/data/n751117.docx
index 17cc9c53d1cb..17cc9c53d1cb 100644
--- a/sw/qa/extras/ooxmlimport/data/n751117.docx
+++ b/sw/qa/extras/ooxmlexport/data/n751117.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n764005.docx b/sw/qa/extras/ooxmlexport/data/n764005.docx
index 1c0dd9d077e9..1c0dd9d077e9 100644
--- a/sw/qa/extras/ooxmlimport/data/n764005.docx
+++ b/sw/qa/extras/ooxmlexport/data/n764005.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n766481.docx b/sw/qa/extras/ooxmlexport/data/n766481.docx
index e1521ec82f9c..e1521ec82f9c 100644
--- a/sw/qa/extras/ooxmlimport/data/n766481.docx
+++ b/sw/qa/extras/ooxmlexport/data/n766481.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n766487.docx b/sw/qa/extras/ooxmlexport/data/n766487.docx
index 85eda0e7e381..85eda0e7e381 100644
--- a/sw/qa/extras/ooxmlimport/data/n766487.docx
+++ b/sw/qa/extras/ooxmlexport/data/n766487.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n775906.docx b/sw/qa/extras/ooxmlexport/data/n775906.docx
index 6b6dd1a6b45d..6b6dd1a6b45d 100644
--- a/sw/qa/extras/ooxmlimport/data/n775906.docx
+++ b/sw/qa/extras/ooxmlexport/data/n775906.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n777337.docx b/sw/qa/extras/ooxmlexport/data/n777337.docx
index 8bb377dcf621..8bb377dcf621 100644
--- a/sw/qa/extras/ooxmlimport/data/n777337.docx
+++ b/sw/qa/extras/ooxmlexport/data/n777337.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n778828.docx b/sw/qa/extras/ooxmlexport/data/n778828.docx
index ad2e22d17fbf..ad2e22d17fbf 100644
--- a/sw/qa/extras/ooxmlimport/data/n778828.docx
+++ b/sw/qa/extras/ooxmlexport/data/n778828.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n778836.docx b/sw/qa/extras/ooxmlexport/data/n778836.docx
index ccd89e85b436..ccd89e85b436 100644
--- a/sw/qa/extras/ooxmlimport/data/n778836.docx
+++ b/sw/qa/extras/ooxmlexport/data/n778836.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n779630.docx b/sw/qa/extras/ooxmlexport/data/n779630.docx
index 97812d66cff5..97812d66cff5 100644
--- a/sw/qa/extras/ooxmlimport/data/n779630.docx
+++ b/sw/qa/extras/ooxmlexport/data/n779630.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n779642.docx b/sw/qa/extras/ooxmlexport/data/n779642.docx
index 2fe9a176689b..2fe9a176689b 100644
--- a/sw/qa/extras/ooxmlimport/data/n779642.docx
+++ b/sw/qa/extras/ooxmlexport/data/n779642.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n779834.docx b/sw/qa/extras/ooxmlexport/data/n779834.docx
index 24b6db1a446e..24b6db1a446e 100644
--- a/sw/qa/extras/ooxmlimport/data/n779834.docx
+++ b/sw/qa/extras/ooxmlexport/data/n779834.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n779941.docx b/sw/qa/extras/ooxmlexport/data/n779941.docx
index 9889d81e2383..9889d81e2383 100644
--- a/sw/qa/extras/ooxmlimport/data/n779941.docx
+++ b/sw/qa/extras/ooxmlexport/data/n779941.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n780563.docx b/sw/qa/extras/ooxmlexport/data/n780563.docx
index 508dc7474bfa..508dc7474bfa 100644
--- a/sw/qa/extras/ooxmlimport/data/n780563.docx
+++ b/sw/qa/extras/ooxmlexport/data/n780563.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n780843.docx b/sw/qa/extras/ooxmlexport/data/n780843.docx
index 9b92f79aaa17..9b92f79aaa17 100644
--- a/sw/qa/extras/ooxmlimport/data/n780843.docx
+++ b/sw/qa/extras/ooxmlexport/data/n780843.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n780843b.docx b/sw/qa/extras/ooxmlexport/data/n780843b.docx
index 2ba9ab2c6f0f..2ba9ab2c6f0f 100644
--- a/sw/qa/extras/ooxmlimport/data/n780843b.docx
+++ b/sw/qa/extras/ooxmlexport/data/n780843b.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n780853.docx b/sw/qa/extras/ooxmlexport/data/n780853.docx
index fed8276fbb2a..fed8276fbb2a 100644
--- a/sw/qa/extras/ooxmlimport/data/n780853.docx
+++ b/sw/qa/extras/ooxmlexport/data/n780853.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n782345.docx b/sw/qa/extras/ooxmlexport/data/n782345.docx
index f25709fedf4f..f25709fedf4f 100644
--- a/sw/qa/extras/ooxmlimport/data/n782345.docx
+++ b/sw/qa/extras/ooxmlexport/data/n782345.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n783638.docx b/sw/qa/extras/ooxmlexport/data/n783638.docx
index 93b587b92ef9..93b587b92ef9 100644
--- a/sw/qa/extras/ooxmlimport/data/n783638.docx
+++ b/sw/qa/extras/ooxmlexport/data/n783638.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n785767.docx b/sw/qa/extras/ooxmlexport/data/n785767.docx
index db356769bc8b..db356769bc8b 100644
--- a/sw/qa/extras/ooxmlimport/data/n785767.docx
+++ b/sw/qa/extras/ooxmlexport/data/n785767.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n792778.docx b/sw/qa/extras/ooxmlexport/data/n792778.docx
index d9541d4ccfce..d9541d4ccfce 100644
--- a/sw/qa/extras/ooxmlimport/data/n792778.docx
+++ b/sw/qa/extras/ooxmlexport/data/n792778.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n793262.docx b/sw/qa/extras/ooxmlexport/data/n793262.docx
index 7f2d2e0a8084..7f2d2e0a8084 100644
--- a/sw/qa/extras/ooxmlimport/data/n793262.docx
+++ b/sw/qa/extras/ooxmlexport/data/n793262.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n793998.docx b/sw/qa/extras/ooxmlexport/data/n793998.docx
index fc96e2e97f74..fc96e2e97f74 100644
--- a/sw/qa/extras/ooxmlimport/data/n793998.docx
+++ b/sw/qa/extras/ooxmlexport/data/n793998.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n816593.docx b/sw/qa/extras/ooxmlexport/data/n816593.docx
index 7d784e69d4e6..7d784e69d4e6 100644
--- a/sw/qa/extras/ooxmlimport/data/n816593.docx
+++ b/sw/qa/extras/ooxmlexport/data/n816593.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n820509.docx b/sw/qa/extras/ooxmlexport/data/n820509.docx
index a6da1e16842c..a6da1e16842c 100644
--- a/sw/qa/extras/ooxmlimport/data/n820509.docx
+++ b/sw/qa/extras/ooxmlexport/data/n820509.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/n830205.docx b/sw/qa/extras/ooxmlexport/data/n830205.docx
index 89cf1d8434a1..89cf1d8434a1 100644
--- a/sw/qa/extras/ooxmlimport/data/n830205.docx
+++ b/sw/qa/extras/ooxmlexport/data/n830205.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/negative-cell-margin-twips.docx b/sw/qa/extras/ooxmlexport/data/negative-cell-margin-twips.docx
index 3ae73db5c846..3ae73db5c846 100644
--- a/sw/qa/extras/ooxmlimport/data/negative-cell-margin-twips.docx
+++ b/sw/qa/extras/ooxmlexport/data/negative-cell-margin-twips.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/numbering1.docx b/sw/qa/extras/ooxmlexport/data/numbering1.docx
index 55b4af3e8584..55b4af3e8584 100644
--- a/sw/qa/extras/ooxmlimport/data/numbering1.docx
+++ b/sw/qa/extras/ooxmlexport/data/numbering1.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/page-border-shadow.docx b/sw/qa/extras/ooxmlexport/data/page-border-shadow.docx
index 65a2273f6bc6..65a2273f6bc6 100644
--- a/sw/qa/extras/ooxmlimport/data/page-border-shadow.docx
+++ b/sw/qa/extras/ooxmlexport/data/page-border-shadow.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/picture-with-schemecolor.docx b/sw/qa/extras/ooxmlexport/data/picture-with-schemecolor.docx
index bfee0e1415e8..bfee0e1415e8 100644
--- a/sw/qa/extras/ooxmlimport/data/picture-with-schemecolor.docx
+++ b/sw/qa/extras/ooxmlexport/data/picture-with-schemecolor.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/rhbz1180114.docx b/sw/qa/extras/ooxmlexport/data/rhbz1180114.docx
index 23009ebbdc82..23009ebbdc82 100644
--- a/sw/qa/extras/ooxmlimport/data/rhbz1180114.docx
+++ b/sw/qa/extras/ooxmlexport/data/rhbz1180114.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/rprchange_closed.docx b/sw/qa/extras/ooxmlexport/data/rprchange_closed.docx
index ff53871e91ae..ff53871e91ae 100644
--- a/sw/qa/extras/ooxmlimport/data/rprchange_closed.docx
+++ b/sw/qa/extras/ooxmlexport/data/rprchange_closed.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/section_break_numbering.docx b/sw/qa/extras/ooxmlexport/data/section_break_numbering.docx
index 8b5378a771e5..8b5378a771e5 100644
--- a/sw/qa/extras/ooxmlimport/data/section_break_numbering.docx
+++ b/sw/qa/extras/ooxmlexport/data/section_break_numbering.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/strict-smartart.docx b/sw/qa/extras/ooxmlexport/data/strict-smartart.docx
index bab7c16bcea1..bab7c16bcea1 100644
--- a/sw/qa/extras/ooxmlimport/data/strict-smartart.docx
+++ b/sw/qa/extras/ooxmlexport/data/strict-smartart.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/strict.docx b/sw/qa/extras/ooxmlexport/data/strict.docx
index b46ce94b3402..b46ce94b3402 100644
--- a/sw/qa/extras/ooxmlimport/data/strict.docx
+++ b/sw/qa/extras/ooxmlexport/data/strict.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size.docx b/sw/qa/extras/ooxmlexport/data/table-auto-column-fixed-size.docx
index 557edcb3cb0b..557edcb3cb0b 100644
--- a/sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size.docx
+++ b/sw/qa/extras/ooxmlexport/data/table-auto-column-fixed-size.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size2.docx b/sw/qa/extras/ooxmlexport/data/table-auto-column-fixed-size2.docx
index 2125f09da790..2125f09da790 100644
--- a/sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size2.docx
+++ b/sw/qa/extras/ooxmlexport/data/table-auto-column-fixed-size2.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/table-auto-nested.docx b/sw/qa/extras/ooxmlexport/data/table-auto-nested.docx
index 85f47dbba0b3..85f47dbba0b3 100644
--- a/sw/qa/extras/ooxmlimport/data/table-auto-nested.docx
+++ b/sw/qa/extras/ooxmlexport/data/table-auto-nested.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/table-btlr-center.docx b/sw/qa/extras/ooxmlexport/data/table-btlr-center.docx
index 79cb53eed06d..79cb53eed06d 100644
--- a/sw/qa/extras/ooxmlimport/data/table-btlr-center.docx
+++ b/sw/qa/extras/ooxmlexport/data/table-btlr-center.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/table-pagebreak.docx b/sw/qa/extras/ooxmlexport/data/table-pagebreak.docx
index 06ecf9535af1..06ecf9535af1 100644
--- a/sw/qa/extras/ooxmlimport/data/table-pagebreak.docx
+++ b/sw/qa/extras/ooxmlexport/data/table-pagebreak.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/table-style-parprop.docx b/sw/qa/extras/ooxmlexport/data/table-style-parprop.docx
index 1c68c704e7fb..1c68c704e7fb 100644
--- a/sw/qa/extras/ooxmlimport/data/table-style-parprop.docx
+++ b/sw/qa/extras/ooxmlexport/data/table-style-parprop.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tableborder-finedash.docx b/sw/qa/extras/ooxmlexport/data/tableborder-finedash.docx
index 003167ac3ade..003167ac3ade 100644
--- a/sw/qa/extras/ooxmlimport/data/tableborder-finedash.docx
+++ b/sw/qa/extras/ooxmlexport/data/tableborder-finedash.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tblr-height.docx b/sw/qa/extras/ooxmlexport/data/tblr-height.docx
index 6a16c81dd5e0..6a16c81dd5e0 100644
--- a/sw/qa/extras/ooxmlimport/data/tblr-height.docx
+++ b/sw/qa/extras/ooxmlexport/data/tblr-height.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tcw-rounding.docx b/sw/qa/extras/ooxmlexport/data/tcw-rounding.docx
index d4055c953b6f..d4055c953b6f 100644
--- a/sw/qa/extras/ooxmlimport/data/tcw-rounding.docx
+++ b/sw/qa/extras/ooxmlexport/data/tcw-rounding.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf59699.docx b/sw/qa/extras/ooxmlexport/data/tdf59699.docx
index 158ac338f88a..158ac338f88a 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf59699.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf59699.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf78902.docx b/sw/qa/extras/ooxmlexport/data/tdf78902.docx
index 3cf3a443a975..3cf3a443a975 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf78902.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf78902.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf8255.docx b/sw/qa/extras/ooxmlexport/data/tdf8255.docx
index 366e498856ba..366e498856ba 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf8255.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf8255.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf83300.docx b/sw/qa/extras/ooxmlexport/data/tdf83300.docx
index aa3ad22d10fc..aa3ad22d10fc 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf83300.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf83300.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf86374.docx b/sw/qa/extras/ooxmlexport/data/tdf86374.docx
index 7fd772d79b3f..7fd772d79b3f 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf86374.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf86374.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf87460.docx b/sw/qa/extras/ooxmlexport/data/tdf87460.docx
index c443dbe4563e..c443dbe4563e 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf87460.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf87460.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf87924.docx b/sw/qa/extras/ooxmlexport/data/tdf87924.docx
index 5265d6638a88..5265d6638a88 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf87924.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf87924.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf89165.docx b/sw/qa/extras/ooxmlexport/data/tdf89165.docx
index a060ca444e27..a060ca444e27 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf89165.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf89165.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf89702.docx b/sw/qa/extras/ooxmlexport/data/tdf89702.docx
index 5542d1cbe575..5542d1cbe575 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf89702.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf89702.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf90153.docx b/sw/qa/extras/ooxmlexport/data/tdf90153.docx
index decbfa29d3b9..decbfa29d3b9 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf90153.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf90153.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf90611.docx b/sw/qa/extras/ooxmlexport/data/tdf90611.docx
index ac54feedd05f..ac54feedd05f 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf90611.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf90611.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf90810short.docx b/sw/qa/extras/ooxmlexport/data/tdf90810short.docx
index 85b6369fbf29..85b6369fbf29 100755
--- a/sw/qa/extras/ooxmlimport/data/tdf90810short.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf90810short.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf91122.docx b/sw/qa/extras/ooxmlexport/data/tdf91122.docx
index c7a45e4dd99a..c7a45e4dd99a 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf91122.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf91122.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf91260.docx b/sw/qa/extras/ooxmlexport/data/tdf91260.docx
index 4888f498ddf9..4888f498ddf9 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf91260.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf91260.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf91417.docx b/sw/qa/extras/ooxmlexport/data/tdf91417.docx
index 1427f8cb3a5d..1427f8cb3a5d 100755
--- a/sw/qa/extras/ooxmlimport/data/tdf91417.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf91417.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf92045.docx b/sw/qa/extras/ooxmlexport/data/tdf92045.docx
index d41f523c79b1..d41f523c79b1 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf92045.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf92045.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf92124.docx b/sw/qa/extras/ooxmlexport/data/tdf92124.docx
index 2999311930eb..2999311930eb 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf92124.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf92124.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf92157.docx b/sw/qa/extras/ooxmlexport/data/tdf92157.docx
index ba5bc2a8f5f5..ba5bc2a8f5f5 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf92157.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf92157.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf92454.docx b/sw/qa/extras/ooxmlexport/data/tdf92454.docx
index 70426685e207..70426685e207 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf92454.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf92454.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf93919.docx b/sw/qa/extras/ooxmlexport/data/tdf93919.docx
index c7454690c844..c7454690c844 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf93919.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf93919.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf94043.docx b/sw/qa/extras/ooxmlexport/data/tdf94043.docx
index fa47be0760cd..fa47be0760cd 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf94043.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf94043.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf94374.docx b/sw/qa/extras/ooxmlexport/data/tdf94374.docx
index d5d8d43ebdac..d5d8d43ebdac 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf94374.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf94374.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf95213.docx b/sw/qa/extras/ooxmlexport/data/tdf95213.docx
index 831d543b903f..831d543b903f 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf95213.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf95213.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf95376.docx b/sw/qa/extras/ooxmlexport/data/tdf95376.docx
index 9bd2d05b2e7a..9bd2d05b2e7a 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf95376.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf95376.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf95775.docx b/sw/qa/extras/ooxmlexport/data/tdf95775.docx
index a4c1293a56ba..a4c1293a56ba 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf95775.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf95775.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf95777.docx b/sw/qa/extras/ooxmlexport/data/tdf95777.docx
index e71fdea609b6..e71fdea609b6 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf95777.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf95777.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf97371.docx b/sw/qa/extras/ooxmlexport/data/tdf97371.docx
index 87e67ddf877b..87e67ddf877b 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf97371.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf97371.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf99140.docx b/sw/qa/extras/ooxmlexport/data/tdf99140.docx
index 42fa73d2f8e0..42fa73d2f8e0 100644
--- a/sw/qa/extras/ooxmlimport/data/tdf99140.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf99140.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/test_extra_image.docx b/sw/qa/extras/ooxmlexport/data/test_extra_image.docx
index cdb05afa4456..cdb05afa4456 100644
--- a/sw/qa/extras/ooxmlimport/data/test_extra_image.docx
+++ b/sw/qa/extras/ooxmlexport/data/test_extra_image.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/textbox-wpg-only.docx b/sw/qa/extras/ooxmlexport/data/textbox-wpg-only.docx
index cd853f97d55f..cd853f97d55f 100644
--- a/sw/qa/extras/ooxmlimport/data/textbox-wpg-only.docx
+++ b/sw/qa/extras/ooxmlexport/data/textbox-wpg-only.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/tools-line-numbering.docx b/sw/qa/extras/ooxmlexport/data/tools-line-numbering.docx
index 8fb2668b327e..8fb2668b327e 100644
--- a/sw/qa/extras/ooxmlimport/data/tools-line-numbering.docx
+++ b/sw/qa/extras/ooxmlexport/data/tools-line-numbering.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/vml-text-vertical-adjust.docx b/sw/qa/extras/ooxmlexport/data/vml-text-vertical-adjust.docx
index 1b05dbd6edab..1b05dbd6edab 100644
--- a/sw/qa/extras/ooxmlimport/data/vml-text-vertical-adjust.docx
+++ b/sw/qa/extras/ooxmlexport/data/vml-text-vertical-adjust.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/wpg-nested.docx b/sw/qa/extras/ooxmlexport/data/wpg-nested.docx
index eba2aad0e76c..eba2aad0e76c 100644
--- a/sw/qa/extras/ooxmlimport/data/wpg-nested.docx
+++ b/sw/qa/extras/ooxmlexport/data/wpg-nested.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/wpg-only.docx b/sw/qa/extras/ooxmlexport/data/wpg-only.docx
index 7c86361f9d34..7c86361f9d34 100644
--- a/sw/qa/extras/ooxmlimport/data/wpg-only.docx
+++ b/sw/qa/extras/ooxmlexport/data/wpg-only.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/wps-only.docx b/sw/qa/extras/ooxmlexport/data/wps-only.docx
index 7f7b8c75bc26..7f7b8c75bc26 100644
--- a/sw/qa/extras/ooxmlimport/data/wps-only.docx
+++ b/sw/qa/extras/ooxmlexport/data/wps-only.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx
new file mode 100644
index 000000000000..a7cfd8d12679
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx
@@ -0,0 +1,2082 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "config_test.h"
+
+#ifdef MACOSX
+#define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
+#include <premac.h>
+#include <AppKit/AppKit.h>
+#include <postmac.h>
+#endif
+
+#include <swmodeltestbase.hxx>
+
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/awt/FontUnderline.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/document/XEmbeddedObjectSupplier2.hpp>
+#include <com/sun/star/drawing/XControlShape.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
+#include <com/sun/star/text/HoriOrientation.hpp>
+#include <com/sun/star/text/RelOrientation.hpp>
+#include <com/sun/star/text/TableColumnSeparator.hpp>
+#include <com/sun/star/text/TextContentAnchorType.hpp>
+#include <com/sun/star/text/VertOrientation.hpp>
+#include <com/sun/star/text/WrapTextMode.hpp>
+#include <com/sun/star/text/WritingMode2.hpp>
+#include <com/sun/star/text/XBookmarksSupplier.hpp>
+#include <com/sun/star/text/XFootnote.hpp>
+#include <com/sun/star/text/XPageCursor.hpp>
+#include <com/sun/star/text/XTextColumns.hpp>
+#include <com/sun/star/text/XTextFrame.hpp>
+#include <com/sun/star/text/XTextFramesSupplier.hpp>
+#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
+#include <com/sun/star/text/XTextViewCursorSupplier.hpp>
+#include <com/sun/star/style/BreakType.hpp>
+#include <com/sun/star/style/ParagraphAdjust.hpp>
+#include <com/sun/star/table/ShadowFormat.hpp>
+#include <com/sun/star/view/XFormLayerAccess.hpp>
+#include <com/sun/star/table/BorderLine2.hpp>
+#include <com/sun/star/table/TableBorder2.hpp>
+#include <com/sun/star/text/SizeType.hpp>
+#include <com/sun/star/xml/dom/XDocument.hpp>
+#include <com/sun/star/text/XDocumentIndex.hpp>
+#include <com/sun/star/style/CaseMap.hpp>
+#include <com/sun/star/document/XFilter.hpp>
+#include <com/sun/star/document/XImporter.hpp>
+#include <vcl/bitmapaccess.hxx>
+#include <unotest/assertion_traits.hxx>
+#include <unotools/fltrcfg.hxx>
+#include <comphelper/sequenceashashmap.hxx>
+#include <com/sun/star/text/GraphicCrop.hpp>
+#include <swtypes.hxx>
+#include <drawdoc.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <unotools/streamwrap.hxx>
+#include <comphelper/propertysequence.hxx>
+#include <svx/svdpage.hxx>
+
+#include <bordertest.hxx>
+
+class Test : public SwModelTestBase
+{
+public:
+ Test() : SwModelTestBase("/sw/qa/extras/ooxmlexport/data/", "Office Open XML Text") {}
+
+ virtual std::unique_ptr<Resetter> preTest(const char* filename) override
+ {
+ if (OString(filename) == "smartart.docx" || OString(filename) == "strict-smartart.docx" )
+ {
+ std::unique_ptr<Resetter> pResetter(new Resetter(
+ [] () {
+ SvtFilterOptions::Get().SetSmartArt2Shape(false);
+ }));
+ SvtFilterOptions::Get().SetSmartArt2Shape(true);
+ return pResetter;
+ }
+ return nullptr;
+ }
+
+protected:
+ /**
+ * Blacklist handling
+ */
+ bool mustTestImportOf(const char* filename) const override {
+ // If the testcase is stored in some other format, it's pointless to test.
+ return (OString(filename).endsWith(".docx"));
+ }
+
+protected:
+ /// Copy&paste helper.
+ bool paste(const OUString& rFilename, const uno::Reference<text::XTextRange>& xTextRange)
+ {
+ uno::Reference<document::XFilter> xFilter(m_xSFactory->createInstance("com.sun.star.comp.Writer.WriterFilter"), uno::UNO_QUERY_THROW);
+ uno::Reference<document::XImporter> xImporter(xFilter, uno::UNO_QUERY_THROW);
+ xImporter->setTargetDocument(mxComponent);
+ SvStream* pStream = utl::UcbStreamHelper::CreateStream(m_directories.getURLFromSrc("/sw/qa/extras/ooxmlexport/data/") + rFilename, StreamMode::READ);
+ uno::Reference<io::XStream> xStream(new utl::OStreamWrapper(*pStream));
+ uno::Sequence<beans::PropertyValue> aDescriptor(comphelper::InitPropertySequence(
+ {
+ {"InputStream", uno::makeAny(xStream)},
+ {"InputMode", uno::makeAny(true)},
+ {"TextInsertModeRange", uno::makeAny(xTextRange)},
+ }));
+ return xFilter->filter(aDescriptor);
+ }
+};
+
+#if !defined(_WIN32)
+
+DECLARE_OOXMLEXPORT_TEST(testN751054, "n751054.docx")
+{
+ text::TextContentAnchorType eValue = getProperty<text::TextContentAnchorType>(getShape(1), "AnchorType");
+ CPPUNIT_ASSERT(eValue != text::TextContentAnchorType_AS_CHARACTER);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN750935, "n750935.docx")
+{
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+ xCursor->jumpToLastPage();
+ // Some page break types were ignores, resulting in less pages.
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(5), xCursor->getPage());
+
+ /*
+ * The problem was that the header and footer was not shared.
+ *
+ * xray ThisComponent.StyleFamilies.PageStyles.Default.FooterIsShared
+ */
+ uno::Reference<beans::XPropertySet> xPropertySet(getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
+ bool bValue = false;
+ xPropertySet->getPropertyValue("HeaderIsShared") >>= bValue;
+ CPPUNIT_ASSERT_EQUAL(true, bValue);
+ xPropertySet->getPropertyValue("FooterIsShared") >>= bValue;
+ CPPUNIT_ASSERT_EQUAL(true, bValue);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN751117, "n751117.docx")
+{
+ // First shape: the end should be an arrow, should be rotated and should be flipped.
+ uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
+ OUString aValue;
+ xPropertySet->getPropertyValue("LineEndName") >>= aValue;
+ CPPUNIT_ASSERT(aValue.indexOf("Arrow") != -1);
+
+ // Rotating & Flipping will cause the angle to change from 90 degrees to 270 degrees
+ sal_Int32 nValue = 0;
+ xPropertySet->getPropertyValue("RotateAngle") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(270 * 100), nValue);
+
+ uno::Reference<drawing::XShape> xShape(xPropertySet, uno::UNO_QUERY);
+ awt::Size aActualSize(xShape->getSize());
+ CPPUNIT_ASSERT(aActualSize.Width > 0);
+
+ // The second shape should be a line
+ uno::Reference<lang::XServiceInfo> xServiceInfo(getShape(2), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.drawing.LineShape"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo49940, "fdo49940.docx")
+{
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
+ uno::Reference<beans::XPropertySet> xPara(xParaEnum->nextElement(), uno::UNO_QUERY);
+ OUString aValue;
+ xPara->getPropertyValue("PageStyleName") >>= aValue;
+ CPPUNIT_ASSERT_EQUAL(OUString("First Page"), aValue);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo74745, "fdo74745.docx")
+{
+ uno::Reference<text::XTextRange > paragraph = getParagraph(3);
+ uno::Reference<text::XTextRange> text(paragraph, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(text->getString(),OUString("09/02/14"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo81486, "fdo81486.docx")
+{
+ uno::Reference<text::XTextRange > paragraph = getParagraph(1);
+ uno::Reference<text::XTextRange> text(paragraph, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(text->getString(),OUString("CustomTitle"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo79738, "fdo79738.docx")
+{
+ uno::Reference< style::XStyleFamiliesSupplier > xStylesSupplier( mxComponent, uno::UNO_QUERY_THROW );
+ uno::Reference< container::XNameAccess > xStyleFamilies = xStylesSupplier->getStyleFamilies();
+ uno::Reference<container::XNameContainer> xStyles;
+ xStyleFamilies->getByName("ParagraphStyles") >>= xStyles;
+ uno::Reference<beans::XPropertySet> xPropertySetHeader( xStyles->getByName("Header"), uno::UNO_QUERY );
+ CPPUNIT_ASSERT_EQUAL(false, xPropertySetHeader->getPropertyValue("ParaLineNumberCount").get<bool>());
+ uno::Reference<beans::XPropertySet> xPropertySetFooter( xStyles->getByName("Footer"), uno::UNO_QUERY );
+ CPPUNIT_ASSERT_EQUAL(false, xPropertySetFooter->getPropertyValue("ParaLineNumberCount").get<bool>());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN705956_1, "n705956-1.docx")
+{
+/*
+Get the first image in the document and check it's the one image in the document.
+It should be also anchored inline (as character) and be inside a groupshape.
+image = ThisComponent.DrawPage.getByIndex(0)
+graphic = image(0).Graphic
+xray graphic.Size
+xray image.AnchorType
+*/
+ uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPageSupplier> drawPageSupplier(textDocument, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> drawPage = drawPageSupplier->getDrawPage();
+ CPPUNIT_ASSERT_EQUAL( sal_Int32( 1 ), drawPage->getCount());
+ uno::Reference<drawing::XShapes> shapes(getShape(1), uno::UNO_QUERY);
+ uno::Reference<drawing::XShape> image;
+ shapes->getByIndex(0) >>= image;
+ uno::Reference<beans::XPropertySet> imageProperties(image, uno::UNO_QUERY);
+ uno::Reference<graphic::XGraphic> graphic;
+ imageProperties->getPropertyValue( "Graphic" ) >>= graphic;
+ uno::Reference<awt::XBitmap> bitmap(graphic, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL( static_cast<sal_Int32>(120), bitmap->getSize().Width );
+ CPPUNIT_ASSERT_EQUAL( static_cast<sal_Int32>(106), bitmap->getSize().Height );
+ text::TextContentAnchorType anchorType;
+ imageProperties->getPropertyValue( "AnchorType" ) >>= anchorType;
+ CPPUNIT_ASSERT_EQUAL( text::TextContentAnchorType_AS_CHARACTER, anchorType );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN705956_2, "n705956-2.docx")
+{
+/*
+<v:shapetype> must be global, reachable even from <v:shape> inside another <w:pict>
+image = ThisComponent.DrawPage.getByIndex(0)
+xray image.FillColor
+*/
+ uno::Reference<drawing::XShape> image = getShape(1);
+ uno::Reference<beans::XPropertySet> imageProperties(image, uno::UNO_QUERY);
+ sal_Int32 fillColor;
+ imageProperties->getPropertyValue( "FillColor" ) >>= fillColor;
+ CPPUNIT_ASSERT_EQUAL( sal_Int32( 0xc0504d ), fillColor );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN747461, "n747461.docx")
+{
+/*
+The document contains 3 images (Red, Black, Green, in this order), with explicit
+w:relativeHeight (300, 0, 225763766). Check that they are in the right ZOrder
+after they are loaded.
+*/
+ uno::Reference<drawing::XShape> image1 = getShape(1), image2 = getShape(2), image3 = getShape(3);
+ sal_Int32 zOrder1, zOrder2, zOrder3;
+ OUString descr1, descr2, descr3;
+ uno::Reference<beans::XPropertySet> imageProperties1(image1, uno::UNO_QUERY);
+ imageProperties1->getPropertyValue( "ZOrder" ) >>= zOrder1;
+ imageProperties1->getPropertyValue( "Description" ) >>= descr1;
+ uno::Reference<beans::XPropertySet> imageProperties2(image2, uno::UNO_QUERY);
+ imageProperties2->getPropertyValue( "ZOrder" ) >>= zOrder2;
+ imageProperties2->getPropertyValue( "Description" ) >>= descr2;
+ uno::Reference<beans::XPropertySet> imageProperties3(image3, uno::UNO_QUERY);
+ imageProperties3->getPropertyValue( "ZOrder" ) >>= zOrder3;
+ imageProperties3->getPropertyValue( "Description" ) >>= descr3;
+ CPPUNIT_ASSERT_EQUAL( sal_Int32( 0 ), zOrder1 );
+ CPPUNIT_ASSERT_EQUAL( sal_Int32( 1 ), zOrder2 );
+ CPPUNIT_ASSERT_EQUAL( sal_Int32( 2 ), zOrder3 );
+ CPPUNIT_ASSERT_EQUAL( OUString( "Black" ), descr1 );
+ CPPUNIT_ASSERT_EQUAL( OUString( "Red" ), descr2 );
+ CPPUNIT_ASSERT_EQUAL( OUString( "Green" ), descr3 );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN750255, "n750255.docx")
+{
+
+/*
+Column break without columns on the page is a page break, so check those paragraphs
+are on page 2 and page 3
+*/
+ CPPUNIT_ASSERT_EQUAL( OUString("one"), parseDump("/root/page[2]/body/txt/text()") );
+ CPPUNIT_ASSERT_EQUAL( OUString("two"), parseDump("/root/page[3]/body/txt/text()") );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN652364, "n652364.docx")
+{
+/*
+Related to 750255 above, column break with columns on the page however should be a column break.
+enum = ThisComponent.Text.createEnumeration
+enum.nextElement
+para1 = enum.nextElement
+xray para1.String
+xray para1.PageStyleName
+enum.nextElement
+para2 = enum.nextElement
+xray para2.String
+xray para2.PageStyleName
+*/
+ // get the 2nd and 4th paragraph
+ uno::Reference<uno::XInterface> paragraph1(getParagraph( 2, "text1" ));
+ uno::Reference<uno::XInterface> paragraph2(getParagraph( 4, "text2" ));
+ OUString pageStyle1 = getProperty< OUString >( paragraph1, "PageStyleName" );
+ OUString pageStyle2 = getProperty< OUString >( paragraph2, "PageStyleName" );
+ // "Standard" is the style for the first page (2nd is "Converted1").
+ CPPUNIT_ASSERT_EQUAL( OUString( "Standard" ), pageStyle1 );
+ CPPUNIT_ASSERT_EQUAL( OUString( "Standard" ), pageStyle2 );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN764005, "n764005.docx")
+{
+ uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
+
+ // The picture in the header wasn't absolutely positioned and wasn't in the background.
+ text::TextContentAnchorType eValue;
+ xPropertySet->getPropertyValue("AnchorType") >>= eValue;
+ CPPUNIT_ASSERT(eValue != text::TextContentAnchorType_AS_CHARACTER);
+ bool bValue = true;
+ xPropertySet->getPropertyValue("Opaque") >>= bValue;
+ CPPUNIT_ASSERT_EQUAL(false, bool(bValue));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN766481, "n766481.docx")
+{
+ /*
+ * The problem was that we had an additional paragraph before the pagebreak.
+ *
+ * oParas = ThisComponent.Text.createEnumeration
+ * oPara = oParas.nextElement
+ * oPara = oParas.nextElement
+ * xray oParas.hasMoreElements ' should be false
+ */
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xParaEnum(xParaEnumAccess->createEnumeration());
+ for (int i = 0; i < 2; ++i)
+ xParaEnum->nextElement();
+ CPPUNIT_ASSERT_EQUAL(sal_False, xParaEnum->hasMoreElements());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN766487, "n766487.docx")
+{
+ /*
+ * The problem was that 1) the font size of the first para was too large 2) numbering had no first-line-indent.
+ *
+ * oParas = ThisComponent.Text.createEnumeration
+ * oPara = oParas.nextElement
+ * oRuns = oPara.createEnumeration
+ * oRun = oRuns.nextElement
+ * xray oRun.CharHeight ' 12, was larger
+ * oPara = oParas.nextElement
+ * xray oPara.ParaFirstLineIndent ' -635, was 0
+ */
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xParaEnum(xParaEnumAccess->createEnumeration());
+
+ uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParaEnum->nextElement(), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xRunEnum(xRunEnumAccess->createEnumeration());
+ uno::Reference<beans::XPropertySet> xPropertySet(xRunEnum->nextElement(), uno::UNO_QUERY);
+ float fValue = 0;
+ xPropertySet->getPropertyValue("CharHeight") >>= fValue;
+ CPPUNIT_ASSERT_EQUAL(12.f, fValue);
+
+ xPropertySet.set(xParaEnum->nextElement(), uno::UNO_QUERY);
+ sal_Int32 nValue = 0;
+ xPropertySet->getPropertyValue("ParaFirstLineIndent") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(-360)), nValue);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN693238, "n693238.docx")
+{
+ /*
+ * The problem was that a continuous section break at the end of the doc caused the margins to be ignored.
+ *
+ * xray ThisComponent.StyleFamilies.PageStyles.Default.LeftMargin ' was 2000, should be 635
+ */
+ uno::Reference<beans::XPropertySet> xPropertySet(getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
+ sal_Int32 nValue = 0;
+ xPropertySet->getPropertyValue("LeftMargin") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(635), nValue);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testNumbering1, "numbering1.docx")
+{
+/* <w:numPr> in the paragraph itself was overridden by <w:numpr> introduced by the paragraph's <w:pStyle>
+enum = ThisComponent.Text.createEnumeration
+para = enum.NextElement
+xray para.NumberingStyleName
+numberingstyle = ThisComponent.NumberingRules.getByIndex(6)
+xray numberingstyle.name - should match name above
+numbering = numberingstyle.getByIndex(0)
+xray numbering(11) - should be 4, arabic
+note that the indexes may get off as the implementation evolves, C++ code searches in loops
+*/
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference< text::XTextRange > paragraph(getParagraph( 1, "Text1." ));
+ OUString numberingStyleName = getProperty< OUString >( paragraph, "NumberingStyleName" );
+ uno::Reference<text::XNumberingRulesSupplier> xNumberingRulesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> numberingRules(xNumberingRulesSupplier->getNumberingRules(), uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> numberingRule;
+ for( int i = 0;
+ i < numberingRules->getCount();
+ ++i )
+ {
+ OUString name = getProperty< OUString >( numberingRules->getByIndex( i ), "Name" );
+ if( name == numberingStyleName )
+ {
+ numberingRule.set( numberingRules->getByIndex( i ), uno::UNO_QUERY );
+ break;
+ }
+ }
+ CPPUNIT_ASSERT( numberingRule.is());
+ uno::Sequence< beans::PropertyValue > numbering;
+ numberingRule->getByIndex( 0 ) >>= numbering;
+ sal_Int16 numberingType = style::NumberingType::NUMBER_NONE;
+ for( int i = 0;
+ i < numbering.getLength();
+ ++i )
+ {
+ if( numbering[ i ].Name == "NumberingType" )
+ {
+ numbering[ i ].Value >>= numberingType;
+ break;
+ }
+ }
+ CPPUNIT_ASSERT_EQUAL( style::NumberingType::ARABIC, numberingType );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testAllGapsWord, "all_gaps_word.docx")
+{
+ BorderTest borderTest;
+ BorderTest::testTheBorders(mxComponent, false);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN775906, "n775906.docx")
+{
+ /*
+ * The problem was that right margin (via direct formatting) erased the left/first margin (inherited from numbering style).
+ *
+ * oParas = ThisComponent.Text.createEnumeration
+ * oPara = oParas.nextElement
+ * xray oPara.ParaFirstLineIndent ' was 0
+ * xray oPara.ParaLeftMargin ' was 0
+ */
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-635), getProperty<sal_Int32>(getParagraph(1), "ParaFirstLineIndent"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1905), getProperty<sal_Int32>(getParagraph(1), "ParaLeftMargin"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf59699, "tdf59699.docx")
+{
+ uno::Reference<beans::XPropertySet> xImage(getShape(1), uno::UNO_QUERY);
+ auto xGraphic = getProperty<uno::Reference<graphic::XGraphic> >(xImage, "Graphic");
+ // This was false: the referenced graphic data wasn't imported.
+ CPPUNIT_ASSERT(xGraphic.is());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN777337, "n777337.docx")
+{
+ /*
+ * The problem was that the top and bottom margin on the first page was only 0.1cm instead of 1.7cm.
+ *
+ * oFirst = ThisComponent.StyleFamilies.PageStyles.getByName("First Page")
+ * xray oFirst.TopMargin
+ * xray oFirst.BottomMargin
+ */
+ uno::Reference<beans::XPropertySet> xPropertySet(getStyles("PageStyles")->getByName("First Page"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1702), getProperty<sal_Int32>(xPropertySet, "TopMargin"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1702), getProperty<sal_Int32>(xPropertySet, "BottomMargin"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN778836, "n778836.docx")
+{
+ /*
+ * The problem was that the paragraph inherited margins from the numbering
+ * and parent paragraph styles and the result was incorrect.
+ */
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1270), getProperty<sal_Int32>(getParagraph(1), "ParaRightMargin"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3810), getProperty<sal_Int32>(getParagraph(1), "ParaLeftMargin"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-635), getProperty<sal_Int32>(getParagraph(1), "ParaFirstLineIndent"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN778828, "n778828.docx")
+{
+ /*
+ * The problem was that a page break after a continuous section break caused
+ * double page break on title page.
+ */
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+ xCursor->jumpToLastPage();
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xCursor->getPage());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN779834, "n779834.docx")
+{
+ // This document simply crashed the importer.
+}
+
+DECLARE_OOXMLEXPORT_TEST(testRHBZ1180114, "rhbz1180114.docx")
+{
+ // This document simply crashed the importer.
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTDF91122, "tdf91122.docx")
+{
+ /*
+ * OLE object shape: default vertical position is top in MSO, not bottom
+ */
+ for (int i = 1; i <= 2; ++i)
+ {
+ uno::Reference<beans::XPropertySet> xShapeProperties( getShape(i), uno::UNO_QUERY );
+ uno::Reference<drawing::XShapeDescriptor> xShapeDescriptor(xShapeProperties, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("FrameShape"), xShapeDescriptor->getShapeType());
+ sal_Int16 nValue;
+ xShapeProperties->getPropertyValue("VertOrient") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong vertical orientation", text::VertOrientation::TOP, nValue);
+ }
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTDF91260, "tdf91260.docx")
+{
+ /*
+ * textbox can't extend beyond the page bottom
+ * solution: shrinking textbox (its text frame) height, if needed
+ */
+ uno::Reference<text::XTextRange> xFrame(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xFrame->getString().startsWith( "Lorem ipsum" ) );
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3454), getProperty<sal_Int32>(xFrame, "Height"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo74357, "fdo74357.docx")
+{
+ // Floating table wasn't converted to a textframe.
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDrawPage(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+ // This was 0.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
+
+ // Bottom margin of the first paragraph was too large, causing a layout problem.
+ // This was 494.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(86), getProperty<sal_Int32>(getParagraph(1), "ParaBottomMargin"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo55187, "fdo55187.docx")
+{
+ // 0x010d was imported as a newline.
+ getParagraph(1, OUString("lup\xc4\x8dka", 7, RTL_TEXTENCODING_UTF8));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN780563, "n780563.docx")
+{
+ /*
+ * Make sure we have the table in the fly frame created
+ */
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xTables->getCount( ));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN780853, "n780853.docx")
+{
+ /*
+ * The problem was that the table was not imported.
+ *
+ * xray ThisComponent.TextTables.Count 'was 0
+ */
+ uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN780843, "n780843.docx")
+{
+ uno::Reference< text::XTextRange > xPara = getParagraph(1);
+ OUString aStyleName = getProperty<OUString>(xPara, "PageStyleName");
+ CPPUNIT_ASSERT_EQUAL(OUString("First Page"), aStyleName);
+
+ //tdf64372 this document should only have one page break (2 pages, not 3)
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+ xCursor->jumpToLastPage();
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xCursor->getPage());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN780843b, "n780843b.docx")
+{
+ // Same document as testN780843 except there is more text before the continuous break. Now the opposite footer results should happen.
+ uno::Reference< text::XTextRange > xPara = getParagraph(3);
+ OUString aStyleName = getProperty<OUString>(xPara, "PageStyleName");
+ uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName(aStyleName), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xFooterText = getProperty< uno::Reference<text::XTextRange> >(xPageStyle, "FooterText");
+ CPPUNIT_ASSERT_EQUAL( OUString("hidden footer"), xFooterText->getString() );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testShadow, "imgshadow.docx")
+{
+ /*
+ * The problem was that drop shadows on inline images were not being
+ * imported and applied.
+ */
+ uno::Reference<beans::XPropertySet> xPropertySet(getShape(2), uno::UNO_QUERY);
+
+ bool bShadow = getProperty<bool>(xPropertySet, "Shadow");
+ CPPUNIT_ASSERT(bShadow);
+
+ sal_Int32 nShadowXDistance = getProperty<sal_Int32>(xPropertySet, "ShadowXDistance");
+ CPPUNIT_ASSERT(nShadowXDistance != 0);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN782345, "n782345.docx")
+{
+ /*
+ * The problem was that the page break was inserted before the 3rd para, instead of before the 2nd para.
+ */
+ CPPUNIT_ASSERT_EQUAL(style::BreakType_PAGE_BEFORE, getProperty<style::BreakType>(getParagraph(2), "BreakType"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN779941, "n779941.docx")
+{
+ /*
+ * Make sure top/bottom margins of tables are set to 0 (problem was: bottom margin set to 0.35cm)
+ */
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xTableProperties(xTables->getByIndex(0), uno::UNO_QUERY);
+ {
+ uno::Any aValue = xTableProperties->getPropertyValue("TopMargin");
+ sal_Int32 nTopMargin;
+ aValue >>= nTopMargin;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nTopMargin);
+ }
+ {
+ uno::Any aValue = xTableProperties->getPropertyValue("BottomMargin");
+ sal_Int32 nBottomMargin;
+ aValue >>= nBottomMargin;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nBottomMargin);
+ }
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN783638, "n783638.docx")
+{
+ // The problem was that the margins of inline images were not zero.
+ uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xPropertySet, "LeftMargin"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo52208, "fdo52208.docx")
+{
+ // The problem was that the document had 2 pages instead of 1.
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+ xCursor->jumpToLastPage();
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN785767, "n785767.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
+ // Check the A1 and B1 cells, the width of both of them was the default value (10000 / 9, as there were 9 cells in the row).
+ CPPUNIT_ASSERT_MESSAGE("A1 must not have default width", sal_Int16(10000 / 9) != getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators")[0].Position);
+ CPPUNIT_ASSERT_MESSAGE("B1 must not have default width", sal_Int16(10000 / 9) != getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(1), "TableColumnSeparators")[0].Position);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFineTableDash, "tableborder-finedash.docx")
+{
+ // The problem was that finely dashed borders on tables were unsupported
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xTableProperties(xTables->getByIndex(0), uno::UNO_QUERY);
+ table::TableBorder2 aBorder;
+ xTableProperties->getPropertyValue("TableBorder2") >>= aBorder;
+ CPPUNIT_ASSERT_EQUAL(aBorder.RightLine.LineStyle, table::BorderLineStyle::FINE_DASHED);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN792778, "n792778.docx")
+{
+ /*
+ * The problem was that the importer didn't handle complex groupshapes with groupshapes, textboxes and graphics inside.
+ *
+ * xray ThisComponent.DrawPage.Count ' 1 groupshape
+ * xray ThisComponent.DrawPage(0).Count ' 2 sub-groupshapes
+ * xray ThisComponent.DrawPage(0).getByIndex(0).Count ' first sub-groupshape: 1 pic
+ * xray ThisComponent.DrawPage(0).getByIndex(1).Count ' second sub-groupshape: 1 pic
+ * xray ThisComponent.DrawPage(0).getByIndex(0).getByIndex(0).Position.Y ' 11684, the vertical position of the shapes were also wrong
+ * xray ThisComponent.DrawPage(0).getByIndex(1).getByIndex(0).Position.Y ' 11684
+ */
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDrawPage(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
+
+ uno::Reference<drawing::XShapes> xGroupShape(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xGroupShape->getCount());
+
+ uno::Reference<drawing::XShapes> xInnerGroupShape(xGroupShape->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xInnerGroupShape->getCount());
+
+ uno::Reference<drawing::XShape> xInnerShape(xInnerGroupShape->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(11684), xInnerShape->getPosition().Y);
+
+ xInnerGroupShape.set(xGroupShape->getByIndex(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xInnerGroupShape->getCount());
+
+ xInnerShape.set(xInnerGroupShape->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(11684), xInnerShape->getPosition().Y);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testGroupshapeSmarttag, "groupshape-smarttag.docx")
+{
+ uno::Reference<drawing::XShapes> xGroupShape(getShape(1), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xShape(xGroupShape->getByIndex(0), uno::UNO_QUERY);
+ // First run of shape text was missing due to the w:smartTag wrapper around it.
+ CPPUNIT_ASSERT_EQUAL(OUString("Box 2"), xShape->getString());
+
+ // Font size of the shape text was 10.
+ CPPUNIT_ASSERT_EQUAL(12.f, getProperty<float>(xShape->getText(), "CharHeight"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN793262, "n793262.docx")
+{
+ uno::Reference<container::XEnumerationAccess> xHeaderText = getProperty< uno::Reference<container::XEnumerationAccess> >(getStyles("PageStyles")->getByName("Standard"), "HeaderText");
+ uno::Reference<container::XEnumeration> xHeaderParagraphs(xHeaderText->createEnumeration());
+ xHeaderParagraphs->nextElement();
+ // Font size of the last empty paragraph in the header was ignored, this was 11.
+ CPPUNIT_ASSERT_EQUAL(16.f, getProperty<float>(xHeaderParagraphs->nextElement(), "CharHeight"));
+
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ // Cell margins as direct formatting were ignored, this was 0.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(76), getProperty<sal_Int32>(xTable->getCellByName("A1"), "TopBorderDistance"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN793998, "n793998.docx")
+{
+ sal_Int32 nTextPortion = parseDump("/root/page/body/txt/Text[1]", "nWidth").toInt32(); // Width of the first (text) portion
+ sal_Int32 nTabPortion = parseDump("/root/page/body/txt/Text[2]", "nWidth").toInt32(); // Width of the second (tab) portion
+ sal_Int32 nParagraph = parseDump("/root/page/body/txt/infos/bounds", "width").toInt32(); // Width of the paragraph
+ sal_Int32 nRightMargin = 3000;
+ // The problem was that the tab portion didn't ignore the right margin, so text + tab width wasn't larger than body (paragraph - right margin) width.
+ CPPUNIT_ASSERT(nTextPortion + nTabPortion > nParagraph - nRightMargin);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN779642, "n779642.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
+
+ // First problem: check that we have 2 tables, nesting caused the
+ // creation of outer one to fail
+ uno::Reference<container::XIndexAccess> xTables(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong number of imported tables", sal_Int32(2), xTables->getCount());
+
+ // Second problem: check that the outer table is in a frame, at the bottom of the page
+ uno::Reference<text::XTextTable> xTextTable(xTextTablesSupplier->getTextTables()->getByName("Table2"), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xAnchor(xTextTable->getAnchor(), uno::UNO_QUERY);
+ uno::Any aFrame = xAnchor->getPropertyValue("TextFrame");
+ uno::Reference<beans::XPropertySet> xFrame;
+ aFrame >>= xFrame;
+ sal_Int16 nValue;
+ xFrame->getPropertyValue("VertOrient") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong vertical orientation", nValue, text::VertOrientation::BOTTOM);
+ xFrame->getPropertyValue("VertOrientRelation") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong vertical orientation relation", nValue, text::RelOrientation::PAGE_PRINT_AREA);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTbLrHeight, "tblr-height.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), uno::UNO_QUERY);
+ // btLr text direction was imported as MIN, it should be FIX to avoid incorrectly large height in case of too much content.
+ CPPUNIT_ASSERT_EQUAL(text::SizeType::FIX, getProperty<sal_Int16>(xTableRows->getByIndex(0), "SizeType"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testBnc865381, "bnc865381.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
+ // Second row has a vertically merged cell, make sure size type is not FIX in that case (otherwise B2 is not readable).
+ CPPUNIT_ASSERT(text::SizeType::FIX != getProperty<sal_Int16>(xTableRows->getByIndex(1), "SizeType"));
+ // Explicit size of 41 mm100 was set, so the vertical text in A2 was not readable.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTableRows->getByIndex(1), "Height"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo53985, "fdo53985.docx")
+{
+ // Unhandled exception prevented import of the rest of the document.
+
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5), xTables->getCount()); // Only 4 tables were imported.
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo59638, "fdo59638.docx")
+{
+ // The problem was that w:lvlOverride inside w:num was ignores by dmapper.
+
+ uno::Reference<beans::XPropertySet> xPropertySet(getStyles("NumberingStyles")->getByName("WWNum1"), uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xLevels(xPropertySet->getPropertyValue("NumberingRules"), uno::UNO_QUERY);
+ uno::Sequence<beans::PropertyValue> aProps;
+ xLevels->getByIndex(0) >>= aProps; // 1st level
+
+ for (int i = 0; i < aProps.getLength(); ++i)
+ {
+ const beans::PropertyValue& rProp = aProps[i];
+
+ if (rProp.Name == "BulletChar")
+ {
+ // Was '*', should be 'o'.
+ CPPUNIT_ASSERT_EQUAL(OUString("\xEF\x82\xB7", 3, RTL_TEXTENCODING_UTF8), rProp.Value.get<OUString>());
+ return;
+ }
+ }
+ CPPUNIT_FAIL("no BulletChar property");
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo61343, "fdo61343.docx")
+{
+ // The problem was that there were a groupshape in the doc, followed by an
+ // OLE object, and this lead to a crash.
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDraws->getCount());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testToolsLineNumbering, "tools-line-numbering.docx")
+{
+ /*
+ * Test the line numbering feature import (Tools->Line Numbering ...)
+ *
+ * xray ThisComponent.getLineNumberingProperties().IsOn == True
+ * xray ThisComponent.getLineNumberingProperties().CountEmptyLines == True
+ * xray ThisComponent.getLineNumberingProperties().NumberPosition == 0
+ * xray ThisComponent.getLineNumberingProperties().NumberingType == 4
+ * xray ThisComponent.getLineNumberingProperties().SeparatorInterval == 3
+ */
+
+ bool bValue = false;
+ sal_Int32 nValue = -1;
+
+ uno::Reference< text::XTextDocument > xtextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference< text::XLineNumberingProperties > xLineProperties( xtextDocument, uno::UNO_QUERY_THROW );
+ uno::Reference< beans::XPropertySet > xPropertySet = xLineProperties->getLineNumberingProperties();
+
+ xPropertySet->getPropertyValue("IsOn") >>= bValue;
+ CPPUNIT_ASSERT_EQUAL(true, bValue);
+
+ xPropertySet->getPropertyValue("CountEmptyLines") >>= bValue;
+ CPPUNIT_ASSERT_EQUAL(true, bValue);
+
+ xPropertySet->getPropertyValue("NumberPosition") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nValue);
+
+ xPropertySet->getPropertyValue("NumberingType") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), nValue);
+
+ xPropertySet->getPropertyValue("SeparatorInterval") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), nValue);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testfdo78904, "fdo78904.docx")
+{
+ uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
+ if (xIndexAccess->getCount())
+ {
+ uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(oox::drawingml::convertEmuToHmm(0)), getProperty<sal_Int32>(xFrame, "HoriOrientPosition"));
+ }
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo60922, "fdo60922.docx")
+{
+ // This was 0, not 100, due to wrong import of w:position w:val="0"
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(100), getProperty<sal_Int32>(getRun(getParagraph(1), 1), "CharEscapementHeight"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo59273, "fdo59273.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ // Was 115596 (i.e. 10 times wider than necessary), as w:tblW was missing and the importer didn't set it.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(12961), getProperty<sal_Int32>(xTextTable, "Width"));
+
+ uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
+ // Was 9997, so the 4th column had ~zero width
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(7498), getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators")[2].Position);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testConditionalstylesTablelook, "conditionalstyles-tbllook.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ // Background was -1.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x7F7F7F), getProperty<sal_Int32>(xTable->getCellByName("A1"), "BackColor"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo63685, "fdo63685.docx")
+{
+ // An inline image's wrapping should be always zero, even if the doc model has a non-zero value.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getShape(1), "TopMargin"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN592908_Frame, "n592908-frame.docx")
+{
+ uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
+ text::WrapTextMode eValue;
+ xPropertySet->getPropertyValue("Surround") >>= eValue;
+ CPPUNIT_ASSERT_EQUAL(eValue, text::WrapTextMode_PARALLEL);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN592908_Picture, "n592908-picture.docx")
+{
+ uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
+ text::WrapTextMode eValue;
+ xPropertySet->getPropertyValue("Surround") >>= eValue;
+ CPPUNIT_ASSERT_EQUAL(eValue, text::WrapTextMode_PARALLEL);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN779630, "n779630.docx")
+{
+ // First shape: date picker
+ uno::Reference<drawing::XControlShape> xControlShape(getShape(1), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xPropertySet(xControlShape->getControl(), uno::UNO_QUERY);
+ uno::Reference<lang::XServiceInfo> xServiceInfo(xPropertySet, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(true, bool(xServiceInfo->supportsService("com.sun.star.form.component.DateField")));
+ CPPUNIT_ASSERT_EQUAL(OUString("date default text"), getProperty<OUString>(xPropertySet, "HelpText"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(8), getProperty<sal_Int16>(xPropertySet, "DateFormat"));
+ CPPUNIT_ASSERT_EQUAL(true, bool(getProperty<bool>(xPropertySet, "Dropdown")));
+
+ // Second shape: combo box
+ xControlShape.set(getShape(2), uno::UNO_QUERY);
+ xPropertySet.set(xControlShape->getControl(), uno::UNO_QUERY);
+ xServiceInfo.set(xPropertySet, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(true, bool(xServiceInfo->supportsService("com.sun.star.form.component.ComboBox")));
+ CPPUNIT_ASSERT_EQUAL(OUString("dropdown default text"), getProperty<OUString>(xPropertySet, "DefaultText"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), getProperty< uno::Sequence<OUString> >(xPropertySet, "StringItemList").getLength());
+ CPPUNIT_ASSERT_EQUAL(true, bool(getProperty<bool>(xPropertySet, "Dropdown")));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testIndentation, "indentation.docx")
+{
+ uno::Reference<uno::XInterface> xParaLTRTitle(getParagraph( 1, "Title aligned"));
+ uno::Reference<uno::XInterface> xParaLTRNormal(getParagraph( 2, ""));
+
+ // this will test the text direction for paragraphs
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, getProperty<sal_Int16>( xParaLTRTitle, "WritingMode" ));
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, getProperty<sal_Int16>( xParaLTRNormal, "WritingMode" ));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testPageBorderShadow, "page-border-shadow.docx")
+{
+ // The problem was that in w:pgBorders, child elements had a w:shadow attribute, but that was ignored.
+ table::ShadowFormat aShadow = getProperty<table::ShadowFormat>(getStyles("PageStyles")->getByName("Standard"), "ShadowFormat");
+ CPPUNIT_ASSERT_EQUAL(COL_BLACK, sal_uInt32(aShadow.Color));
+ CPPUNIT_ASSERT_EQUAL(table::ShadowLocation_BOTTOM_RIGHT, aShadow.Location);
+ // w:sz="48" is in eights of a point, 1 pt is 20 twips.
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(convertTwipToMm100(48/8*20)), aShadow.ShadowWidth);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN816593, "n816593.docx")
+{
+ // Two consecutive <w:tbl> without any paragraph in between, but with different tblpPr. In this
+ // case we need to have 2 different tables instead of 1
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xTables->getCount());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN820509, "n820509.docx")
+{
+ // Design mode was enabled.
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<view::XFormLayerAccess> xFormLayerAccess(xModel->getCurrentController(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(false, bool(xFormLayerAccess->isFormDesignMode()));
+
+ // M.d.yyyy date format was unhandled.
+ uno::Reference<drawing::XControlShape> xControlShape(getShape(1), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xPropertySet(xControlShape->getControl(), uno::UNO_QUERY);
+ uno::Reference<lang::XServiceInfo> xServiceInfo(xPropertySet, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(8), getProperty<sal_Int16>(xPropertySet, "DateFormat"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testN830205, "n830205.docx")
+{
+ // Previously import just crashed (due to infinite recursion).
+ getParagraph(1, "XXX");
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTableAutoColumnFixedSize, "table-auto-column-fixed-size.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+
+ // Width was not recognized during import when table size was 'auto'
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(3996)), getProperty<sal_Int32>(xTextTable, "Width"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTableAutoColumnFixedSize2, "table-auto-column-fixed-size2.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ // This was 17907, i.e. the sum of the width of the 3 cells (10152 twips each), which is too wide.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(16891), getProperty<sal_Int32>(xTextTable, "Width"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo46361, "fdo46361.docx")
+{
+ uno::Reference<container::XIndexAccess> xGroupShape(getShape(1), uno::UNO_QUERY);
+ uno::Reference<drawing::XShape> xShape(xGroupShape->getByIndex(0), uno::UNO_QUERY);
+ // This was CENTER.
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_TOP, getProperty<drawing::TextVerticalAdjust>(xShape, "TextVerticalAdjust"));
+ uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xShape, uno::UNO_QUERY)->getText();
+ uno::Reference<text::XTextRange> xParagraph = getParagraphOfText(1, xText);
+ // This was LEFT.
+ CPPUNIT_ASSERT_EQUAL(style::ParagraphAdjust_CENTER, static_cast<style::ParagraphAdjust>(getProperty<sal_Int16>(xParagraph, "ParaAdjust")));
+ // This was black, not green.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x008000), getProperty<sal_Int32>(getRun(xParagraph, 1), "CharColor"));
+ // \n char was missing due to unhandled w:br.
+ CPPUNIT_ASSERT_EQUAL(OUString("text\ntext"), uno::Reference<text::XTextRange>(xGroupShape->getByIndex(1), uno::UNO_QUERY)->getString());
+ // \n chars were missing, due to unhandled multiple w:p tags.
+ CPPUNIT_ASSERT_EQUAL(OUString("text\ntext\n"), uno::Reference<text::XTextRange>(xGroupShape->getByIndex(2), uno::UNO_QUERY)->getString());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo65632, "fdo65632.docx")
+{
+ // The problem was that the footnote text had fake redline: only the body
+ // text has redline in fact.
+ uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
+ uno::Reference<text::XText> xText(xFootnotes->getByIndex(0), uno::UNO_QUERY);
+ //uno::Reference<text::XTextRange> xParagraph = getParagraphOfText(1, xText);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(getRun(getParagraphOfText(1, xText), 1), "TextPortionType"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo66474, "fdo66474.docx")
+{
+ // The table width was too small, so the text in the second cell was unreadable: this was 1397.
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(10492), getProperty<sal_Int32>(xTables->getByIndex(0), "Width"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testGroupshapeRotation, "groupshape-rotation.docx")
+{
+ // Rotation on groupshapes wasn't handled at all by the VML importer.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(315 * 100), getProperty<sal_Int32>(getShape(1), "RotateAngle"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testBnc780044Spacing, "bnc780044_spacing.docx")
+{
+ // The document has global w:spacing in styles.xml , and local w:spacing in w:pPr, which however
+ // only applied to text runs, not to as-character pictures. So the picture made the line higher.
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+ xCursor->jumpToLastPage();
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTableAutoNested, "table-auto-nested.docx")
+{
+ // This was 176, when compat option is not enabled, the auto paragraph bottom margin value was incorrect.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(494), getProperty<sal_Int32>(getParagraph(1), "ParaBottomMargin"));
+
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ // This was 115596, i.e. the width of the outer table was too large.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(23051), getProperty<sal_Int32>(xTables->getByIndex(1), "Width"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTableStyleParprop, "table-style-parprop.docx")
+{
+ // The problem was that w:spacing's w:after=0 (a paragraph property) wasn't imported from table style.
+ uno::Reference<text::XTextTable> xTable(getParagraphOrTable(1), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xCell(xTable->getCellByName("A1"), uno::UNO_QUERY);
+ // This was 353, the document default, i.e. paragraph property from table style had no effect.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraphOfText(1, xCell->getText()), "ParaBottomMargin"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTablePagebreak, "table-pagebreak.docx")
+{
+ // Page break inside table: should be ignored (was style::BreakType_PAGE_BEFORE before).
+ CPPUNIT_ASSERT_EQUAL(style::BreakType_NONE, getProperty<style::BreakType>(getParagraphOrTable(2), "BreakType"));
+
+ // This one is outside the table: should not be ignored.
+ CPPUNIT_ASSERT_EQUAL(style::BreakType_PAGE_BEFORE, getProperty<style::BreakType>(getParagraph(3), "BreakType"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo68607, "fdo68607.docx")
+{
+ // Bugdoc was 8 pages in Word, 1 in Writer due to pointlessly wrapping the
+ // table in a frame. Exact layout may depend on fonts available, etc. --
+ // but at least make sure that our table spans over multiple pages now.
+ CPPUNIT_ASSERT(getPages() > 1);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testVmlTextVerticalAdjust, "vml-text-vertical-adjust.docx")
+{
+ uno::Reference<drawing::XShapes> xOuterGroupShape(getShape(1), uno::UNO_QUERY);
+ uno::Reference<drawing::XShapes> xInnerGroupShape(xOuterGroupShape->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<drawing::XShape> xShape(xInnerGroupShape->getByIndex(0), uno::UNO_QUERY);
+ // Was CENTER.
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_TOP, getProperty<drawing::TextVerticalAdjust>(xShape, "TextVerticalAdjust"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo69636, "fdo69636.docx")
+{
+ // The problem was that the mso-layout-flow-alt:bottom-to-top VML shape property wasn't handled for sw text frames.
+ uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
+ comphelper::SequenceAsHashMap aCustomShapeGeometry(xPropertySet->getPropertyValue("CustomShapeGeometry"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-270), aCustomShapeGeometry["TextPreRotateAngle"].get<sal_Int32>());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testChartProp, "chart-prop.docx")
+{
+ // The problem was that chart was not getting parsed in writer module.
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDrawPage(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
+
+ uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(15240), getProperty<sal_Int32>(xPropertySet, "Width"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(8890), getProperty<sal_Int32>(xPropertySet, "Height"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo43093, "fdo43093b.docx")
+{
+ // The problem was that the direction and alignment are not correct for RTL paragraphs.
+ uno::Reference<uno::XInterface> xParaRtlRight(getParagraph( 1, "Right and RTL in M$"));
+ sal_Int32 nRtlRight = getProperty< sal_Int32 >( xParaRtlRight, "ParaAdjust" );
+ sal_Int16 nRRDir = getProperty< sal_Int32 >( xParaRtlRight, "WritingMode" );
+
+ uno::Reference<uno::XInterface> xParaRtlLeft(getParagraph( 2, "Left and RTL in M$"));
+ sal_Int32 nRtlLeft = getProperty< sal_Int32 >( xParaRtlLeft, "ParaAdjust" );
+ sal_Int16 nRLDir = getProperty< sal_Int32 >( xParaRtlLeft, "WritingMode" );
+
+ uno::Reference<uno::XInterface> xParaLtrRight(getParagraph( 3, "Right and LTR in M$"));
+ sal_Int32 nLtrRight = getProperty< sal_Int32 >( xParaLtrRight, "ParaAdjust" );
+ sal_Int16 nLRDir = getProperty< sal_Int32 >( xParaLtrRight, "WritingMode" );
+
+ uno::Reference<uno::XInterface> xParaLtrLeft(getParagraph( 4, "Left and LTR in M$"));
+ sal_Int32 nLtrLeft = getProperty< sal_Int32 >( xParaLtrLeft, "ParaAdjust" );
+ sal_Int16 nLLDir = getProperty< sal_Int32 >( xParaLtrLeft, "WritingMode" );
+
+ // this will test the both the text direction and alignment for each paragraph
+ CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_RIGHT), nRtlRight);
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::RL_TB, nRRDir);
+
+ CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_LEFT), nRtlLeft);
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::RL_TB, nRLDir);
+
+ CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_RIGHT), nLtrRight);
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, nLRDir);
+
+ CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_LEFT), nLtrLeft);
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, nLLDir);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testSmartart, "smartart.docx")
+{
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xTextDocumentPropertySet(xTextDocument, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDraws->getCount()); // One groupshape in the doc
+
+ uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xGroup->getCount()); // 3 rectangles and an arrow in the group
+
+ uno::Reference<beans::XPropertySet> xPropertySet(xGroup->getByIndex(1), uno::UNO_QUERY);
+ sal_Int32 nValue(0);
+ xPropertySet->getPropertyValue("FillColor") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x4f81bd), nValue); // If fill color is right, theme import is OK
+
+ uno::Reference<text::XTextRange> xTextRange(xGroup->getByIndex(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Sample"), xTextRange->getString()); // Shape has text
+
+ uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextRange->getText(), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
+ xPropertySet.set(xParaEnum->nextElement(), uno::UNO_QUERY);
+ xPropertySet->getPropertyValue("ParaAdjust") >>= nValue;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(style::ParagraphAdjust_CENTER), nValue); // Paragraph properties are imported
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo69548, "fdo69548.docx")
+{
+ // The problem was that the last space in target URL was removed
+ CPPUNIT_ASSERT_EQUAL(OUString("#this is a bookmark"), getProperty<OUString>(getRun(getParagraph(1), 1), "HyperLinkURL"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testWpsOnly, "wps-only.docx")
+{
+ // Document has wp:anchor, not wp:inline, so handle it accordingly.
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ text::TextContentAnchorType eValue = getProperty<text::TextContentAnchorType>(xShape, "AnchorType");
+ CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_PARAGRAPH, eValue);
+
+ // Check position, it was 0. This is a shape, so use getPosition(), not a property.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(oox::drawingml::convertEmuToHmm(671830)), xShape->getPosition().X);
+
+ // Left margin was 0, instead of 114300 EMU's.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(318), getProperty<sal_Int32>(xShape, "LeftMargin"));
+ // Wrap type was PARALLEL.
+ CPPUNIT_ASSERT_EQUAL(text::WrapTextMode_THROUGHT, getProperty<text::WrapTextMode>(xShape, "Surround"));
+
+ // This should be in front of text.
+ CPPUNIT_ASSERT_EQUAL(true, bool(getProperty<bool>(xShape, "Opaque")));
+ // And this should be behind the document.
+ CPPUNIT_ASSERT_EQUAL(false, bool(getProperty<bool>(getShape(2), "Opaque")));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testWpgOnly, "wpg-only.docx")
+{
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ // Check position, it was nearly 0. This is a shape, so use getPosition(), not a property.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(oox::drawingml::convertEmuToHmm(548005)), xShape->getPosition().X);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testWpgNested, "wpg-nested.docx")
+{
+ uno::Reference<drawing::XShapes> xGroup(getShape(1), uno::UNO_QUERY);
+ uno::Reference<drawing::XShapeDescriptor> xShapeDescriptor(xGroup->getByIndex(0), uno::UNO_QUERY);
+ // This was a com.sun.star.drawing.CustomShape, due to lack of handling of groupshapes inside groupshapes.
+ CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.GroupShape"), xShapeDescriptor->getShapeType());
+ // This was text::RelOrientation::PAGE_FRAME, effectively placing the group shape on the left side of the page instead of the right one.
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_RIGHT, getProperty<sal_Int16>(xGroup, "HoriOrientRelation"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(textboxWpgOnly, "textbox-wpg-only.docx")
+{
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ // The relativeFrom attribute was ignored for groupshapes, i.e. these were text::RelOrientation::FRAME.
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xShape, "HoriOrientRelation"));
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xShape, "VertOrientRelation"));
+ // Make sure the shape is not in the background, as we have behindDoc="0" in the doc.
+ CPPUNIT_ASSERT_EQUAL(true, bool(getProperty<bool>(xShape, "Opaque")));
+
+ // The 3 paragraphs on the rectangles inside the groupshape ended up in the
+ // body text, make sure we don't have multiple paragraphs there anymore.
+ CPPUNIT_ASSERT_EQUAL(1, getParagraphs()); // was 4
+
+ // Character escapement was enabled by default, this was 58.
+ uno::Reference<container::XIndexAccess> xGroup(xShape, uno::UNO_QUERY);
+ uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xGroup->getByIndex(0), uno::UNO_QUERY)->getText();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(100), getProperty<sal_Int32>(getRun(getParagraphOfText(1, xText), 1), "CharEscapementHeight"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testMceWpg, "mce-wpg.docx")
+{
+ // Make sure that we read the primary branch, if wpg is requested as a feature.
+ uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
+ uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xGroup->getByIndex(0), uno::UNO_QUERY)->getText();
+ // This was VML1.
+ getParagraphOfText(1, xText, "DML1");
+}
+
+DECLARE_OOXMLEXPORT_TEST(testMceNested, "mce-nested.docx")
+{
+ // Vertical position of the shape was incorrect due to incorrect nested mce handling.
+ uno::Reference<beans::XPropertySet> xShape(getShape(1), uno::UNO_QUERY);
+ // positionV's posOffset from the bugdoc, was 0.
+ CPPUNIT_ASSERT(6985 <= getProperty<sal_Int32>(xShape, "VertOrientPosition"));
+ // This was -1 (default), make sure the background color is set.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x4f81bd), getProperty<sal_Int32>(xShape, "FillColor"));
+
+ uno::Reference<drawing::XShapeDescriptor> xShapeDescriptor(getShape(2), uno::UNO_QUERY);
+ // This was a com.sun.star.drawing.CustomShape, due to incorrect handling of wpg elements after a wps textbox.
+ CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.GroupShape"), xShapeDescriptor->getShapeType());
+
+ // Now check the top right textbox.
+ uno::Reference<container::XIndexAccess> xGroup(getShape(2), uno::UNO_QUERY);
+ uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xGroup->getByIndex(1), uno::UNO_QUERY)->getText();
+ uno::Reference<text::XTextRange> xParagraph = getParagraphOfText(1, xText, "[Year]");
+ CPPUNIT_ASSERT_EQUAL(48.f, getProperty<float>(getRun(xParagraph, 1), "CharHeight"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffffff), getProperty<sal_Int32>(getRun(xParagraph, 1), "CharColor"));
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD, getProperty<float>(getRun(xParagraph, 1), "CharWeight"));
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_BOTTOM, getProperty<drawing::TextVerticalAdjust>(xGroup->getByIndex(1), "TextVerticalAdjust"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testMissingPath, "missing-path.docx")
+{
+ comphelper::SequenceAsHashMap aCustomShapeGeometry(getProperty<beans::PropertyValues>(getShape(1), "CustomShapeGeometry"));
+ comphelper::SequenceAsHashMap aPath(aCustomShapeGeometry["Path"].get<beans::PropertyValues>());
+ uno::Sequence<drawing::EnhancedCustomShapeParameterPair> aCoordinates = aPath["Coordinates"].get< uno::Sequence<drawing::EnhancedCustomShapeParameterPair> >();
+ // This was 0, the coordinate list was empty.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(19), aCoordinates.getLength());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo70457, "fdo70457.docx")
+{
+ // The document contains a rotated bitmap
+ // It must be imported as a XShape object with the proper rotation value
+
+ // Check: there is one shape in the doc
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDraws->getCount());
+
+ // Check: the angle of the shape is 45º
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4500), getProperty<sal_Int32>(getShape(1), "RotateAngle"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testLOCrash,"file_crash.docx")
+{
+ //The problem was libreoffice crash while opening the file.
+ getParagraph(1,"Contents");
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo72560, "fdo72560.docx")
+{
+ // The problem was libreoffice confuse when there RTL default style for paragraph
+ uno::Reference<uno::XInterface> xParaLeftRTL(getParagraph( 1, "RTL LEFT"));
+ uno::Reference<uno::XInterface> xParaRightLTR(getParagraph( 2, "LTR RIGHT"));
+
+ // this will test the text direction and alignment for paragraphs
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::RL_TB, getProperty<sal_Int16>( xParaLeftRTL, "WritingMode" ));
+ CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_LEFT), getProperty< sal_Int32 >( xParaLeftRTL, "ParaAdjust" ));
+
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, getProperty<sal_Int16>( xParaRightLTR, "WritingMode" ));
+ CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_RIGHT), getProperty< sal_Int32 >( xParaRightLTR, "ParaAdjust" ));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testRPrChangeClosed, "rprchange_closed.docx")
+{
+ // Redline defined by rPrChanged wasn't removed.
+ // First paragraph has an rPrChange element, make sure it doesn't appear in the second paragraph.
+ CPPUNIT_ASSERT_EQUAL(false, hasProperty(getRun(getParagraph(2), 1), "RedlineType"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo65090, "fdo65090.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
+ // The first row had two cells, instead of a single horizontally merged one.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators").getLength());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo69649, "fdo69649.docx")
+{
+ // The DOCX containing the Table of Contents was not imported with correct page nos
+ uno::Reference<text::XDocumentIndexesSupplier> xIndexSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexes(xIndexSupplier->getDocumentIndexes( ), uno::UNO_QUERY);
+ uno::Reference<text::XDocumentIndex> xTOCIndex(xIndexes->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xTextRange(xTOCIndex->getAnchor(), uno::UNO_QUERY);
+ uno::Reference<text::XText> xText(xTextRange->getText( ), uno::UNO_QUERY);
+ uno::Reference<text::XTextCursor> xTextCursor(xText->createTextCursor( ), uno::UNO_QUERY);
+ xTextCursor->gotoRange(xTextRange->getStart(),false);
+ xTextCursor->gotoRange(xTextRange->getEnd(),true);
+ OUString aTocString(xTextCursor->getString());
+ aTocString = aTocString.copy(256);
+ CPPUNIT_ASSERT(aTocString.startsWithIgnoreAsciiCase( "Heading 15.1:\t15" ) );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo73389,"fdo73389.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ // This was 9340, i.e. the width of the inner table was too large.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2842), getProperty<sal_Int32>(xTables->getByIndex(0), "Width"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testDMLGroupshapeSdt, "dml-groupshape-sdt.docx")
+{
+ uno::Reference<drawing::XShapes> xGroupShape(getShape(1), uno::UNO_QUERY);
+ // The text in the groupshape was missing due to the w:sdt and w:sdtContent wrapper around it.
+ CPPUNIT_ASSERT_EQUAL(OUString("sdt and sdtContent inside groupshape"), uno::Reference<text::XTextRange>(xGroupShape->getByIndex(1), uno::UNO_QUERY)->getString());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testDmlCharheightDefault, "dml-charheight-default.docx")
+{
+ uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xShape(xGroup->getByIndex(0), uno::UNO_QUERY);
+ // This was 16: the first run of the second para incorrectly inherited the char height of the first para.
+ CPPUNIT_ASSERT_EQUAL(11.f, getProperty<float>(getRun(getParagraphOfText(2, xShape->getText()), 1), "CharHeight"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testDMLGroupShapeCapitalization, "dml-groupshape-capitalization.docx")
+{
+ // Capitalization inside a group shape was not imported
+ uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
+ uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xGroup->getByIndex(1), uno::UNO_QUERY)->getText();
+ // 2nd line is written with uppercase letters
+ CPPUNIT_ASSERT_EQUAL(style::CaseMap::UPPERCASE, getProperty<sal_Int16>(getRun(getParagraphOfText(2, xText), 1), "CharCaseMap"));
+ // 3rd line has no capitalization
+ CPPUNIT_ASSERT_EQUAL(style::CaseMap::NONE, getProperty<sal_Int16>(getRun(getParagraphOfText(3, xText), 1), "CharCaseMap"));
+ // 4th line has written with small capitals
+ CPPUNIT_ASSERT_EQUAL(style::CaseMap::SMALLCAPS, getProperty<sal_Int16>(getRun(getParagraphOfText(4, xText), 1), "CharCaseMap"));
+ // 5th line has no capitalization
+ CPPUNIT_ASSERT_EQUAL(style::CaseMap::NONE, getProperty<sal_Int16>(getRun(getParagraphOfText(5, xText), 1), "CharCaseMap"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testPictureWithSchemeColor, "picture-with-schemecolor.docx")
+{
+ // At the start of the document, a picture which has a color specified with a color scheme, lost
+ // it's color during import.
+ uno::Reference<beans::XPropertySet> xImage(getShape(1), uno::UNO_QUERY);
+ uno::Reference<graphic::XGraphic> xGraphic = getProperty<uno::Reference<graphic::XGraphic> >(xImage, "Graphic");
+ Graphic aVclGraphic(xGraphic);
+ Bitmap aBitmap(aVclGraphic.GetBitmap());
+ BitmapReadAccess* pAccess = aBitmap.AcquireReadAccess();
+ CPPUNIT_ASSERT(pAccess);
+ CPPUNIT_ASSERT_EQUAL(341L, pAccess->Width());
+ CPPUNIT_ASSERT_EQUAL(181L, pAccess->Height());
+ Color aColor(pAccess->GetPixel(30, 120));
+ CPPUNIT_ASSERT_EQUAL(aColor.GetColor(), RGB_COLORDATA( 0xb1, 0xc8, 0xdd ));
+ aColor = pAccess->GetPixel(130, 260);
+ CPPUNIT_ASSERT_EQUAL(aColor.GetColor(), RGB_COLORDATA( 0xb1, 0xc8, 0xdd ));
+ Bitmap::ReleaseAccess(pAccess);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo69656, "Table_cell_auto_width_fdo69656.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(8154), getProperty<sal_Int32>(xTables->getByIndex(0), "Width"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFloatingTablesAnchor, "floating-tables-anchor.docx")
+{
+ // Problem was one of the two text frames was anchored to the other text frame
+ // Both frames should be anchored to the paragraph with the text "Anchor point"
+ uno::Reference<text::XTextContent> xTextContent(getShape(1), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xRange(xTextContent->getAnchor(), uno::UNO_QUERY);
+ uno::Reference<text::XText> xText(xRange->getText(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Anchor point"), xText->getString());
+
+ xTextContent.set(getShape(2), uno::UNO_QUERY);
+ xRange.set(xTextContent->getAnchor(), uno::UNO_QUERY);
+ xText.set(xRange->getText(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Anchor point"), xText->getString());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testAnnotationFormatting, "annotation-formatting.docx")
+{
+ uno::Reference<beans::XPropertySet> xTextField = getProperty< uno::Reference<beans::XPropertySet> >(getRun(getParagraph(2), 2), "TextField");
+ uno::Reference<text::XText> xText = getProperty< uno::Reference<text::XText> >(xTextField, "TextRange");
+ // Make sure we test the right annotation.
+ uno::Reference<text::XTextRange> xParagraph = getParagraphOfText(1, xText, "days");
+ // Formatting was lost: the second text portion was NONE, not SINGLE.
+ CPPUNIT_ASSERT_EQUAL(awt::FontUnderline::SINGLE, getProperty<sal_Int16>(getRun(xParagraph, 1), "CharUnderline"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testDMLGroupShapeRunFonts, "dml-groupshape-runfonts.docx")
+{
+ // Fonts defined by w:rFonts was not imported and so the font specified by a:fontRef was used.
+ uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
+ uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xGroup->getByIndex(1), uno::UNO_QUERY)->getText();
+ uno::Reference<text::XTextRange> xRun = getRun(getParagraphOfText(1, xText),1);
+ CPPUNIT_ASSERT_EQUAL(OUString("Arial"), getProperty<OUString>(xRun, "CharFontName"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Arial Unicode MS"), getProperty<OUString>(xRun, "CharFontNameComplex"));
+ CPPUNIT_ASSERT_EQUAL(OUString("MS Mincho"), getProperty<OUString>(xRun, "CharFontNameAsian"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testStrict, "strict.docx")
+{
+ uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
+ // This was only 127, pt suffix was ignored, so this got parsed as twips instead of points.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(72 * 20)), getProperty<sal_Int32>(xPageStyle, "BottomMargin"));
+ // This was only 1397, same issue
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(792 * 20)), getProperty<sal_Int32>(xPageStyle, "Height"));
+ // Text was missing, due to not handling the strict namespaces.
+ getParagraph(1, "Hello world!");
+
+ // Header in the document caused a crash on import.
+ uno::Reference<text::XText> xHeaderText(xPageStyle->getPropertyValue("HeaderText"), uno::UNO_QUERY);
+ getParagraphOfText(1, xHeaderText, "This is a header.");
+
+ // Picture was missing.
+ uno::Reference<lang::XServiceInfo> xServiceInfo(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.text.TextGraphicObject"));
+
+ // SmartArt was missing.
+ xServiceInfo.set(getShape(2), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.drawing.GroupShape"));
+
+ // Chart was missing.
+ xServiceInfo.set(getShape(3), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.text.TextEmbeddedObject"));
+
+ // Math was missing.
+ xServiceInfo.set(getShape(4), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.text.TextEmbeddedObject"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testSmartartStrict, "strict-smartart.docx")
+{
+ uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
+ // This was 0, SmartArt was visually missing.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(6), xGroup->getCount()); // 3 ellipses + 3 arrows
+}
+
+DECLARE_OOXMLEXPORT_TEST(testLibreOfficeHang, "frame-wrap-auto.docx")
+{
+ // fdo#72775
+ // This was text::WrapTextMode_NONE.
+ CPPUNIT_ASSERT_EQUAL(text::WrapTextMode_DYNAMIC, getProperty<text::WrapTextMode>(getShape(1), "Surround"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testI124106, "i124106.docx")
+{
+ // This was 2.
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testLargeTwips, "large-twips.docx" )
+{
+ // cp#1000043: MSO seems to ignore large twips values, we didn't, which resulted in different
+ // layout of broken documents (text not visible in this specific document).
+ OUString width = parseDump( "/root/page/body/tab/row[1]/cell[1]/txt/infos/bounds", "width" );
+ CPPUNIT_ASSERT( width.toInt32() > 0 );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testNegativeCellMarginTwips, "negative-cell-margin-twips.docx" )
+{
+ // Slightly related to cp#1000043, the twips value was negative, which wrapped around somewhere,
+ // while MSO seems to ignore that as well.
+ OUString width = parseDump( "/root/page/body/tab/row[1]/cell[1]/txt/infos/bounds", "width" );
+ CPPUNIT_ASSERT( width.toInt32() > 0 );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo38414, "fdo38414.docx" )
+{
+ // The cells in the last (4th) column were merged properly and so the result didn't have the same height.
+ // (Since w:gridBefore is worked around by faking another cell in the row, so column count is thus 5
+ // instead of 4, therefore compare height of cells 4 and 5 rather than 3 and 4.)
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<table::XTableColumns> xTableColumns(xTextTable->getColumns(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL( sal_Int32( 5 ), xTableColumns->getCount());
+ OUString height3 = parseDump("/root/page/body/tab/row[1]/cell[4]/infos/bounds", "height" );
+ OUString height4 = parseDump("/root/page/body/tab/row[1]/cell[5]/infos/bounds", "height" );
+ CPPUNIT_ASSERT_EQUAL( height3, height4 );
+}
+
+DECLARE_OOXMLEXPORT_TEST(test_extra_image, "test_extra_image.docx" )
+{
+ // fdo#74652 Check there is no shape added to the doc during import
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xDraws->getCount());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo74401, "fdo74401.docx")
+{
+ uno::Reference<drawing::XShapes> xGroupShape(getShape(1), uno::UNO_QUERY);
+ uno::Reference<drawing::XShapeDescriptor> xShape(xGroupShape->getByIndex(1), uno::UNO_QUERY);
+ // The triangle (second child) was a TextShape before, so it was shown as a rectangle.
+ CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.CustomShape"), xShape->getShapeType());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testGridBefore, "gridbefore.docx")
+{
+ // w:gridBefore is faked by inserting two cells without border (because Writer can't do non-rectangular tables).
+ // So check the first cell in the first row is in fact 3rd and that it's more to the right than the second
+ // cell on the second row.
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<table::XTableColumns> xTableColumns(xTextTable->getColumns(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL( sal_Int32( 3 ), xTableColumns->getCount());
+ OUString textA3 = parseDump("/root/page/body/tab/row[1]/cell[3]/txt/text()" );
+ OUString leftA3 = parseDump("/root/page/body/tab/row[1]/cell[3]/infos/bounds", "left" );
+ OUString leftB2 = parseDump("/root/page/body/tab/row[2]/cell[2]/infos/bounds", "left" );
+ CPPUNIT_ASSERT_EQUAL( OUString( "A3" ), textA3 );
+ CPPUNIT_ASSERT( leftA3.toInt32() > leftB2.toInt32());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testMsoBrightnessContrast, "msobrightnesscontrast.docx")
+{
+ uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<drawing::XShape> image(getShape(1), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> imageProperties(image, uno::UNO_QUERY);
+ uno::Reference<graphic::XGraphic> graphic;
+ imageProperties->getPropertyValue( "Graphic" ) >>= graphic;
+ uno::Reference<awt::XBitmap> bitmap(graphic, uno::UNO_QUERY);
+ Graphic aVclGraphic(graphic);
+ Bitmap aBitmap(aVclGraphic.GetBitmap());
+ BitmapReadAccess* pAccess = aBitmap.AcquireReadAccess();
+ CPPUNIT_ASSERT(pAccess);
+ CPPUNIT_ASSERT_EQUAL(58L, pAccess->Width());
+ CPPUNIT_ASSERT_EQUAL(320L, pAccess->Height());
+ Color aColor(pAccess->GetPixel(30, 20));
+ CPPUNIT_ASSERT_EQUAL(aColor.GetColor(), RGB_COLORDATA( 0xce, 0xce, 0xce ));
+ Bitmap::ReleaseAccess(pAccess);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testChartSize, "chart-size.docx")
+{
+ // When chart was in a TextFrame, its size was too large.
+ uno::Reference<text::XTextEmbeddedObjectsSupplier> xTextEmbeddedObjectsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xEmbeddedObjects(xTextEmbeddedObjectsSupplier->getEmbeddedObjects(), uno::UNO_QUERY);
+ // This was 10954.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(6008), getProperty<sal_Int32>(xEmbeddedObjects->getByIndex(0), "Width"));
+
+ // Layout modified the document when it had this chart.
+ uno::Reference<util::XModifiable> xModifiable(mxComponent, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(false, bool(xModifiable->isModified()));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testInlineGroupshape, "inline-groupshape.docx")
+{
+ // Inline groupshape was in the background, so it was hidden sometimes by other shapes.
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(getShape(1), "Opaque"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo78883, "fdo78883.docx")
+{
+ // fdo#78883 : LO was getting hang while opening document
+ // Checking there is a single page after loading a doc in LO.
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+ xCursor->jumpToLastPage();
+
+ // Check to make sure the document loaded. Note that the page number may
+ // be 1 or 2 depending on the environment.
+ CPPUNIT_ASSERT(xCursor->getPage() > sal_Int16(0));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo79535, "fdo79535.docx")
+{
+ // fdo#79535 : LO was crashing while opening document
+ // Checking there is a single page after loading a doc successfully in LO.
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+ xCursor->jumpToLastPage();
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testBnc875718, "bnc875718.docx")
+{
+ // The frame in the footer must not accidentally end up in the document body.
+ // The easiest way for this to test I've found is checking that
+ // xray ThisComponent.TextFrames.GetByIndex( index ).Anchor.Text.ImplementationName
+ // is not SwXBodyText but rather SwXHeadFootText
+ uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
+ for( int i = 0;
+ i < xIndexAccess->getCount();
+ ++i )
+ {
+ uno::Reference<text::XTextFrame> frame(xIndexAccess->getByIndex( i ), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> range(frame->getAnchor(), uno::UNO_QUERY);
+ uno::Reference<lang::XServiceInfo> text(range->getText(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL( OUString( "SwXHeadFootText" ), text->getImplementationName());
+ }
+ // Also check that the footer contents are not in the body text.
+ uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XText> text(textDocument->getText(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL( OUString( "Text" ), text->getString());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testCaption, "caption.docx")
+{
+ uno::Reference<beans::XPropertySet> xStyle(getStyles("ParagraphStyles")->getByName("Caption"), uno::UNO_QUERY);
+ // This was awt::FontSlant_ITALIC: Writer default was used instead of what is in the document.
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, getProperty<awt::FontSlant>(xStyle, "CharPosture"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testGroupshapeTrackedchanges, "groupshape-trackedchanges.docx")
+{
+ uno::Reference<drawing::XShapes> xGroup(getShape(1), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xShape(xGroup->getByIndex(0), uno::UNO_QUERY);
+ // Shape text was completely missing, ensure inserted text is available.
+ CPPUNIT_ASSERT_EQUAL(OUString(" Inserted"), xShape->getString());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo78939, "fdo78939.docx")
+{
+ // fdo#78939 : LO hanged while opening issue document
+
+ // Whenever a para-style was applied to a Numbering format level,
+ // LO incorrectly also changed the para-style..
+
+ // check that file opens and does not hang while opening and also
+ // check that an incorrect numbering style is not applied ...
+ CPPUNIT_ASSERT_EQUAL(OUString(), getProperty<OUString>(getParagraph(1), "NumberingStyleName"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFootnote, "footnote.docx")
+{
+ uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xFootnote(xFootnotes->getByIndex(0), uno::UNO_QUERY);
+ OUString aFootnote = xFootnote->getString();
+ // Ensure there are no additional newlines after "bar".
+ CPPUNIT_ASSERT(aFootnote.endsWith("bar"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTableBtlrCenter, "table-btlr-center.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ // Cell vertical alignment was NONE, should be CENTER.
+ CPPUNIT_ASSERT_EQUAL(text::VertOrientation::CENTER, getProperty<sal_Int16>(xTable->getCellByName("A2"), "VertOrient"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo80555, "fdo80555.docx")
+{
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ // Shape was wrongly placed at X=0, Y=0
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3318), xShape->getPosition().X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(247), xShape->getPosition().Y);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testHidemark, "hidemark.docx")
+{
+ // Problem was that <w:hideMark> cell property was ignored.
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
+ // Height should be minimal
+ CPPUNIT_ASSERT_EQUAL(convertTwipToMm100(MINLAY), getProperty<sal_Int64>(xTableRows->getByIndex(1), "Height"));
+ // Size type was MIN, should be FIX to avoid considering the end of paragraph marker.
+ CPPUNIT_ASSERT_EQUAL(text::SizeType::FIX, getProperty<sal_Int16>(xTableRows->getByIndex(1), "SizeType"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testBnc891663, "bnc891663.docx")
+{
+ // The image should be inside a cell, so the text in the following cell should be below it.
+ int imageTop = parseDump("/root/page/body/tab/row[1]/cell[2]/txt[1]/anchored/fly/infos/bounds", "top").toInt32();
+ int imageHeight = parseDump("/root/page/body/tab/row[1]/cell[2]/txt[1]/anchored/fly/infos/bounds", "height").toInt32();
+ int textNextRowTop = parseDump("/root/page/body/tab/row[2]/cell[1]/txt[1]/infos/bounds", "top").toInt32();
+ CPPUNIT_ASSERT( textNextRowTop >= imageTop + imageHeight );
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTcwRounding, "tcw-rounding.docx")
+{
+ // Width of the A1 cell in twips was 3200, due to a rounding error.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3201), parseDump("/root/page/body/tab/row/cell[1]/infos/bounds", "width").toInt32());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testFdo85542, "fdo85542.docx")
+{
+ uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xBookmarksByIdx(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(xBookmarksByIdx->getCount(), static_cast<sal_Int32>(3));
+ uno::Reference<container::XNameAccess> xBookmarksByName(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xBookmarksByName->hasByName("B1"));
+ CPPUNIT_ASSERT(xBookmarksByName->hasByName("B2"));
+ CPPUNIT_ASSERT(xBookmarksByName->hasByName("B3"));
+ // B1
+ uno::Reference<text::XTextContent> xContent1(xBookmarksByName->getByName("B1"), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xRange1(xContent1->getAnchor(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(xRange1->getString(), OUString("ABB"));
+ // B2
+ uno::Reference<text::XTextContent> xContent2(xBookmarksByName->getByName("B2"), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xRange2(xContent2->getAnchor(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(xRange2->getString(), OUString("BBC"));
+ // B3 -- testing a collapsed bookmark
+ uno::Reference<text::XTextContent> xContent3(xBookmarksByName->getByName("B3"), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xRange3(xContent3->getAnchor(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(xRange3->getString(), OUString(""));
+ uno::Reference<text::XText> xText(xRange3->getText( ), uno::UNO_QUERY);
+ uno::Reference<text::XTextCursor> xNeighborhoodCursor(xText->createTextCursor( ), uno::UNO_QUERY);
+ xNeighborhoodCursor->gotoRange(xRange3, false);
+ xNeighborhoodCursor->goLeft(1, false);
+ xNeighborhoodCursor->goRight(2, true);
+ uno::Reference<text::XTextRange> xTextNeighborhood(xNeighborhoodCursor, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(xTextNeighborhood->getString(), OUString("AB"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testChtOutlineNumberingOoxml, "chtoutline.docx")
+{
+ const sal_Unicode aExpectedPrefix[2] = { 0x7b2c, 0x0020 };
+ const sal_Unicode aExpectedSuffix[2] = { 0x0020, 0x7ae0 };
+ uno::Reference< text::XChapterNumberingSupplier > xChapterNumberingSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference< container::XIndexAccess> xLevels(xChapterNumberingSupplier->getChapterNumberingRules());
+ uno::Sequence<beans::PropertyValue> aProps;
+ xLevels->getByIndex(0) >>= aProps; // 1st level
+
+ OUString aSuffix,aPrefix;
+ for (int i = 0; i < aProps.getLength(); ++i)
+ {
+ const beans::PropertyValue& rProp = aProps[i];
+
+ if (rProp.Name == "Suffix")
+ aSuffix = rProp.Value.get<OUString>();
+ if (rProp.Name == "Prefix")
+ aPrefix = rProp.Value.get<OUString>();
+ }
+ CPPUNIT_ASSERT_EQUAL(OUString(aExpectedPrefix,SAL_N_ELEMENTS(aExpectedPrefix)), aPrefix);
+ CPPUNIT_ASSERT_EQUAL(OUString(aExpectedSuffix,SAL_N_ELEMENTS(aExpectedSuffix)), aSuffix);
+}
+
+DECLARE_OOXMLEXPORT_TEST(mathtype, "mathtype.docx")
+{
+ uno::Reference<text::XTextEmbeddedObjectsSupplier> xTextEmbeddedObjectsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xEmbeddedObjects(xTextEmbeddedObjectsSupplier->getEmbeddedObjects(), uno::UNO_QUERY);
+ // This failed as the Model property was empty.
+ auto xModel = getProperty< uno::Reference<lang::XServiceInfo> >(xEmbeddedObjects->getByIndex(0), "Model");
+ CPPUNIT_ASSERT(xModel->supportsService("com.sun.star.formula.FormulaProperties"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf8255, "tdf8255.docx")
+{
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xTextDocument, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ // This was 1: a full-page-wide multi-page floating table was imported as a TextFrame.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), xDrawPage->getCount());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf87460, "tdf87460.docx")
+{
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XEndnotesSupplier> xEndnotesSupplier(xTextDocument, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xEndnotes = xEndnotesSupplier->getEndnotes();
+ // This was 0: endnote was lost on import.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), xEndnotes->getCount());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf90611, "tdf90611.docx")
+{
+ uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
+ uno::Reference<text::XText> xFootnoteText;
+ xFootnotes->getByIndex(0) >>= xFootnoteText;
+ // This was 11.
+ CPPUNIT_ASSERT_EQUAL(10.f, getProperty<float>(getParagraphOfText(1, xFootnoteText), "CharHeight"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf89702, "tdf89702.docx")
+{
+ // Get the first paragraph's numbering style's 2nd level's character style name.
+ uno::Reference<text::XTextRange> xParagraph = getParagraph(1);
+ auto xLevels = getProperty< uno::Reference<container::XIndexAccess> >(xParagraph, "NumberingRules");
+ uno::Sequence<beans::PropertyValue> aLevel;
+ xLevels->getByIndex(1) >>= aLevel; // 2nd level
+ OUString aCharStyleName = std::find_if(aLevel.begin(), aLevel.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "CharStyleName"; })->Value.get<OUString>();
+
+ // Make sure that the font name is Arial, this was Verdana.
+ uno::Reference<beans::XPropertySet> xStyle(getStyles("CharacterStyles")->getByName(aCharStyleName), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Arial"), getProperty<OUString>(xStyle, "CharFontName"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf86374, "tdf86374.docx")
+{
+ uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), uno::UNO_QUERY);
+ // btLr text direction was imported as FIX, it should be MIN to have enough space for the additionally entered paragraphs.
+ CPPUNIT_ASSERT_EQUAL(text::SizeType::MIN, getProperty<sal_Int16>(xTableRows->getByIndex(0), "SizeType"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf87924, "tdf87924.docx")
+{
+ uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
+ comphelper::SequenceAsHashMap aGeometry(xPropertySet->getPropertyValue("CustomShapeGeometry"));
+ // This was -270, the text rotation angle was set when it should not be rotated.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), aGeometry["TextPreRotateAngle"].get<sal_Int32>());
+}
+
+#endif
+
+DECLARE_OOXMLEXPORT_TEST(testIndents, "indents.docx")
+{
+ //expected left margin and first line indent values
+ static const sal_Int32 indents[] =
+ {
+ 0, 0,
+ -2000, 0,
+ -2000, 1000,
+ -1000, -1000,
+ 2000, -1000
+ };
+ uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xParaEnumAccess(textDocument->getText(), uno::UNO_QUERY);
+ // list of paragraphs
+ uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
+ size_t paraIndex = 0;
+ do
+ {
+ uno::Reference<lang::XServiceInfo> xServiceInfo;
+ if (xParaEnum->nextElement() >>= xServiceInfo)
+ {
+ uno::Reference<beans::XPropertySet> const xPropertySet(xServiceInfo, uno::UNO_QUERY_THROW);
+ sal_Int32 nIndent = 0;
+ sal_Int32 nFirstLine = 0;
+ xPropertySet->getPropertyValue("ParaLeftMargin") >>= nIndent;
+ xPropertySet->getPropertyValue("ParaFirstLineIndent") >>= nFirstLine;
+ CPPUNIT_ASSERT_EQUAL(indents[paraIndex * 2], nIndent);
+ CPPUNIT_ASSERT_EQUAL(indents[paraIndex * 2 + 1], nFirstLine);
+ ++paraIndex;
+ }
+ } while (xParaEnum->hasMoreElements());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf92454, "tdf92454.docx")
+{
+ // The first paragraph had a large indentation / left margin as inheritance
+ // in Word and Writer works differently, and no direct value was set to be
+ // explicit.
+ uno::Reference<beans::XPropertyState> xParagraph(getParagraph(1), uno::UNO_QUERY);
+ // This was beans::PropertyState_DEFAULT_VALUE.
+ CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DIRECT_VALUE, xParagraph->getPropertyState("ParaFirstLineIndent"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf95376, "tdf95376.docx")
+{
+ uno::Reference<beans::XPropertyState> xParagraph(getParagraph(2), uno::UNO_QUERY);
+ // This was beans::PropertyState_DIRECT_VALUE: indentation-from-numbering
+ // did not have priority over indentation-from-paragraph-style, due to a
+ // filter workaround that's not correct here.
+ CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DEFAULT_VALUE, xParagraph->getPropertyState("ParaFirstLineIndent"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf92124, "tdf92124.docx")
+{
+ // Get the second paragraph's numbering style's 1st level's suffix.
+ uno::Reference<text::XTextRange> xParagraph = getParagraph(2);
+ auto xLevels = getProperty< uno::Reference<container::XIndexAccess> >(xParagraph, "NumberingRules");
+ uno::Sequence<beans::PropertyValue> aLevel;
+ xLevels->getByIndex(0) >>= aLevel; // 1st level
+ OUString aSuffix = std::find_if(aLevel.begin(), aLevel.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "Suffix"; })->Value.get<OUString>();
+ // Make sure it's empty as the source document contains <w:suff w:val="nothing"/>.
+ CPPUNIT_ASSERT(aSuffix.isEmpty());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf90153, "tdf90153.docx")
+{
+ // This was at-para, so the line-level VertOrientRelation was lost, resulting in an incorrect vertical position.
+ CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER, getProperty<text::TextContentAnchorType>(getShape(1), "AnchorType"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf93919, "tdf93919.docx")
+{
+ // This was 0, left margin was not inherited from the list style.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1270), getProperty<sal_Int32>(getParagraph(1), "ParaLeftMargin"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf91417, "tdf91417.docx")
+{
+ // The first paragraph should contain a link to "http://www.google.com/"
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextCursor> xTextCursor(xTextDocument->getText()->createTextCursor( ), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xCursorProps(xTextCursor, uno::UNO_QUERY);
+ OUString aValue;
+ xCursorProps->getPropertyValue("HyperLinkURL") >>= aValue;
+ CPPUNIT_ASSERT_EQUAL(OUString("http://www.google.com/"), aValue);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf90810, "tdf90810short.docx")
+{
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XFootnotesSupplier> xFootnoteSupp(xTextDocument, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xFootnoteIdxAcc(xFootnoteSupp->getFootnotes(), uno::UNO_QUERY);
+ uno::Reference<text::XFootnote> xFootnote(xFootnoteIdxAcc->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<text::XText> xFootnoteText(xFootnote, uno::UNO_QUERY);
+ rtl::OUString sFootnoteText = xFootnoteText->getString();
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(90), static_cast<sal_Int32>(sFootnoteText.getLength()));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf89165, "tdf89165.docx")
+{
+ // This must not hang in layout
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf95777, "tdf95777.docx")
+{
+ // This must not fail on open
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf94374, "hello.docx")
+{
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xText(xTextDocument->getText(), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xEnd = xText->getEnd();
+ // This failed: it wasn't possible to insert a DOCX document into an existing Writer one.
+ CPPUNIT_ASSERT(paste("tdf94374.docx", xEnd));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf83300, "tdf83300.docx")
+{
+ // This was 'Contents Heading', which (in the original document) implied 'keep with next' on unexpected paragraphs.
+ CPPUNIT_ASSERT_EQUAL(OUString("TOC Heading"), getProperty<OUString>(getParagraph(1), "ParaStyleName"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf78902, "tdf78902.docx")
+{
+ // This hung in layout.
+ CPPUNIT_ASSERT_EQUAL(2, getPages());
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf95775, "tdf95775.docx")
+{
+ // This must not fail in layout
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf92157, "tdf92157.docx")
+{
+ // A graphic with dimensions 0,0 should not fail on load
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf97417, "section_break_numbering.docx")
+{
+ // paragraph with numbering and section break was removed by writerfilter
+ // but its numbering was copied to all following paragraphs
+ CPPUNIT_ASSERT_MESSAGE("first paragraph missing numbering",
+ getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), "NumberingRules").is());
+ uno::Reference<beans::XPropertySet> const xProps(getParagraph(2), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_MESSAGE("second paragraph erroneous numbering",
+ !xProps->getPropertyValue("NumberingRules").hasValue());
+
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf94043, "tdf94043.docx")
+{
+ auto xTextSection = getProperty< uno::Reference<beans::XPropertySet> >(getParagraph(2), "TextSection");
+ auto xTextColumns = getProperty< uno::Reference<text::XTextColumns> >(xTextSection, "TextColumns");
+ // This was 0, the separator line was not visible due to 0 width.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), getProperty<sal_Int32>(xTextColumns, "SeparatorLineWidth"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf95213, "tdf95213.docx")
+{
+ // Get the second paragraph's numbering style's 2nd level's character style name.
+ uno::Reference<text::XTextRange> xParagraph = getParagraph(2);
+ auto xLevels = getProperty< uno::Reference<container::XIndexAccess> >(xParagraph, "NumberingRules");
+ uno::Sequence<beans::PropertyValue> aLevel;
+ xLevels->getByIndex(1) >>= aLevel; // 2nd level
+ OUString aName = std::find_if(aLevel.begin(), aLevel.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "CharStyleName"; })->Value.get<OUString>();
+
+ uno::Reference<beans::XPropertySet> xStyle(getStyles("CharacterStyles")->getByName(aName), uno::UNO_QUERY);
+ // This was awt::FontWeight::BOLD.
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::NORMAL, getProperty<float>(xStyle, "CharWeight"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf97371, "tdf97371.docx")
+{
+ SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument *>(mxComponent.get());
+ CPPUNIT_ASSERT(pTextDoc);
+ SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc();
+ SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0);
+ SdrObject* pShape = pPage->GetObj(0);
+ SdrObject* pTextBox = pPage->GetObj(1);
+ long nDiff = std::abs(pShape->GetSnapRect().Top() - pTextBox->GetSnapRect().Top());
+ // The top of the two shapes were 410 and 3951, now it should be 3950 and 3951.
+ CPPUNIT_ASSERT(nDiff < 10);
+}
+
+DECLARE_OOXMLEXPORT_TEST(testTdf99140, "tdf99140.docx")
+{
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xTextDocument, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ // This was 1: a multi-page floating table was imported as a TextFrame.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), xDrawPage->getCount());
+
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xTableProperties(xTables->getByIndex(1), uno::UNO_QUERY);
+ // This was text::HoriOrientation::NONE, the second table was too wide due to this.
+ CPPUNIT_ASSERT_EQUAL(text::HoriOrientation::LEFT_AND_WIDTH, getProperty<sal_Int16>(xTableProperties, "HoriOrient"));
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
new file mode 100644
index 000000000000..31c9b9f7c1ff
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
@@ -0,0 +1,45 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <swmodeltestbase.hxx>
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/XControlShape.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
+#include <com/sun/star/text/XPageCursor.hpp>
+#include <com/sun/star/text/XTextFrame.hpp>
+#include <com/sun/star/text/XTextFramesSupplier.hpp>
+#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
+#include <com/sun/star/text/XTextViewCursorSupplier.hpp>
+
+class Test : public SwModelTestBase
+{
+public:
+ Test() : SwModelTestBase("/sw/qa/extras/ooxmlexport/data/", "Office Open XML Text") {}
+
+protected:
+ /**
+ * Blacklist handling
+ */
+ bool mustTestImportOf(const char* filename) const override {
+ // If the testcase is stored in some other format, it's pointless to test.
+ return (OString(filename).endsWith(".docx"));
+ }
+};
+
+DECLARE_OOXMLEXPORT_TEST(testTdf92045, "tdf92045.docx")
+{
+ // This was true, <w:effect w:val="none"/> resulted in setting the blinking font effect.
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(getRun(getParagraph(1), 1), "CharFlash"));
+}
+
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/ooxmlimport/data/Table_cell_auto_width_fdo69656.docx b/sw/qa/extras/ooxmlimport/data/Table_cell_auto_width_fdo69656.docx
deleted file mode 100644
index 10b8f9de21d8..000000000000
--- a/sw/qa/extras/ooxmlimport/data/Table_cell_auto_width_fdo69656.docx
+++ /dev/null
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo69636.docx b/sw/qa/extras/ooxmlimport/data/fdo69636.docx
deleted file mode 100644
index b2f3069b5020..000000000000
--- a/sw/qa/extras/ooxmlimport/data/fdo69636.docx
+++ /dev/null
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/fdo69649.docx b/sw/qa/extras/ooxmlimport/data/fdo69649.docx
deleted file mode 100644
index cb0f78999880..000000000000
--- a/sw/qa/extras/ooxmlimport/data/fdo69649.docx
+++ /dev/null
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/data/smartart.docx b/sw/qa/extras/ooxmlimport/data/smartart.docx
deleted file mode 100644
index 7a553f425188..000000000000
--- a/sw/qa/extras/ooxmlimport/data/smartart.docx
+++ /dev/null
Binary files differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 912e01b55e70..7ec75f37dc81 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -20,14 +20,9 @@
#include <basegfx/polygon/b2dpolypolygontools.hxx>
#include <com/sun/star/awt/XBitmap.hpp>
-#include <com/sun/star/awt/FontUnderline.hpp>
-#include <com/sun/star/awt/FontWeight.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/document/XEmbeddedObjectSupplier2.hpp>
-#include <com/sun/star/drawing/XControlShape.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
#include <com/sun/star/drawing/PointSequenceSequence.hpp>
-#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
#include <com/sun/star/text/HoriOrientation.hpp>
@@ -37,53 +32,31 @@
#include <com/sun/star/text/TextContentAnchorType.hpp>
#include <com/sun/star/text/VertOrientation.hpp>
#include <com/sun/star/text/WrapTextMode.hpp>
-#include <com/sun/star/text/WritingMode2.hpp>
-#include <com/sun/star/text/XBookmarksSupplier.hpp>
#include <com/sun/star/text/XDependentTextField.hpp>
-#include <com/sun/star/text/XFootnote.hpp>
#include <com/sun/star/text/XFormField.hpp>
#include <com/sun/star/text/XPageCursor.hpp>
#include <com/sun/star/text/XTextColumns.hpp>
#include <com/sun/star/text/XTextFieldsSupplier.hpp>
#include <com/sun/star/text/XTextFrame.hpp>
#include <com/sun/star/text/XTextFramesSupplier.hpp>
-#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
#include <com/sun/star/text/XTextViewCursorSupplier.hpp>
-#include <com/sun/star/style/BreakType.hpp>
#include <com/sun/star/text/RubyAdjust.hpp>
#include <com/sun/star/style/ParagraphAdjust.hpp>
-#include <com/sun/star/style/LineSpacing.hpp>
-#include <com/sun/star/style/LineSpacingMode.hpp>
-#include <com/sun/star/table/ShadowFormat.hpp>
-#include <com/sun/star/view/XSelectionSupplier.hpp>
-#include <com/sun/star/view/XFormLayerAccess.hpp>
-#include <com/sun/star/table/BorderLine2.hpp>
-#include <com/sun/star/table/TableBorder2.hpp>
#include <com/sun/star/text/SizeType.hpp>
-#include <com/sun/star/xml/dom/XDocument.hpp>
-#include <com/sun/star/text/XDocumentIndex.hpp>
-#include <com/sun/star/style/CaseMap.hpp>
#include <com/sun/star/style/PageStyleLayout.hpp>
#include <com/sun/star/util/DateTime.hpp>
#include <com/sun/star/document/XFilter.hpp>
#include <com/sun/star/document/XImporter.hpp>
#include <vcl/bitmapaccess.hxx>
-#include <vcl/svapp.hxx>
-#include <unotest/assertion_traits.hxx>
#include <unotools/fltrcfg.hxx>
#include <comphelper/sequenceashashmap.hxx>
#include <com/sun/star/text/GraphicCrop.hpp>
-#include <swtypes.hxx>
-#include <drawdoc.hxx>
#include <tools/datetimeutils.hxx>
#include <oox/drawingml/drawingmltypes.hxx>
#include <unotools/streamwrap.hxx>
#include <comphelper/propertysequence.hxx>
-#include <svx/svdpage.hxx>
#include <com/sun/star/drawing/HomogenMatrix3.hpp>
-#include <bordertest.hxx>
-
class Test : public SwModelTestBase
{
public:
@@ -93,7 +66,7 @@ public:
virtual std::unique_ptr<Resetter> preTest(const char* filename) override
{
- if (OString(filename) == "smartart.docx" || OString(filename) == "strict-smartart.docx" || OString(filename) == "fdo87488.docx")
+ if (OString(filename) == "fdo87488.docx")
{
std::unique_ptr<Resetter> pResetter(new Resetter(
[] () {
@@ -104,24 +77,6 @@ public:
}
return nullptr;
}
-
-protected:
- /// Copy&paste helper.
- bool paste(const OUString& rFilename, const uno::Reference<text::XTextRange>& xTextRange)
- {
- uno::Reference<document::XFilter> xFilter(m_xSFactory->createInstance("com.sun.star.comp.Writer.WriterFilter"), uno::UNO_QUERY_THROW);
- uno::Reference<document::XImporter> xImporter(xFilter, uno::UNO_QUERY_THROW);
- xImporter->setTargetDocument(mxComponent);
- SvStream* pStream = utl::UcbStreamHelper::CreateStream(m_directories.getURLFromSrc("/sw/qa/extras/ooxmlimport/data/") + rFilename, StreamMode::READ);
- uno::Reference<io::XStream> xStream(new utl::OStreamWrapper(*pStream));
- uno::Sequence<beans::PropertyValue> aDescriptor(comphelper::InitPropertySequence(
- {
- {"InputStream", uno::makeAny(xStream)},
- {"InputMode", uno::makeAny(true)},
- {"TextInsertModeRange", uno::makeAny(xTextRange)},
- }));
- return xFilter->filter(aDescriptor);
- }
};
class FailTest : public Test
@@ -171,34 +126,6 @@ DECLARE_SW_IMPORT_TEST(testMathMalformedXml, "math-malformed_xml.docx", FailTest
CPPUNIT_ASSERT(!mxComponent.is());
}
-DECLARE_OOXMLIMPORT_TEST(testN751054, "n751054.docx")
-{
- text::TextContentAnchorType eValue = getProperty<text::TextContentAnchorType>(getShape(1), "AnchorType");
- CPPUNIT_ASSERT(eValue != text::TextContentAnchorType_AS_CHARACTER);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN751117, "n751117.docx")
-{
- // First shape: the end should be an arrow, should be rotated and should be flipped.
- uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
- OUString aValue;
- xPropertySet->getPropertyValue("LineEndName") >>= aValue;
- CPPUNIT_ASSERT(aValue.indexOf("Arrow") != -1);
-
- // Rotating & Flipping will cause the angle to change from 90 degrees to 270 degrees
- sal_Int32 nValue = 0;
- xPropertySet->getPropertyValue("RotateAngle") >>= nValue;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(270 * 100), nValue);
-
- uno::Reference<drawing::XShape> xShape(xPropertySet, uno::UNO_QUERY);
- awt::Size aActualSize(xShape->getSize());
- CPPUNIT_ASSERT(aActualSize.Width > 0);
-
- // The second shape should be a line
- uno::Reference<lang::XServiceInfo> xServiceInfo(getShape(2), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.drawing.LineShape"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testN751017, "n751017.docx")
{
uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
@@ -245,48 +172,6 @@ DECLARE_OOXMLIMPORT_TEST(testN751017, "n751017.docx")
CPPUNIT_ASSERT(bFoundGet);
}
-DECLARE_OOXMLIMPORT_TEST(testN750935, "n750935.docx")
-{
- uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
- uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
- xCursor->jumpToLastPage();
- // Some page break types were ignores, resulting in less pages.
- CPPUNIT_ASSERT_EQUAL(sal_Int16(5), xCursor->getPage());
-
- /*
- * The problem was that the header and footer was not shared.
- *
- * xray ThisComponent.StyleFamilies.PageStyles.Default.FooterIsShared
- */
- uno::Reference<beans::XPropertySet> xPropertySet(getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
- bool bValue = false;
- xPropertySet->getPropertyValue("HeaderIsShared") >>= bValue;
- CPPUNIT_ASSERT_EQUAL(true, bValue);
- xPropertySet->getPropertyValue("FooterIsShared") >>= bValue;
- CPPUNIT_ASSERT_EQUAL(true, bValue);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN757890, "n757890.docx")
-{
- // The w:pStyle token affected the text outside the textbox.
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
- uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
- uno::Reference<beans::XPropertySet> xPara(xParaEnum->nextElement(), uno::UNO_QUERY);
- OUString aValue;
- xPara->getPropertyValue("ParaStyleName") >>= aValue;
- CPPUNIT_ASSERT_EQUAL(OUString("Heading 1"), aValue);
-
- // This wan't centered
- uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
- sal_Int16 nValue;
- xFrame->getPropertyValue("HoriOrient") >>= nValue;
- CPPUNIT_ASSERT_EQUAL(text::HoriOrientation::CENTER, nValue);
-}
-
DECLARE_OOXMLIMPORT_TEST(testRhbz988516, "rhbz988516.docx")
{
// The problem was that the list properties of the footer leaked into body
@@ -299,43 +184,6 @@ DECLARE_OOXMLIMPORT_TEST(testRhbz988516, "rhbz988516.docx")
getProperty<OUString>(getParagraph(3), "NumberingStyleName"));
}
-DECLARE_OOXMLIMPORT_TEST(testFdo49940, "fdo49940.docx")
-{
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
- uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
- uno::Reference<beans::XPropertySet> xPara(xParaEnum->nextElement(), uno::UNO_QUERY);
- OUString aValue;
- xPara->getPropertyValue("PageStyleName") >>= aValue;
- CPPUNIT_ASSERT_EQUAL(OUString("First Page"), aValue);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo74745, "fdo74745.docx")
-{
- uno::Reference<text::XTextRange > paragraph = getParagraph(3);
- uno::Reference<text::XTextRange> text(paragraph, uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(text->getString(),OUString("09/02/14"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo81486, "fdo81486.docx")
-{
- uno::Reference<text::XTextRange > paragraph = getParagraph(1);
- uno::Reference<text::XTextRange> text(paragraph, uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(text->getString(),OUString("CustomTitle"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo79738, "fdo79738.docx")
-{
- uno::Reference< style::XStyleFamiliesSupplier > xStylesSupplier( mxComponent, uno::UNO_QUERY_THROW );
- uno::Reference< container::XNameAccess > xStyleFamilies = xStylesSupplier->getStyleFamilies();
- uno::Reference<container::XNameContainer> xStyles;
- xStyleFamilies->getByName("ParagraphStyles") >>= xStyles;
- uno::Reference<beans::XPropertySet> xPropertySetHeader( xStyles->getByName("Header"), uno::UNO_QUERY );
- CPPUNIT_ASSERT_EQUAL(false, xPropertySetHeader->getPropertyValue("ParaLineNumberCount").get<bool>());
- uno::Reference<beans::XPropertySet> xPropertySetFooter( xStyles->getByName("Footer"), uno::UNO_QUERY );
- CPPUNIT_ASSERT_EQUAL(false, xPropertySetFooter->getPropertyValue("ParaLineNumberCount").get<bool>());
-}
-
DECLARE_OOXMLIMPORT_TEST(testN751077, "n751077.docx")
{
/*
@@ -351,48 +199,6 @@ xray ThisComponent.DrawPage(1).getByIndex(0).Anchor.PageStyleName
CPPUNIT_ASSERT_EQUAL(OUString("First Page"), getProperty<OUString>(xTextContent->getAnchor(), "PageStyleName"));
}
-DECLARE_OOXMLIMPORT_TEST(testN705956_1, "n705956-1.docx")
-{
-/*
-Get the first image in the document and check it's the one image in the document.
-It should be also anchored inline (as character) and be inside a groupshape.
-image = ThisComponent.DrawPage.getByIndex(0)
-graphic = image(0).Graphic
-xray graphic.Size
-xray image.AnchorType
-*/
- uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<drawing::XDrawPageSupplier> drawPageSupplier(textDocument, uno::UNO_QUERY);
- uno::Reference<drawing::XDrawPage> drawPage = drawPageSupplier->getDrawPage();
- CPPUNIT_ASSERT_EQUAL( sal_Int32( 1 ), drawPage->getCount());
- uno::Reference<drawing::XShapes> shapes(getShape(1), uno::UNO_QUERY);
- uno::Reference<drawing::XShape> image;
- shapes->getByIndex(0) >>= image;
- uno::Reference<beans::XPropertySet> imageProperties(image, uno::UNO_QUERY);
- uno::Reference<graphic::XGraphic> graphic;
- imageProperties->getPropertyValue( "Graphic" ) >>= graphic;
- uno::Reference<awt::XBitmap> bitmap(graphic, uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL( static_cast<sal_Int32>(120), bitmap->getSize().Width );
- CPPUNIT_ASSERT_EQUAL( static_cast<sal_Int32>(106), bitmap->getSize().Height );
- text::TextContentAnchorType anchorType;
- imageProperties->getPropertyValue( "AnchorType" ) >>= anchorType;
- CPPUNIT_ASSERT_EQUAL( text::TextContentAnchorType_AS_CHARACTER, anchorType );
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN705956_2, "n705956-2.docx")
-{
-/*
-<v:shapetype> must be global, reachable even from <v:shape> inside another <w:pict>
-image = ThisComponent.DrawPage.getByIndex(0)
-xray image.FillColor
-*/
- uno::Reference<drawing::XShape> image = getShape(1);
- uno::Reference<beans::XPropertySet> imageProperties(image, uno::UNO_QUERY);
- sal_Int32 fillColor;
- imageProperties->getPropertyValue( "FillColor" ) >>= fillColor;
- CPPUNIT_ASSERT_EQUAL( sal_Int32( 0xc0504d ), fillColor );
-}
-
DECLARE_OOXMLIMPORT_TEST(testfdo90720, "testfdo90720.docx")
{
uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
@@ -405,68 +211,6 @@ DECLARE_OOXMLIMPORT_TEST(testfdo90720, "testfdo90720.docx")
CPPUNIT_ASSERT_EQUAL( sal_Int32(100), fill_transperence );
}
-DECLARE_OOXMLIMPORT_TEST(testN747461, "n747461.docx")
-{
-/*
-The document contains 3 images (Red, Black, Green, in this order), with explicit
-w:relativeHeight (300, 0, 225763766). Check that they are in the right ZOrder
-after they are loaded.
-*/
- uno::Reference<drawing::XShape> image1 = getShape(1), image2 = getShape(2), image3 = getShape(3);
- sal_Int32 zOrder1, zOrder2, zOrder3;
- OUString descr1, descr2, descr3;
- uno::Reference<beans::XPropertySet> imageProperties1(image1, uno::UNO_QUERY);
- imageProperties1->getPropertyValue( "ZOrder" ) >>= zOrder1;
- imageProperties1->getPropertyValue( "Description" ) >>= descr1;
- uno::Reference<beans::XPropertySet> imageProperties2(image2, uno::UNO_QUERY);
- imageProperties2->getPropertyValue( "ZOrder" ) >>= zOrder2;
- imageProperties2->getPropertyValue( "Description" ) >>= descr2;
- uno::Reference<beans::XPropertySet> imageProperties3(image3, uno::UNO_QUERY);
- imageProperties3->getPropertyValue( "ZOrder" ) >>= zOrder3;
- imageProperties3->getPropertyValue( "Description" ) >>= descr3;
- CPPUNIT_ASSERT_EQUAL( sal_Int32( 0 ), zOrder1 );
- CPPUNIT_ASSERT_EQUAL( sal_Int32( 1 ), zOrder2 );
- CPPUNIT_ASSERT_EQUAL( sal_Int32( 2 ), zOrder3 );
- CPPUNIT_ASSERT_EQUAL( OUString( "Black" ), descr1 );
- CPPUNIT_ASSERT_EQUAL( OUString( "Red" ), descr2 );
- CPPUNIT_ASSERT_EQUAL( OUString( "Green" ), descr3 );
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN750255, "n750255.docx")
-{
-
-/*
-Column break without columns on the page is a page break, so check those paragraphs
-are on page 2 and page 3
-*/
- CPPUNIT_ASSERT_EQUAL( OUString("one"), parseDump("/root/page[2]/body/txt/text()") );
- CPPUNIT_ASSERT_EQUAL( OUString("two"), parseDump("/root/page[3]/body/txt/text()") );
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN652364, "n652364.docx")
-{
-/*
-Related to 750255 above, column break with columns on the page however should be a column break.
-enum = ThisComponent.Text.createEnumeration
-enum.nextElement
-para1 = enum.nextElement
-xray para1.String
-xray para1.PageStyleName
-enum.nextElement
-para2 = enum.nextElement
-xray para2.String
-xray para2.PageStyleName
-*/
- // get the 2nd and 4th paragraph
- uno::Reference<uno::XInterface> paragraph1(getParagraph( 2, "text1" ));
- uno::Reference<uno::XInterface> paragraph2(getParagraph( 4, "text2" ));
- OUString pageStyle1 = getProperty< OUString >( paragraph1, "PageStyleName" );
- OUString pageStyle2 = getProperty< OUString >( paragraph2, "PageStyleName" );
- // "Standard" is the style for the first page (2nd is "Converted1").
- CPPUNIT_ASSERT_EQUAL( OUString( "Standard" ), pageStyle1 );
- CPPUNIT_ASSERT_EQUAL( OUString( "Standard" ), pageStyle2 );
-}
-
DECLARE_OOXMLIMPORT_TEST(testN760764, "n760764.docx")
{
uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
@@ -484,19 +228,6 @@ DECLARE_OOXMLIMPORT_TEST(testN760764, "n760764.docx")
CPPUNIT_ASSERT_EQUAL(8.f, fValue);
}
-DECLARE_OOXMLIMPORT_TEST(testN764005, "n764005.docx")
-{
- uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
-
- // The picture in the header wasn't absolutely positioned and wasn't in the background.
- text::TextContentAnchorType eValue;
- xPropertySet->getPropertyValue("AnchorType") >>= eValue;
- CPPUNIT_ASSERT(eValue != text::TextContentAnchorType_AS_CHARACTER);
- bool bValue = true;
- xPropertySet->getPropertyValue("Opaque") >>= bValue;
- CPPUNIT_ASSERT_EQUAL(false, bool(bValue));
-}
-
DECLARE_OOXMLIMPORT_TEST(testN764745, "n764745-alignment.docx")
{
/*
@@ -595,113 +326,6 @@ DECLARE_OOXMLIMPORT_TEST(testN758883, "n758883.docx")
CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER, eAnchorType);
}
-DECLARE_OOXMLIMPORT_TEST(testN766481, "n766481.docx")
-{
- /*
- * The problem was that we had an additional paragraph before the pagebreak.
- *
- * oParas = ThisComponent.Text.createEnumeration
- * oPara = oParas.nextElement
- * oPara = oParas.nextElement
- * xray oParas.hasMoreElements ' should be false
- */
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
- uno::Reference<container::XEnumeration> xParaEnum(xParaEnumAccess->createEnumeration());
- for (int i = 0; i < 2; ++i)
- xParaEnum->nextElement();
- CPPUNIT_ASSERT_EQUAL(sal_False, xParaEnum->hasMoreElements());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN766487, "n766487.docx")
-{
- /*
- * The problem was that 1) the font size of the first para was too large 2) numbering had no first-line-indent.
- *
- * oParas = ThisComponent.Text.createEnumeration
- * oPara = oParas.nextElement
- * oRuns = oPara.createEnumeration
- * oRun = oRuns.nextElement
- * xray oRun.CharHeight ' 12, was larger
- * oPara = oParas.nextElement
- * xray oPara.ParaFirstLineIndent ' -635, was 0
- */
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
- uno::Reference<container::XEnumeration> xParaEnum(xParaEnumAccess->createEnumeration());
-
- uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParaEnum->nextElement(), uno::UNO_QUERY);
- uno::Reference<container::XEnumeration> xRunEnum(xRunEnumAccess->createEnumeration());
- uno::Reference<beans::XPropertySet> xPropertySet(xRunEnum->nextElement(), uno::UNO_QUERY);
- float fValue = 0;
- xPropertySet->getPropertyValue("CharHeight") >>= fValue;
- CPPUNIT_ASSERT_EQUAL(12.f, fValue);
-
- xPropertySet.set(xParaEnum->nextElement(), uno::UNO_QUERY);
- sal_Int32 nValue = 0;
- xPropertySet->getPropertyValue("ParaFirstLineIndent") >>= nValue;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(-360)), nValue);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN693238, "n693238.docx")
-{
- /*
- * The problem was that a continuous section break at the end of the doc caused the margins to be ignored.
- *
- * xray ThisComponent.StyleFamilies.PageStyles.Default.LeftMargin ' was 2000, should be 635
- */
- uno::Reference<beans::XPropertySet> xPropertySet(getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
- sal_Int32 nValue = 0;
- xPropertySet->getPropertyValue("LeftMargin") >>= nValue;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(635), nValue);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testNumbering1, "numbering1.docx")
-{
-/* <w:numPr> in the paragraph itself was overridden by <w:numpr> introduced by the paragraph's <w:pStyle>
-enum = ThisComponent.Text.createEnumeration
-para = enum.NextElement
-xray para.NumberingStyleName
-numberingstyle = ThisComponent.NumberingRules.getByIndex(6)
-xray numberingstyle.name - should match name above
-numbering = numberingstyle.getByIndex(0)
-xray numbering(11) - should be 4, arabic
-note that the indexes may get off as the implementation evolves, C++ code searches in loops
-*/
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference< text::XTextRange > paragraph(getParagraph( 1, "Text1." ));
- OUString numberingStyleName = getProperty< OUString >( paragraph, "NumberingStyleName" );
- uno::Reference<text::XNumberingRulesSupplier> xNumberingRulesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> numberingRules(xNumberingRulesSupplier->getNumberingRules(), uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> numberingRule;
- for( int i = 0;
- i < numberingRules->getCount();
- ++i )
- {
- OUString name = getProperty< OUString >( numberingRules->getByIndex( i ), "Name" );
- if( name == numberingStyleName )
- {
- numberingRule.set( numberingRules->getByIndex( i ), uno::UNO_QUERY );
- break;
- }
- }
- CPPUNIT_ASSERT( numberingRule.is());
- uno::Sequence< beans::PropertyValue > numbering;
- numberingRule->getByIndex( 0 ) >>= numbering;
- sal_Int16 numberingType = style::NumberingType::NUMBER_NONE;
- for( int i = 0;
- i < numbering.getLength();
- ++i )
- {
- if( numbering[ i ].Name == "NumberingType" )
- {
- numbering[ i ].Value >>= numberingType;
- break;
- }
- }
- CPPUNIT_ASSERT_EQUAL( style::NumberingType::ARABIC, numberingType );
-}
-
DECLARE_OOXMLIMPORT_TEST(testBnc773061, "bnc773061.docx")
{
uno::Reference< text::XTextRange > paragraph = getParagraph( 1 );
@@ -716,26 +340,6 @@ DECLARE_OOXMLIMPORT_TEST(testBnc773061, "bnc773061.docx")
CPPUNIT_ASSERT_EQUAL( sal_Int32( 100 ), getProperty< sal_Int32 >( lowered, "CharEscapementHeight" ));
}
-DECLARE_OOXMLIMPORT_TEST(testAllGapsWord, "all_gaps_word.docx")
-{
- BorderTest borderTest;
- BorderTest::testTheBorders(mxComponent, false);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN775906, "n775906.docx")
-{
- /*
- * The problem was that right margin (via direct formatting) erased the left/first margin (inherited from numbering style).
- *
- * oParas = ThisComponent.Text.createEnumeration
- * oPara = oParas.nextElement
- * xray oPara.ParaFirstLineIndent ' was 0
- * xray oPara.ParaLeftMargin ' was 0
- */
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-635), getProperty<sal_Int32>(getParagraph(1), "ParaFirstLineIndent"));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1905), getProperty<sal_Int32>(getParagraph(1), "ParaLeftMargin"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testN775899, "n775899.docx")
{
/*
@@ -773,39 +377,6 @@ DECLARE_OOXMLIMPORT_TEST(testN777345, "n777345.docx")
#endif
}
-DECLARE_OOXMLIMPORT_TEST(testTdf59699, "tdf59699.docx")
-{
- uno::Reference<beans::XPropertySet> xImage(getShape(1), uno::UNO_QUERY);
- auto xGraphic = getProperty<uno::Reference<graphic::XGraphic> >(xImage, "Graphic");
- // This was false: the referenced graphic data wasn't imported.
- CPPUNIT_ASSERT(xGraphic.is());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN777337, "n777337.docx")
-{
- /*
- * The problem was that the top and bottom margin on the first page was only 0.1cm instead of 1.7cm.
- *
- * oFirst = ThisComponent.StyleFamilies.PageStyles.getByName("First Page")
- * xray oFirst.TopMargin
- * xray oFirst.BottomMargin
- */
- uno::Reference<beans::XPropertySet> xPropertySet(getStyles("PageStyles")->getByName("First Page"), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1702), getProperty<sal_Int32>(xPropertySet, "TopMargin"));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1702), getProperty<sal_Int32>(xPropertySet, "BottomMargin"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN778836, "n778836.docx")
-{
- /*
- * The problem was that the paragraph inherited margins from the numbering
- * and parent paragraph styles and the result was incorrect.
- */
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1270), getProperty<sal_Int32>(getParagraph(1), "ParaRightMargin"));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(3810), getProperty<sal_Int32>(getParagraph(1), "ParaLeftMargin"));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-635), getProperty<sal_Int32>(getParagraph(1), "ParaFirstLineIndent"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testN778140, "n778140.docx")
{
/*
@@ -816,19 +387,6 @@ DECLARE_OOXMLIMPORT_TEST(testN778140, "n778140.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int32(176), getProperty<sal_Int32>(getParagraph(1), "ParaBottomMargin"));
}
-DECLARE_OOXMLIMPORT_TEST(testN778828, "n778828.docx")
-{
- /*
- * The problem was that a page break after a continuous section break caused
- * double page break on title page.
- */
- uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
- uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
- xCursor->jumpToLastPage();
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xCursor->getPage());
-}
-
DECLARE_OOXMLIMPORT_TEST(testInk, "ink.docx")
{
/*
@@ -840,16 +398,6 @@ DECLARE_OOXMLIMPORT_TEST(testInk, "ink.docx")
CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.drawing.OpenBezierShape"));
}
-DECLARE_OOXMLIMPORT_TEST(testN779834, "n779834.docx")
-{
- // This document simply crashed the importer.
-}
-
-DECLARE_OOXMLIMPORT_TEST(testRHBZ1180114, "rhbz1180114.docx")
-{
- // This document simply crashed the importer.
-}
-
DECLARE_OOXMLIMPORT_TEST(testN779627, "n779627.docx")
{
/*
@@ -896,113 +444,6 @@ DECLARE_OOXMLIMPORT_TEST(testN779627b, "n779627b.docx")
CPPUNIT_ASSERT_EQUAL_MESSAGE("Not centered vertically relatively to page", text::RelOrientation::PAGE_FRAME, nValue);
}
-DECLARE_OOXMLIMPORT_TEST(testTDF91122, "tdf91122.docx")
-{
- /*
- * OLE object shape: default vertical position is top in MSO, not bottom
- */
- for (int i = 1; i <= 2; ++i)
- {
- uno::Reference<beans::XPropertySet> xShapeProperties( getShape(i), uno::UNO_QUERY );
- uno::Reference<drawing::XShapeDescriptor> xShapeDescriptor(xShapeProperties, uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(OUString("FrameShape"), xShapeDescriptor->getShapeType());
- sal_Int16 nValue;
- xShapeProperties->getPropertyValue("VertOrient") >>= nValue;
- CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong vertical orientation", text::VertOrientation::TOP, nValue);
- }
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTDF91260, "tdf91260.docx")
-{
- /*
- * textbox can't extend beyond the page bottom
- * solution: shrinking textbox (its text frame) height, if needed
- */
- uno::Reference<text::XTextRange> xFrame(getShape(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xFrame->getString().startsWith( "Lorem ipsum" ) );
- CPPUNIT_ASSERT_EQUAL(sal_Int32(3454), getProperty<sal_Int32>(xFrame, "Height"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo74357, "fdo74357.docx")
-{
- // Floating table wasn't converted to a textframe.
- uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xDrawPage(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
- // This was 0.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
-
- // Bottom margin of the first paragraph was too large, causing a layout problem.
- // This was 494.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(86), getProperty<sal_Int32>(getParagraph(1), "ParaBottomMargin"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo55187, "fdo55187.docx")
-{
- // 0x010d was imported as a newline.
- getParagraph(1, OUString("lup\xc4\x8dka", 7, RTL_TEXTENCODING_UTF8));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN780563, "n780563.docx")
-{
- /*
- * Make sure we have the table in the fly frame created
- */
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xTables->getCount( ));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN780853, "n780853.docx")
-{
- /*
- * The problem was that the table was not imported.
- *
- * xray ThisComponent.TextTables.Count 'was 0
- */
- uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN780843, "n780843.docx")
-{
- uno::Reference< text::XTextRange > xPara = getParagraph(1);
- OUString aStyleName = getProperty<OUString>(xPara, "PageStyleName");
- CPPUNIT_ASSERT_EQUAL(OUString("First Page"), aStyleName);
-
- //tdf64372 this document should only have one page break (2 pages, not 3)
- uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
- uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
- xCursor->jumpToLastPage();
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xCursor->getPage());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN780843b, "n780843b.docx")
-{
- // Same document as testN780843 except there is more text before the continuous break. Now the opposite footer results should happen.
- uno::Reference< text::XTextRange > xPara = getParagraph(3);
- OUString aStyleName = getProperty<OUString>(xPara, "PageStyleName");
- uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName(aStyleName), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xFooterText = getProperty< uno::Reference<text::XTextRange> >(xPageStyle, "FooterText");
- CPPUNIT_ASSERT_EQUAL( OUString("hidden footer"), xFooterText->getString() );
-}
-
-DECLARE_OOXMLIMPORT_TEST(testShadow, "imgshadow.docx")
-{
- /*
- * The problem was that drop shadows on inline images were not being
- * imported and applied.
- */
- uno::Reference<beans::XPropertySet> xPropertySet(getShape(2), uno::UNO_QUERY);
-
- bool bShadow = getProperty<bool>(xPropertySet, "Shadow");
- CPPUNIT_ASSERT(bShadow);
-
- sal_Int32 nShadowXDistance = getProperty<sal_Int32>(xPropertySet, "ShadowXDistance");
- CPPUNIT_ASSERT(nShadowXDistance != 0);
-}
-
DECLARE_OOXMLIMPORT_TEST(testN782061, "n782061.docx")
{
/*
@@ -1011,64 +452,6 @@ DECLARE_OOXMLIMPORT_TEST(testN782061, "n782061.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int32(-9), getProperty<sal_Int32>(getRun(getParagraph(1), 2), "CharEscapement"));
}
-DECLARE_OOXMLIMPORT_TEST(testN782345, "n782345.docx")
-{
- /*
- * The problem was that the page break was inserted before the 3rd para, instead of before the 2nd para.
- */
- CPPUNIT_ASSERT_EQUAL(style::BreakType_PAGE_BEFORE, getProperty<style::BreakType>(getParagraph(2), "BreakType"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN779941, "n779941.docx")
-{
- /*
- * Make sure top/bottom margins of tables are set to 0 (problem was: bottom margin set to 0.35cm)
- */
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xTableProperties(xTables->getByIndex(0), uno::UNO_QUERY);
- {
- uno::Any aValue = xTableProperties->getPropertyValue("TopMargin");
- sal_Int32 nTopMargin;
- aValue >>= nTopMargin;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nTopMargin);
- }
- {
- uno::Any aValue = xTableProperties->getPropertyValue("BottomMargin");
- sal_Int32 nBottomMargin;
- aValue >>= nBottomMargin;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nBottomMargin);
- }
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN783638, "n783638.docx")
-{
- // The problem was that the margins of inline images were not zero.
- uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xPropertySet, "LeftMargin"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo52208, "fdo52208.docx")
-{
- // The problem was that the document had 2 pages instead of 1.
- uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
- uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
- xCursor->jumpToLastPage();
- CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN785767, "n785767.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
- // Check the A1 and B1 cells, the width of both of them was the default value (10000 / 9, as there were 9 cells in the row).
- CPPUNIT_ASSERT_MESSAGE("A1 must not have default width", sal_Int16(10000 / 9) != getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators")[0].Position);
- CPPUNIT_ASSERT_MESSAGE("B1 must not have default width", sal_Int16(10000 / 9) != getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(1), "TableColumnSeparators")[0].Position);
-}
-
DECLARE_OOXMLIMPORT_TEST(testN773061, "n773061.docx")
{
// xray ThisComponent.TextFrames(0).LeftBorderDistance
@@ -1092,49 +475,6 @@ DECLARE_OOXMLIMPORT_TEST(testN780645, "n780645.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int16(2135), getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(1), "TableColumnSeparators")[0].Position); // was 1999
}
-DECLARE_OOXMLIMPORT_TEST(testFineTableDash, "tableborder-finedash.docx")
-{
- // The problem was that finely dashed borders on tables were unsupported
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xTableProperties(xTables->getByIndex(0), uno::UNO_QUERY);
- table::TableBorder2 aBorder;
- xTableProperties->getPropertyValue("TableBorder2") >>= aBorder;
- CPPUNIT_ASSERT_EQUAL(aBorder.RightLine.LineStyle, table::BorderLineStyle::FINE_DASHED);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN792778, "n792778.docx")
-{
- /*
- * The problem was that the importer didn't handle complex groupshapes with groupshapes, textboxes and graphics inside.
- *
- * xray ThisComponent.DrawPage.Count ' 1 groupshape
- * xray ThisComponent.DrawPage(0).Count ' 2 sub-groupshapes
- * xray ThisComponent.DrawPage(0).getByIndex(0).Count ' first sub-groupshape: 1 pic
- * xray ThisComponent.DrawPage(0).getByIndex(1).Count ' second sub-groupshape: 1 pic
- * xray ThisComponent.DrawPage(0).getByIndex(0).getByIndex(0).Position.Y ' 11684, the vertical position of the shapes were also wrong
- * xray ThisComponent.DrawPage(0).getByIndex(1).getByIndex(0).Position.Y ' 11684
- */
- uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xDrawPage(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
-
- uno::Reference<drawing::XShapes> xGroupShape(xDrawPage->getByIndex(0), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xGroupShape->getCount());
-
- uno::Reference<drawing::XShapes> xInnerGroupShape(xGroupShape->getByIndex(0), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xInnerGroupShape->getCount());
-
- uno::Reference<drawing::XShape> xInnerShape(xInnerGroupShape->getByIndex(0), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(11684), xInnerShape->getPosition().Y);
-
- xInnerGroupShape.set(xGroupShape->getByIndex(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xInnerGroupShape->getCount());
-
- xInnerShape.set(xInnerGroupShape->getByIndex(0), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(11684), xInnerShape->getPosition().Y);
-}
-
DECLARE_OOXMLIMPORT_TEST(testWordArtResizing, "WordArt.docx")
{
/* The Word-Arts and watermarks were getting resized automatically, It was as if they were
@@ -1202,192 +542,6 @@ DECLARE_OOXMLIMPORT_TEST(testGroupshapeChildRotation, "groupshape-child-rotation
CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.TextShape"), xShapeDescriptor->getShapeType());
}
-DECLARE_OOXMLIMPORT_TEST(testGroupshapeSmarttag, "groupshape-smarttag.docx")
-{
- uno::Reference<drawing::XShapes> xGroupShape(getShape(1), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xShape(xGroupShape->getByIndex(0), uno::UNO_QUERY);
- // First run of shape text was missing due to the w:smartTag wrapper around it.
- CPPUNIT_ASSERT_EQUAL(OUString("Box 2"), xShape->getString());
-
- // Font size of the shape text was 10.
- CPPUNIT_ASSERT_EQUAL(12.f, getProperty<float>(xShape->getText(), "CharHeight"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN793262, "n793262.docx")
-{
- uno::Reference<container::XEnumerationAccess> xHeaderText = getProperty< uno::Reference<container::XEnumerationAccess> >(getStyles("PageStyles")->getByName("Standard"), "HeaderText");
- uno::Reference<container::XEnumeration> xHeaderParagraphs(xHeaderText->createEnumeration());
- xHeaderParagraphs->nextElement();
- // Font size of the last empty paragraph in the header was ignored, this was 11.
- CPPUNIT_ASSERT_EQUAL(16.f, getProperty<float>(xHeaderParagraphs->nextElement(), "CharHeight"));
-
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
- // Cell margins as direct formatting were ignored, this was 0.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(76), getProperty<sal_Int32>(xTable->getCellByName("A1"), "TopBorderDistance"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN793998, "n793998.docx")
-{
- sal_Int32 nTextPortion = parseDump("/root/page/body/txt/Text[1]", "nWidth").toInt32(); // Width of the first (text) portion
- sal_Int32 nTabPortion = parseDump("/root/page/body/txt/Text[2]", "nWidth").toInt32(); // Width of the second (tab) portion
- sal_Int32 nParagraph = parseDump("/root/page/body/txt/infos/bounds", "width").toInt32(); // Width of the paragraph
- sal_Int32 nRightMargin = 3000;
- // The problem was that the tab portion didn't ignore the right margin, so text + tab width wasn't larger than body (paragraph - right margin) width.
- CPPUNIT_ASSERT(nTextPortion + nTabPortion > nParagraph - nRightMargin);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN779642, "n779642.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
-
- // First problem: check that we have 2 tables, nesting caused the
- // creation of outer one to fail
- uno::Reference<container::XIndexAccess> xTables(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong number of imported tables", sal_Int32(2), xTables->getCount());
-
- // Second problem: check that the outer table is in a frame, at the bottom of the page
- uno::Reference<text::XTextTable> xTextTable(xTextTablesSupplier->getTextTables()->getByName("Table2"), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xAnchor(xTextTable->getAnchor(), uno::UNO_QUERY);
- uno::Any aFrame = xAnchor->getPropertyValue("TextFrame");
- uno::Reference<beans::XPropertySet> xFrame;
- aFrame >>= xFrame;
- sal_Int16 nValue;
- xFrame->getPropertyValue("VertOrient") >>= nValue;
- CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong vertical orientation", nValue, text::VertOrientation::BOTTOM);
- xFrame->getPropertyValue("VertOrientRelation") >>= nValue;
- CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong vertical orientation relation", nValue, text::RelOrientation::PAGE_PRINT_AREA);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTbLrHeight, "tblr-height.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), uno::UNO_QUERY);
- // btLr text direction was imported as MIN, it should be FIX to avoid incorrectly large height in case of too much content.
- CPPUNIT_ASSERT_EQUAL(text::SizeType::FIX, getProperty<sal_Int16>(xTableRows->getByIndex(0), "SizeType"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testBnc865381, "bnc865381.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
- // Second row has a vertically merged cell, make sure size type is not FIX in that case (otherwise B2 is not readable).
- CPPUNIT_ASSERT(text::SizeType::FIX != getProperty<sal_Int16>(xTableRows->getByIndex(1), "SizeType"));
- // Explicit size of 41 mm100 was set, so the vertical text in A2 was not readable.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTableRows->getByIndex(1), "Height"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo53985, "fdo53985.docx")
-{
- // Unhandled exception prevented import of the rest of the document.
-
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(5), xTables->getCount()); // Only 4 tables were imported.
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo59638, "fdo59638.docx")
-{
- // The problem was that w:lvlOverride inside w:num was ignores by dmapper.
-
- uno::Reference<beans::XPropertySet> xPropertySet(getStyles("NumberingStyles")->getByName("WWNum1"), uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xLevels(xPropertySet->getPropertyValue("NumberingRules"), uno::UNO_QUERY);
- uno::Sequence<beans::PropertyValue> aProps;
- xLevels->getByIndex(0) >>= aProps; // 1st level
-
- for (int i = 0; i < aProps.getLength(); ++i)
- {
- const beans::PropertyValue& rProp = aProps[i];
-
- if (rProp.Name == "BulletChar")
- {
- // Was '*', should be 'o'.
- CPPUNIT_ASSERT_EQUAL(OUString("\xEF\x82\xB7", 3, RTL_TEXTENCODING_UTF8), rProp.Value.get<OUString>());
- return;
- }
- }
- CPPUNIT_FAIL("no BulletChar property");
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo61343, "fdo61343.docx")
-{
- // The problem was that there were a groupshape in the doc, followed by an
- // OLE object, and this lead to a crash.
- uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDraws->getCount());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testToolsLineNumbering, "tools-line-numbering.docx")
-{
- /*
- * Test the line numbering feature import (Tools->Line Numbering ...)
- *
- * xray ThisComponent.getLineNumberingProperties().IsOn == True
- * xray ThisComponent.getLineNumberingProperties().CountEmptyLines == True
- * xray ThisComponent.getLineNumberingProperties().NumberPosition == 0
- * xray ThisComponent.getLineNumberingProperties().NumberingType == 4
- * xray ThisComponent.getLineNumberingProperties().SeparatorInterval == 3
- */
-
- bool bValue = false;
- sal_Int32 nValue = -1;
-
- uno::Reference< text::XTextDocument > xtextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference< text::XLineNumberingProperties > xLineProperties( xtextDocument, uno::UNO_QUERY_THROW );
- uno::Reference< beans::XPropertySet > xPropertySet = xLineProperties->getLineNumberingProperties();
-
- xPropertySet->getPropertyValue("IsOn") >>= bValue;
- CPPUNIT_ASSERT_EQUAL(true, bValue);
-
- xPropertySet->getPropertyValue("CountEmptyLines") >>= bValue;
- CPPUNIT_ASSERT_EQUAL(true, bValue);
-
- xPropertySet->getPropertyValue("NumberPosition") >>= nValue;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nValue);
-
- xPropertySet->getPropertyValue("NumberingType") >>= nValue;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(4), nValue);
-
- xPropertySet->getPropertyValue("SeparatorInterval") >>= nValue;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(3), nValue);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testfdo78904, "fdo78904.docx")
-{
- uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
- if (xIndexAccess->getCount())
- {
- uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(oox::drawingml::convertEmuToHmm(0)), getProperty<sal_Int32>(xFrame, "HoriOrientPosition"));
- }
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo60922, "fdo60922.docx")
-{
- // This was 0, not 100, due to wrong import of w:position w:val="0"
- CPPUNIT_ASSERT_EQUAL(sal_Int32(100), getProperty<sal_Int32>(getRun(getParagraph(1), 1), "CharEscapementHeight"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo59273, "fdo59273.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
- // Was 115596 (i.e. 10 times wider than necessary), as w:tblW was missing and the importer didn't set it.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(12961), getProperty<sal_Int32>(xTextTable, "Width"));
-
- uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
- // Was 9997, so the 4th column had ~zero width
- CPPUNIT_ASSERT_EQUAL(sal_Int16(7498), getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators")[2].Position);
-}
-
DECLARE_OOXMLIMPORT_TEST(testTableWidth, "table_width.docx")
{
uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
@@ -1400,101 +554,6 @@ DECLARE_OOXMLIMPORT_TEST(testTableWidth, "table_width.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int32(100), getProperty<sal_Int32>(xFrames->getByIndex(0), "FrameWidthPercent"));
}
-DECLARE_OOXMLIMPORT_TEST(testConditionalstylesTablelook, "conditionalstyles-tbllook.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
- // Background was -1.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0x7F7F7F), getProperty<sal_Int32>(xTable->getCellByName("A1"), "BackColor"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo63685, "fdo63685.docx")
-{
- // An inline image's wrapping should be always zero, even if the doc model has a non-zero value.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getShape(1), "TopMargin"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN592908_Frame, "n592908-frame.docx")
-{
- uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
- text::WrapTextMode eValue;
- xPropertySet->getPropertyValue("Surround") >>= eValue;
- CPPUNIT_ASSERT_EQUAL(eValue, text::WrapTextMode_PARALLEL);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN592908_Picture, "n592908-picture.docx")
-{
- uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
- text::WrapTextMode eValue;
- xPropertySet->getPropertyValue("Surround") >>= eValue;
- CPPUNIT_ASSERT_EQUAL(eValue, text::WrapTextMode_PARALLEL);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN779630, "n779630.docx")
-{
- // First shape: date picker
- uno::Reference<drawing::XControlShape> xControlShape(getShape(1), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xPropertySet(xControlShape->getControl(), uno::UNO_QUERY);
- uno::Reference<lang::XServiceInfo> xServiceInfo(xPropertySet, uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(true, bool(xServiceInfo->supportsService("com.sun.star.form.component.DateField")));
- CPPUNIT_ASSERT_EQUAL(OUString("date default text"), getProperty<OUString>(xPropertySet, "HelpText"));
- CPPUNIT_ASSERT_EQUAL(sal_Int16(8), getProperty<sal_Int16>(xPropertySet, "DateFormat"));
- CPPUNIT_ASSERT_EQUAL(true, bool(getProperty<bool>(xPropertySet, "Dropdown")));
-
- // Second shape: combo box
- xControlShape.set(getShape(2), uno::UNO_QUERY);
- xPropertySet.set(xControlShape->getControl(), uno::UNO_QUERY);
- xServiceInfo.set(xPropertySet, uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(true, bool(xServiceInfo->supportsService("com.sun.star.form.component.ComboBox")));
- CPPUNIT_ASSERT_EQUAL(OUString("dropdown default text"), getProperty<OUString>(xPropertySet, "DefaultText"));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(2), getProperty< uno::Sequence<OUString> >(xPropertySet, "StringItemList").getLength());
- CPPUNIT_ASSERT_EQUAL(true, bool(getProperty<bool>(xPropertySet, "Dropdown")));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testIndentation, "indentation.docx")
-{
- uno::Reference<uno::XInterface> xParaLTRTitle(getParagraph( 1, "Title aligned"));
- uno::Reference<uno::XInterface> xParaLTRNormal(getParagraph( 2, ""));
-
- // this will test the text direction for paragraphs
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, getProperty<sal_Int16>( xParaLTRTitle, "WritingMode" ));
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, getProperty<sal_Int16>( xParaLTRNormal, "WritingMode" ));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testPageBorderShadow, "page-border-shadow.docx")
-{
- // The problem was that in w:pgBorders, child elements had a w:shadow attribute, but that was ignored.
- table::ShadowFormat aShadow = getProperty<table::ShadowFormat>(getStyles("PageStyles")->getByName("Standard"), "ShadowFormat");
- CPPUNIT_ASSERT_EQUAL(COL_BLACK, sal_uInt32(aShadow.Color));
- CPPUNIT_ASSERT_EQUAL(table::ShadowLocation_BOTTOM_RIGHT, aShadow.Location);
- // w:sz="48" is in eights of a point, 1 pt is 20 twips.
- CPPUNIT_ASSERT_EQUAL(sal_Int16(convertTwipToMm100(48/8*20)), aShadow.ShadowWidth);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN816593, "n816593.docx")
-{
- // Two consecutive <w:tbl> without any paragraph in between, but with different tblpPr. In this
- // case we need to have 2 different tables instead of 1
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xTables->getCount());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testN820509, "n820509.docx")
-{
- // Design mode was enabled.
- uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
- uno::Reference<view::XFormLayerAccess> xFormLayerAccess(xModel->getCurrentController(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(false, bool(xFormLayerAccess->isFormDesignMode()));
-
- // M.d.yyyy date format was unhandled.
- uno::Reference<drawing::XControlShape> xControlShape(getShape(1), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xPropertySet(xControlShape->getControl(), uno::UNO_QUERY);
- uno::Reference<lang::XServiceInfo> xServiceInfo(xPropertySet, uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int16(8), getProperty<sal_Int16>(xPropertySet, "DateFormat"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testN820788, "n820788.docx")
{
// The problem was that AutoSize was not enabled for the text frame.
@@ -1519,12 +578,6 @@ DECLARE_OOXMLIMPORT_TEST(testN820504, "n820504.docx")
CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER, getProperty<text::TextContentAnchorType>(getShape(1), "AnchorType"));
}
-DECLARE_OOXMLIMPORT_TEST(testN830205, "n830205.docx")
-{
- // Previously import just crashed (due to infinite recursion).
- getParagraph(1, "XXX");
-}
-
DECLARE_OOXMLIMPORT_TEST(testFdo43641, "fdo43641.docx")
{
uno::Reference<container::XIndexAccess> xGroupShape(getShape(1), uno::UNO_QUERY);
@@ -1533,125 +586,6 @@ DECLARE_OOXMLIMPORT_TEST(testFdo43641, "fdo43641.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int32(oox::drawingml::convertEmuToHmm(928440)), xLine->getSize().Width);
}
-DECLARE_OOXMLIMPORT_TEST(testTableAutoColumnFixedSize, "table-auto-column-fixed-size.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
-
- // Width was not recognized during import when table size was 'auto'
- CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(3996)), getProperty<sal_Int32>(xTextTable, "Width"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTableAutoColumnFixedSize2, "table-auto-column-fixed-size2.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
- // This was 17907, i.e. the sum of the width of the 3 cells (10152 twips each), which is too wide.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(16891), getProperty<sal_Int32>(xTextTable, "Width"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo46361, "fdo46361.docx")
-{
- uno::Reference<container::XIndexAccess> xGroupShape(getShape(1), uno::UNO_QUERY);
- uno::Reference<drawing::XShape> xShape(xGroupShape->getByIndex(0), uno::UNO_QUERY);
- // This was CENTER.
- CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_TOP, getProperty<drawing::TextVerticalAdjust>(xShape, "TextVerticalAdjust"));
- uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xShape, uno::UNO_QUERY)->getText();
- uno::Reference<text::XTextRange> xParagraph = getParagraphOfText(1, xText);
- // This was LEFT.
- CPPUNIT_ASSERT_EQUAL(style::ParagraphAdjust_CENTER, static_cast<style::ParagraphAdjust>(getProperty<sal_Int16>(xParagraph, "ParaAdjust")));
- // This was black, not green.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0x008000), getProperty<sal_Int32>(getRun(xParagraph, 1), "CharColor"));
- // \n char was missing due to unhandled w:br.
- CPPUNIT_ASSERT_EQUAL(OUString("text\ntext"), uno::Reference<text::XTextRange>(xGroupShape->getByIndex(1), uno::UNO_QUERY)->getString());
- // \n chars were missing, due to unhandled multiple w:p tags.
- CPPUNIT_ASSERT_EQUAL(OUString("text\ntext\n"), uno::Reference<text::XTextRange>(xGroupShape->getByIndex(2), uno::UNO_QUERY)->getString());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo65632, "fdo65632.docx")
-{
- // The problem was that the footnote text had fake redline: only the body
- // text has redline in fact.
- uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
- uno::Reference<text::XText> xText(xFootnotes->getByIndex(0), uno::UNO_QUERY);
- //uno::Reference<text::XTextRange> xParagraph = getParagraphOfText(1, xText);
- CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(getRun(getParagraphOfText(1, xText), 1), "TextPortionType"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo66474, "fdo66474.docx")
-{
- // The table width was too small, so the text in the second cell was unreadable: this was 1397.
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(10492), getProperty<sal_Int32>(xTables->getByIndex(0), "Width"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testGroupshapeRotation, "groupshape-rotation.docx")
-{
- // Rotation on groupshapes wasn't handled at all by the VML importer.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(315 * 100), getProperty<sal_Int32>(getShape(1), "RotateAngle"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testBnc780044Spacing, "bnc780044_spacing.docx")
-{
- // The document has global w:spacing in styles.xml , and local w:spacing in w:pPr, which however
- // only applied to text runs, not to as-character pictures. So the picture made the line higher.
- uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
- uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
- xCursor->jumpToLastPage();
- CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTableAutoNested, "table-auto-nested.docx")
-{
- // This was 176, when compat option is not enabled, the auto paragraph bottom margin value was incorrect.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(494), getProperty<sal_Int32>(getParagraph(1), "ParaBottomMargin"));
-
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
- // This was 115596, i.e. the width of the outer table was too large.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(23051), getProperty<sal_Int32>(xTables->getByIndex(1), "Width"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTableStyleParprop, "table-style-parprop.docx")
-{
- // The problem was that w:spacing's w:after=0 (a paragraph property) wasn't imported from table style.
- uno::Reference<text::XTextTable> xTable(getParagraphOrTable(1), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xCell(xTable->getCellByName("A1"), uno::UNO_QUERY);
- // This was 353, the document default, i.e. paragraph property from table style had no effect.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraphOfText(1, xCell->getText()), "ParaBottomMargin"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTablePagebreak, "table-pagebreak.docx")
-{
- // Page break inside table: should be ignored (was style::BreakType_PAGE_BEFORE before).
- CPPUNIT_ASSERT_EQUAL(style::BreakType_NONE, getProperty<style::BreakType>(getParagraphOrTable(2), "BreakType"));
-
- // This one is outside the table: should not be ignored.
- CPPUNIT_ASSERT_EQUAL(style::BreakType_PAGE_BEFORE, getProperty<style::BreakType>(getParagraph(3), "BreakType"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo68607, "fdo68607.docx")
-{
- // Bugdoc was 8 pages in Word, 1 in Writer due to pointlessly wrapping the
- // table in a frame. Exact layout may depend on fonts available, etc. --
- // but at least make sure that our table spans over multiple pages now.
- CPPUNIT_ASSERT(getPages() > 1);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testVmlTextVerticalAdjust, "vml-text-vertical-adjust.docx")
-{
- uno::Reference<drawing::XShapes> xOuterGroupShape(getShape(1), uno::UNO_QUERY);
- uno::Reference<drawing::XShapes> xInnerGroupShape(xOuterGroupShape->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<drawing::XShape> xShape(xInnerGroupShape->getByIndex(0), uno::UNO_QUERY);
- // Was CENTER.
- CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_TOP, getProperty<drawing::TextVerticalAdjust>(xShape, "TextVerticalAdjust"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testGroupshapeSdt, "groupshape-sdt.docx")
{
// All problems here are due to the groupshape: we have a drawinglayer rectangle, not a writer textframe.
@@ -1683,26 +617,6 @@ DECLARE_OOXMLIMPORT_TEST(testDefaultSectBreakCols, "default-sect-break-cols.docx
CPPUNIT_ASSERT(!bValue) ;
}
-DECLARE_OOXMLIMPORT_TEST(testFdo69636, "fdo69636.docx")
-{
- // The problem was that the mso-layout-flow-alt:bottom-to-top VML shape property wasn't handled for sw text frames.
- uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
- comphelper::SequenceAsHashMap aCustomShapeGeometry(xPropertySet->getPropertyValue("CustomShapeGeometry"));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-270), aCustomShapeGeometry["TextPreRotateAngle"].get<sal_Int32>());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testChartProp, "chart-prop.docx")
-{
- // The problem was that chart was not getting parsed in writer module.
- uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xDrawPage(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
-
- uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(15240), getProperty<sal_Int32>(xPropertySet, "Width"));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(8890), getProperty<sal_Int32>(xPropertySet, "Height"));
-}
-
void lcl_countTextFrames(css::uno::Reference< lang::XComponent >& xComponent,
sal_Int32 nExpected )
{
@@ -1751,65 +665,6 @@ DECLARE_OOXMLIMPORT_TEST(testTdf75573, "tdf75573_page1frame.docx")
CPPUNIT_ASSERT(!bProt);
}
-DECLARE_OOXMLIMPORT_TEST(testFdo43093, "fdo43093.docx")
-{
- // The problem was that the direction and alignment are not correct for RTL paragraphs.
- uno::Reference<uno::XInterface> xParaRtlRight(getParagraph( 1, "Right and RTL in M$"));
- sal_Int32 nRtlRight = getProperty< sal_Int32 >( xParaRtlRight, "ParaAdjust" );
- sal_Int16 nRRDir = getProperty< sal_Int32 >( xParaRtlRight, "WritingMode" );
-
- uno::Reference<uno::XInterface> xParaRtlLeft(getParagraph( 2, "Left and RTL in M$"));
- sal_Int32 nRtlLeft = getProperty< sal_Int32 >( xParaRtlLeft, "ParaAdjust" );
- sal_Int16 nRLDir = getProperty< sal_Int32 >( xParaRtlLeft, "WritingMode" );
-
- uno::Reference<uno::XInterface> xParaLtrRight(getParagraph( 3, "Right and LTR in M$"));
- sal_Int32 nLtrRight = getProperty< sal_Int32 >( xParaLtrRight, "ParaAdjust" );
- sal_Int16 nLRDir = getProperty< sal_Int32 >( xParaLtrRight, "WritingMode" );
-
- uno::Reference<uno::XInterface> xParaLtrLeft(getParagraph( 4, "Left and LTR in M$"));
- sal_Int32 nLtrLeft = getProperty< sal_Int32 >( xParaLtrLeft, "ParaAdjust" );
- sal_Int16 nLLDir = getProperty< sal_Int32 >( xParaLtrLeft, "WritingMode" );
-
- // this will test the both the text direction and alignment for each paragraph
- CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_RIGHT), nRtlRight);
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::RL_TB, nRRDir);
-
- CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_LEFT), nRtlLeft);
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::RL_TB, nRLDir);
-
- CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_RIGHT), nLtrRight);
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, nLRDir);
-
- CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_LEFT), nLtrLeft);
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, nLLDir);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testSmartart, "smartart.docx")
-{
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xTextDocumentPropertySet(xTextDocument, uno::UNO_QUERY);
- uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDraws->getCount()); // One groupshape in the doc
-
- uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xGroup->getCount()); // 3 rectangles and an arrow in the group
-
- uno::Reference<beans::XPropertySet> xPropertySet(xGroup->getByIndex(1), uno::UNO_QUERY);
- sal_Int32 nValue(0);
- xPropertySet->getPropertyValue("FillColor") >>= nValue;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0x4f81bd), nValue); // If fill color is right, theme import is OK
-
- uno::Reference<text::XTextRange> xTextRange(xGroup->getByIndex(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(OUString("Sample"), xTextRange->getString()); // Shape has text
-
- uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextRange->getText(), uno::UNO_QUERY);
- uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
- xPropertySet.set(xParaEnum->nextElement(), uno::UNO_QUERY);
- xPropertySet->getPropertyValue("ParaAdjust") >>= nValue;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(style::ParagraphAdjust_CENTER), nValue); // Paragraph properties are imported
-}
-
DECLARE_OOXMLIMPORT_TEST(testMultiColumnSeparator, "multi-column-separator-with-line.docx")
{
uno::Reference<beans::XPropertySet> xTextSection = getProperty< uno::Reference<beans::XPropertySet> >(getParagraph(1, "First data."), "TextSection");
@@ -1821,33 +676,6 @@ DECLARE_OOXMLIMPORT_TEST(testMultiColumnSeparator, "multi-column-separator-with-
CPPUNIT_ASSERT(bValue);
}
-DECLARE_OOXMLIMPORT_TEST(testFdo69548, "fdo69548.docx")
-{
- // The problem was that the last space in target URL was removed
- CPPUNIT_ASSERT_EQUAL(OUString("#this is a bookmark"), getProperty<OUString>(getRun(getParagraph(1), 1), "HyperLinkURL"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testWpsOnly, "wps-only.docx")
-{
- // Document has wp:anchor, not wp:inline, so handle it accordingly.
- uno::Reference<drawing::XShape> xShape = getShape(1);
- text::TextContentAnchorType eValue = getProperty<text::TextContentAnchorType>(xShape, "AnchorType");
- CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_PARAGRAPH, eValue);
-
- // Check position, it was 0. This is a shape, so use getPosition(), not a property.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(oox::drawingml::convertEmuToHmm(671830)), xShape->getPosition().X);
-
- // Left margin was 0, instead of 114300 EMU's.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(318), getProperty<sal_Int32>(xShape, "LeftMargin"));
- // Wrap type was PARALLEL.
- CPPUNIT_ASSERT_EQUAL(text::WrapTextMode_THROUGHT, getProperty<text::WrapTextMode>(xShape, "Surround"));
-
- // This should be in front of text.
- CPPUNIT_ASSERT_EQUAL(true, bool(getProperty<bool>(xShape, "Opaque")));
- // And this should be behind the document.
- CPPUNIT_ASSERT_EQUAL(false, bool(getProperty<bool>(getShape(2), "Opaque")));
-}
-
DECLARE_OOXMLIMPORT_TEST(lineWpsOnly, "line-wps-only.docx")
{
uno::Reference<drawing::XShape> xShape = getShape(1);
@@ -1885,173 +713,6 @@ DECLARE_OOXMLIMPORT_TEST(textboxWpsOnly, "textbox-wps-only.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int32(2805), getProperty<sal_Int32>(xFrame, "VertOrientPosition"));
}
-DECLARE_OOXMLIMPORT_TEST(testWpgOnly, "wpg-only.docx")
-{
- uno::Reference<drawing::XShape> xShape = getShape(1);
- // Check position, it was nearly 0. This is a shape, so use getPosition(), not a property.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(oox::drawingml::convertEmuToHmm(548005)), xShape->getPosition().X);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testWpgNested, "wpg-nested.docx")
-{
- uno::Reference<drawing::XShapes> xGroup(getShape(1), uno::UNO_QUERY);
- uno::Reference<drawing::XShapeDescriptor> xShapeDescriptor(xGroup->getByIndex(0), uno::UNO_QUERY);
- // This was a com.sun.star.drawing.CustomShape, due to lack of handling of groupshapes inside groupshapes.
- CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.GroupShape"), xShapeDescriptor->getShapeType());
- // This was text::RelOrientation::PAGE_FRAME, effectively placing the group shape on the left side of the page instead of the right one.
- CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_RIGHT, getProperty<sal_Int16>(xGroup, "HoriOrientRelation"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(textboxWpgOnly, "textbox-wpg-only.docx")
-{
- uno::Reference<drawing::XShape> xShape = getShape(1);
- // The relativeFrom attribute was ignored for groupshapes, i.e. these were text::RelOrientation::FRAME.
- CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xShape, "HoriOrientRelation"));
- CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xShape, "VertOrientRelation"));
- // Make sure the shape is not in the background, as we have behindDoc="0" in the doc.
- CPPUNIT_ASSERT_EQUAL(true, bool(getProperty<bool>(xShape, "Opaque")));
-
- // The 3 paragraphs on the rectangles inside the groupshape ended up in the
- // body text, make sure we don't have multiple paragraphs there anymore.
- CPPUNIT_ASSERT_EQUAL(1, getParagraphs()); // was 4
-
- // Character escapement was enabled by default, this was 58.
- uno::Reference<container::XIndexAccess> xGroup(xShape, uno::UNO_QUERY);
- uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xGroup->getByIndex(0), uno::UNO_QUERY)->getText();
- CPPUNIT_ASSERT_EQUAL(sal_Int32(100), getProperty<sal_Int32>(getRun(getParagraphOfText(1, xText), 1), "CharEscapementHeight"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testMceWpg, "mce-wpg.docx")
-{
- // Make sure that we read the primary branch, if wpg is requested as a feature.
- uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
- uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xGroup->getByIndex(0), uno::UNO_QUERY)->getText();
- // This was VML1.
- getParagraphOfText(1, xText, "DML1");
-}
-
-DECLARE_OOXMLIMPORT_TEST(testMceNested, "mce-nested.docx")
-{
- // Vertical position of the shape was incorrect due to incorrect nested mce handling.
- uno::Reference<beans::XPropertySet> xShape(getShape(1), uno::UNO_QUERY);
- // positionV's posOffset from the bugdoc, was 0.
- CPPUNIT_ASSERT(6985 <= getProperty<sal_Int32>(xShape, "VertOrientPosition"));
- // This was -1 (default), make sure the background color is set.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0x4f81bd), getProperty<sal_Int32>(xShape, "FillColor"));
-
- uno::Reference<drawing::XShapeDescriptor> xShapeDescriptor(getShape(2), uno::UNO_QUERY);
- // This was a com.sun.star.drawing.CustomShape, due to incorrect handling of wpg elements after a wps textbox.
- CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.GroupShape"), xShapeDescriptor->getShapeType());
-
- // Now check the top right textbox.
- uno::Reference<container::XIndexAccess> xGroup(getShape(2), uno::UNO_QUERY);
- uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xGroup->getByIndex(1), uno::UNO_QUERY)->getText();
- uno::Reference<text::XTextRange> xParagraph = getParagraphOfText(1, xText, "[Year]");
- CPPUNIT_ASSERT_EQUAL(48.f, getProperty<float>(getRun(xParagraph, 1), "CharHeight"));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffffff), getProperty<sal_Int32>(getRun(xParagraph, 1), "CharColor"));
- CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD, getProperty<float>(getRun(xParagraph, 1), "CharWeight"));
- CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_BOTTOM, getProperty<drawing::TextVerticalAdjust>(xGroup->getByIndex(1), "TextVerticalAdjust"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testMissingPath, "missing-path.docx")
-{
- comphelper::SequenceAsHashMap aCustomShapeGeometry(getProperty<beans::PropertyValues>(getShape(1), "CustomShapeGeometry"));
- comphelper::SequenceAsHashMap aPath(aCustomShapeGeometry["Path"].get<beans::PropertyValues>());
- uno::Sequence<drawing::EnhancedCustomShapeParameterPair> aCoordinates = aPath["Coordinates"].get< uno::Sequence<drawing::EnhancedCustomShapeParameterPair> >();
- // This was 0, the coordinate list was empty.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(19), aCoordinates.getLength());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo70457, "fdo70457.docx")
-{
- // The document contains a rotated bitmap
- // It must be imported as a XShape object with the proper rotation value
-
- // Check: there is one shape in the doc
- uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDraws->getCount());
-
- // Check: the angle of the shape is 45º
- CPPUNIT_ASSERT_EQUAL(sal_Int32(4500), getProperty<sal_Int32>(getShape(1), "RotateAngle"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testLOCrash,"file_crash.docx")
-{
- //The problem was libreoffice crash while opening the file.
- getParagraph(1,"Contents");
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo72560, "fdo72560.docx")
-{
- // The problem was libreoffice confuse when there RTL default style for paragraph
- uno::Reference<uno::XInterface> xParaLeftRTL(getParagraph( 1, "RTL LEFT"));
- uno::Reference<uno::XInterface> xParaRightLTR(getParagraph( 2, "LTR RIGHT"));
-
- // this will test the text direction and alignment for paragraphs
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::RL_TB, getProperty<sal_Int16>( xParaLeftRTL, "WritingMode" ));
- CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_LEFT), getProperty< sal_Int32 >( xParaLeftRTL, "ParaAdjust" ));
-
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, getProperty<sal_Int16>( xParaRightLTR, "WritingMode" ));
- CPPUNIT_ASSERT_EQUAL( sal_Int32 (style::ParagraphAdjust_RIGHT), getProperty< sal_Int32 >( xParaRightLTR, "ParaAdjust" ));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testRPrChangeClosed, "rprchange_closed.docx")
-{
- // Redline defined by rPrChanged wasn't removed.
- // First paragraph has an rPrChange element, make sure it doesn't appear in the second paragraph.
- CPPUNIT_ASSERT_EQUAL(false, hasProperty(getRun(getParagraph(2), 1), "RedlineType"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo65090, "fdo65090.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
- // The first row had two cells, instead of a single horizontally merged one.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators").getLength());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo69649, "fdo69649.docx")
-{
- // The DOCX containing the Table of Contents was not imported with correct page nos
- uno::Reference<text::XDocumentIndexesSupplier> xIndexSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xIndexes(xIndexSupplier->getDocumentIndexes( ), uno::UNO_QUERY);
- uno::Reference<text::XDocumentIndex> xTOCIndex(xIndexes->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xTextRange(xTOCIndex->getAnchor(), uno::UNO_QUERY);
- uno::Reference<text::XText> xText(xTextRange->getText( ), uno::UNO_QUERY);
- uno::Reference<text::XTextCursor> xTextCursor(xText->createTextCursor( ), uno::UNO_QUERY);
- xTextCursor->gotoRange(xTextRange->getStart(),false);
- xTextCursor->gotoRange(xTextRange->getEnd(),true);
- OUString aTocString(xTextCursor->getString());
- aTocString = aTocString.copy(256);
- CPPUNIT_ASSERT(aTocString.startsWithIgnoreAsciiCase( "Heading 15.1:\t15" ) );
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo73389,"fdo73389.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
- // This was 9340, i.e. the width of the inner table was too large.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(2842), getProperty<sal_Int32>(xTables->getByIndex(0), "Width"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testDMLGroupshapeSdt, "dml-groupshape-sdt.docx")
-{
- uno::Reference<drawing::XShapes> xGroupShape(getShape(1), uno::UNO_QUERY);
- // The text in the groupshape was missing due to the w:sdt and w:sdtContent wrapper around it.
- CPPUNIT_ASSERT_EQUAL(OUString("sdt and sdtContent inside groupshape"), uno::Reference<text::XTextRange>(xGroupShape->getByIndex(1), uno::UNO_QUERY)->getString());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testDmlCharheightDefault, "dml-charheight-default.docx")
-{
- uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xShape(xGroup->getByIndex(0), uno::UNO_QUERY);
- // This was 16: the first run of the second para incorrectly inherited the char height of the first para.
- CPPUNIT_ASSERT_EQUAL(11.f, getProperty<float>(getRun(getParagraphOfText(2, xShape->getText()), 1), "CharHeight"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testGroupshapeRelsize, "groupshape-relsize.docx")
{
// This was 43760, i.e. the height of the groupshape was larger than the page height, which is obviously incorrect.
@@ -2066,21 +727,6 @@ DECLARE_OOXMLIMPORT_TEST(testOleAnchor, "ole-anchor.docx")
CPPUNIT_ASSERT_EQUAL(text::WrapTextMode_THROUGHT, getProperty<text::WrapTextMode>(getShape(1), "Surround"));
}
-DECLARE_OOXMLIMPORT_TEST(testDMLGroupShapeCapitalization, "dml-groupshape-capitalization.docx")
-{
- // Capitalization inside a group shape was not imported
- uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
- uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xGroup->getByIndex(1), uno::UNO_QUERY)->getText();
- // 2nd line is written with uppercase letters
- CPPUNIT_ASSERT_EQUAL(style::CaseMap::UPPERCASE, getProperty<sal_Int16>(getRun(getParagraphOfText(2, xText), 1), "CharCaseMap"));
- // 3rd line has no capitalization
- CPPUNIT_ASSERT_EQUAL(style::CaseMap::NONE, getProperty<sal_Int16>(getRun(getParagraphOfText(3, xText), 1), "CharCaseMap"));
- // 4th line has written with small capitals
- CPPUNIT_ASSERT_EQUAL(style::CaseMap::SMALLCAPS, getProperty<sal_Int16>(getRun(getParagraphOfText(4, xText), 1), "CharCaseMap"));
- // 5th line has no capitalization
- CPPUNIT_ASSERT_EQUAL(style::CaseMap::NONE, getProperty<sal_Int16>(getRun(getParagraphOfText(5, xText), 1), "CharCaseMap"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testDMLGroupShapeParaAdjust, "dml-groupshape-paraadjust.docx")
{
// Paragraph adjustment inside a group shape was not imported
@@ -2100,63 +746,12 @@ DECLARE_OOXMLIMPORT_TEST(testDMLGroupShapeParaAdjust, "dml-groupshape-paraadjust
CPPUNIT_ASSERT_EQUAL(sal_Int16(style::ParagraphAdjust_LEFT), getProperty<sal_Int16>(getRun(getParagraphOfText(7, xText), 1), "ParaAdjust"));
}
-DECLARE_OOXMLIMPORT_TEST(testPictureWithSchemeColor, "picture-with-schemecolor.docx")
-{
- // At the start of the document, a picture which has a color specified with a color scheme, lost
- // it's color during import.
- uno::Reference<beans::XPropertySet> xImage(getShape(1), uno::UNO_QUERY);
- uno::Reference<graphic::XGraphic> xGraphic = getProperty<uno::Reference<graphic::XGraphic> >(xImage, "Graphic");
- Graphic aVclGraphic(xGraphic);
- Bitmap aBitmap(aVclGraphic.GetBitmap());
- BitmapReadAccess* pAccess = aBitmap.AcquireReadAccess();
- CPPUNIT_ASSERT(pAccess);
- CPPUNIT_ASSERT_EQUAL(341L, pAccess->Width());
- CPPUNIT_ASSERT_EQUAL(181L, pAccess->Height());
- Color aColor(pAccess->GetPixel(30, 120));
- CPPUNIT_ASSERT_EQUAL(aColor.GetColor(), RGB_COLORDATA( 0xb1, 0xc8, 0xdd ));
- aColor = pAccess->GetPixel(130, 260);
- CPPUNIT_ASSERT_EQUAL(aColor.GetColor(), RGB_COLORDATA( 0xb1, 0xc8, 0xdd ));
- Bitmap::ReleaseAccess(pAccess);
-}
-
DECLARE_OOXMLIMPORT_TEST(testTdf99135, "tdf99135.docx")
{
// This was 0, crop was ignored on VML import.
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1825), getProperty<text::GraphicCrop>(getShape(1), "GraphicCrop").Bottom);
}
-DECLARE_OOXMLIMPORT_TEST(testFdo69656, "Table_cell_auto_width_fdo69656.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(8154), getProperty<sal_Int32>(xTables->getByIndex(0), "Width"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFloatingTablesAnchor, "floating-tables-anchor.docx")
-{
- // Problem was one of the two text frames was anchored to the other text frame
- // Both frames should be anchored to the paragraph with the text "Anchor point"
- uno::Reference<text::XTextContent> xTextContent(getShape(1), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xRange(xTextContent->getAnchor(), uno::UNO_QUERY);
- uno::Reference<text::XText> xText(xRange->getText(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(OUString("Anchor point"), xText->getString());
-
- xTextContent.set(getShape(2), uno::UNO_QUERY);
- xRange.set(xTextContent->getAnchor(), uno::UNO_QUERY);
- xText.set(xRange->getText(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(OUString("Anchor point"), xText->getString());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testAnnotationFormatting, "annotation-formatting.docx")
-{
- uno::Reference<beans::XPropertySet> xTextField = getProperty< uno::Reference<beans::XPropertySet> >(getRun(getParagraph(2), 2), "TextField");
- uno::Reference<text::XText> xText = getProperty< uno::Reference<text::XText> >(xTextField, "TextRange");
- // Make sure we test the right annotation.
- uno::Reference<text::XTextRange> xParagraph = getParagraphOfText(1, xText, "days");
- // Formatting was lost: the second text portion was NONE, not SINGLE.
- CPPUNIT_ASSERT_EQUAL(awt::FontUnderline::SINGLE, getProperty<sal_Int16>(getRun(xParagraph, 1), "CharUnderline"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testTdf85523, "tdf85523.docx")
{
auto xTextField = getProperty< uno::Reference<beans::XPropertySet> >(getRun(getParagraph(1), 6), "TextField");
@@ -2165,121 +760,12 @@ DECLARE_OOXMLIMPORT_TEST(testTdf85523, "tdf85523.docx")
getParagraphOfText(1, xText, "comment");
}
-DECLARE_OOXMLIMPORT_TEST(testDMLGroupShapeRunFonts, "dml-groupshape-runfonts.docx")
-{
- // Fonts defined by w:rFonts was not imported and so the font specified by a:fontRef was used.
- uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
- uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xGroup->getByIndex(1), uno::UNO_QUERY)->getText();
- uno::Reference<text::XTextRange> xRun = getRun(getParagraphOfText(1, xText),1);
- CPPUNIT_ASSERT_EQUAL(OUString("Arial"), getProperty<OUString>(xRun, "CharFontName"));
- CPPUNIT_ASSERT_EQUAL(OUString("Arial Unicode MS"), getProperty<OUString>(xRun, "CharFontNameComplex"));
- CPPUNIT_ASSERT_EQUAL(OUString("MS Mincho"), getProperty<OUString>(xRun, "CharFontNameAsian"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testStrict, "strict.docx")
-{
- uno::Reference<beans::XPropertySet> xPageStyle(getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
- // This was only 127, pt suffix was ignored, so this got parsed as twips instead of points.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(72 * 20)), getProperty<sal_Int32>(xPageStyle, "BottomMargin"));
- // This was only 1397, same issue
- CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(792 * 20)), getProperty<sal_Int32>(xPageStyle, "Height"));
- // Text was missing, due to not handling the strict namespaces.
- getParagraph(1, "Hello world!");
-
- // Header in the document caused a crash on import.
- uno::Reference<text::XText> xHeaderText(xPageStyle->getPropertyValue("HeaderText"), uno::UNO_QUERY);
- getParagraphOfText(1, xHeaderText, "This is a header.");
-
- // Picture was missing.
- uno::Reference<lang::XServiceInfo> xServiceInfo(getShape(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.text.TextGraphicObject"));
-
- // SmartArt was missing.
- xServiceInfo.set(getShape(2), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.drawing.GroupShape"));
-
- // Chart was missing.
- xServiceInfo.set(getShape(3), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.text.TextEmbeddedObject"));
-
- // Math was missing.
- xServiceInfo.set(getShape(4), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.text.TextEmbeddedObject"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testStrictLockedcanvas, "strict-lockedcanvas.docx")
{
// locked canvas shape was missing.
getShape(1);
}
-DECLARE_OOXMLIMPORT_TEST(testSmartartStrict, "strict-smartart.docx")
-{
- uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
- // This was 0, SmartArt was visually missing.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(6), xGroup->getCount()); // 3 ellipses + 3 arrows
-}
-
-DECLARE_OOXMLIMPORT_TEST(testLibreOfficeHang, "frame-wrap-auto.docx")
-{
- // fdo#72775
- // This was text::WrapTextMode_NONE.
- CPPUNIT_ASSERT_EQUAL(text::WrapTextMode_DYNAMIC, getProperty<text::WrapTextMode>(getShape(1), "Surround"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testI124106, "i124106.docx")
-{
- // This was 2.
- CPPUNIT_ASSERT_EQUAL(1, getPages());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testLargeTwips, "large-twips.docx" )
-{
- // cp#1000043: MSO seems to ignore large twips values, we didn't, which resulted in different
- // layout of broken documents (text not visible in this specific document).
- OUString width = parseDump( "/root/page/body/tab/row[1]/cell[1]/txt/infos/bounds", "width" );
- CPPUNIT_ASSERT( width.toInt32() > 0 );
-}
-
-DECLARE_OOXMLIMPORT_TEST(testNegativeCellMarginTwips, "negative-cell-margin-twips.docx" )
-{
- // Slightly related to cp#1000043, the twips value was negative, which wrapped around somewhere,
- // while MSO seems to ignore that as well.
- OUString width = parseDump( "/root/page/body/tab/row[1]/cell[1]/txt/infos/bounds", "width" );
- CPPUNIT_ASSERT( width.toInt32() > 0 );
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo38414, "fdo38414.docx" )
-{
- // The cells in the last (4th) column were merged properly and so the result didn't have the same height.
- // (Since w:gridBefore is worked around by faking another cell in the row, so column count is thus 5
- // instead of 4, therefore compare height of cells 4 and 5 rather than 3 and 4.)
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<table::XTableColumns> xTableColumns(xTextTable->getColumns(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL( sal_Int32( 5 ), xTableColumns->getCount());
- OUString height3 = parseDump("/root/page/body/tab/row[1]/cell[4]/infos/bounds", "height" );
- OUString height4 = parseDump("/root/page/body/tab/row[1]/cell[5]/infos/bounds", "height" );
- CPPUNIT_ASSERT_EQUAL( height3, height4 );
-}
-
-DECLARE_OOXMLIMPORT_TEST(test_extra_image, "test_extra_image.docx" )
-{
- // fdo#74652 Check there is no shape added to the doc during import
- uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xDraws->getCount());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo74401, "fdo74401.docx")
-{
- uno::Reference<drawing::XShapes> xGroupShape(getShape(1), uno::UNO_QUERY);
- uno::Reference<drawing::XShapeDescriptor> xShape(xGroupShape->getByIndex(1), uno::UNO_QUERY);
- // The triangle (second child) was a TextShape before, so it was shown as a rectangle.
- CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.CustomShape"), xShape->getShapeType());
-}
-
DECLARE_OOXMLIMPORT_TEST(testFdo75722vml, "fdo75722-vml.docx")
{
uno::Reference<drawing::XShape> xShape = getShape(1);
@@ -2318,163 +804,6 @@ DECLARE_OOXMLIMPORT_TEST(testFdo55381, "fdo55381.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int16(4), xCursor->getPage());
}
-DECLARE_OOXMLIMPORT_TEST(testGridBefore, "gridbefore.docx")
-{
- // w:gridBefore is faked by inserting two cells without border (because Writer can't do non-rectangular tables).
- // So check the first cell in the first row is in fact 3rd and that it's more to the right than the second
- // cell on the second row.
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<table::XTableColumns> xTableColumns(xTextTable->getColumns(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL( sal_Int32( 3 ), xTableColumns->getCount());
- OUString textA3 = parseDump("/root/page/body/tab/row[1]/cell[3]/txt/text()" );
- OUString leftA3 = parseDump("/root/page/body/tab/row[1]/cell[3]/infos/bounds", "left" );
- OUString leftB2 = parseDump("/root/page/body/tab/row[2]/cell[2]/infos/bounds", "left" );
- CPPUNIT_ASSERT_EQUAL( OUString( "A3" ), textA3 );
- CPPUNIT_ASSERT( leftA3.toInt32() > leftB2.toInt32());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testMsoBrightnessContrast, "msobrightnesscontrast.docx")
-{
- uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<drawing::XShape> image(getShape(1), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> imageProperties(image, uno::UNO_QUERY);
- uno::Reference<graphic::XGraphic> graphic;
- imageProperties->getPropertyValue( "Graphic" ) >>= graphic;
- uno::Reference<awt::XBitmap> bitmap(graphic, uno::UNO_QUERY);
- Graphic aVclGraphic(graphic);
- Bitmap aBitmap(aVclGraphic.GetBitmap());
- BitmapReadAccess* pAccess = aBitmap.AcquireReadAccess();
- CPPUNIT_ASSERT(pAccess);
- CPPUNIT_ASSERT_EQUAL(58L, pAccess->Width());
- CPPUNIT_ASSERT_EQUAL(320L, pAccess->Height());
- Color aColor(pAccess->GetPixel(30, 20));
- CPPUNIT_ASSERT_EQUAL(aColor.GetColor(), RGB_COLORDATA( 0xce, 0xce, 0xce ));
- Bitmap::ReleaseAccess(pAccess);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testChartSize, "chart-size.docx")
-{
- // When chart was in a TextFrame, its size was too large.
- uno::Reference<text::XTextEmbeddedObjectsSupplier> xTextEmbeddedObjectsSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xEmbeddedObjects(xTextEmbeddedObjectsSupplier->getEmbeddedObjects(), uno::UNO_QUERY);
- // This was 10954.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(6008), getProperty<sal_Int32>(xEmbeddedObjects->getByIndex(0), "Width"));
-
- // Layout modified the document when it had this chart.
- uno::Reference<util::XModifiable> xModifiable(mxComponent, uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(false, bool(xModifiable->isModified()));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testInlineGroupshape, "inline-groupshape.docx")
-{
- // Inline groupshape was in the background, so it was hidden sometimes by other shapes.
- CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(getShape(1), "Opaque"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo78883, "fdo78883.docx")
-{
- // fdo#78883 : LO was getting hang while opening document
- // Checking there is a single page after loading a doc in LO.
- uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
- uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
- xCursor->jumpToLastPage();
-
- // Check to make sure the document loaded. Note that the page number may
- // be 1 or 2 depending on the environment.
- CPPUNIT_ASSERT(xCursor->getPage() > sal_Int16(0));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo79535, "fdo79535.docx")
-{
- // fdo#79535 : LO was crashing while opening document
- // Checking there is a single page after loading a doc successfully in LO.
- uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
- uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
- xCursor->jumpToLastPage();
- CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testBnc875718, "bnc875718.docx")
-{
- // The frame in the footer must not accidentally end up in the document body.
- // The easiest way for this to test I've found is checking that
- // xray ThisComponent.TextFrames.GetByIndex( index ).Anchor.Text.ImplementationName
- // is not SwXBodyText but rather SwXHeadFootText
- uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
- for( int i = 0;
- i < xIndexAccess->getCount();
- ++i )
- {
- uno::Reference<text::XTextFrame> frame(xIndexAccess->getByIndex( i ), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> range(frame->getAnchor(), uno::UNO_QUERY);
- uno::Reference<lang::XServiceInfo> text(range->getText(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL( OUString( "SwXHeadFootText" ), text->getImplementationName());
- }
- // Also check that the footer contents are not in the body text.
- uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XText> text(textDocument->getText(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL( OUString( "Text" ), text->getString());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testCaption, "caption.docx")
-{
- uno::Reference<beans::XPropertySet> xStyle(getStyles("ParagraphStyles")->getByName("Caption"), uno::UNO_QUERY);
- // This was awt::FontSlant_ITALIC: Writer default was used instead of what is in the document.
- CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, getProperty<awt::FontSlant>(xStyle, "CharPosture"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testGroupshapeTrackedchanges, "groupshape-trackedchanges.docx")
-{
- uno::Reference<drawing::XShapes> xGroup(getShape(1), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xShape(xGroup->getByIndex(0), uno::UNO_QUERY);
- // Shape text was completely missing, ensure inserted text is available.
- CPPUNIT_ASSERT_EQUAL(OUString(" Inserted"), xShape->getString());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo78939, "fdo78939.docx")
-{
- // fdo#78939 : LO hanged while opening issue document
-
- // Whenever a para-style was applied to a Numbering format level,
- // LO incorrectly also changed the para-style..
-
- // check that file opens and does not hang while opening and also
- // check that an incorrect numbering style is not applied ...
- CPPUNIT_ASSERT_EQUAL(OUString(), getProperty<OUString>(getParagraph(1), "NumberingStyleName"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFootnote, "footnote.docx")
-{
- uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xFootnote(xFootnotes->getByIndex(0), uno::UNO_QUERY);
- OUString aFootnote = xFootnote->getString();
- // Ensure there are no additional newlines after "bar".
- CPPUNIT_ASSERT(aFootnote.endsWith("bar"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTableBtlrCenter, "table-btlr-center.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
- // Cell vertical alignment was NONE, should be CENTER.
- CPPUNIT_ASSERT_EQUAL(text::VertOrientation::CENTER, getProperty<sal_Int16>(xTable->getCellByName("A2"), "VertOrient"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testFdo80555, "fdo80555.docx")
-{
- uno::Reference<drawing::XShape> xShape = getShape(1);
- // Shape was wrongly placed at X=0, Y=0
- CPPUNIT_ASSERT_EQUAL(sal_Int32(3318), xShape->getPosition().X);
- CPPUNIT_ASSERT_EQUAL(sal_Int32(247), xShape->getPosition().Y);
-}
-
DECLARE_OOXMLIMPORT_TEST(testFdo76803, "fdo76803.docx")
{
// The ContourPolyPolygon was wrong
@@ -2527,19 +856,6 @@ DECLARE_OOXMLIMPORT_TEST(testFloatingTableSectionColumns, "floating-table-sectio
CPPUNIT_ASSERT( tableWidth.toInt32() > 10000 );
}
-DECLARE_OOXMLIMPORT_TEST(testHidemark, "hidemark.docx")
-{
- // Problem was that <w:hideMark> cell property was ignored.
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), uno::UNO_QUERY);
- // Height should be minimal
- CPPUNIT_ASSERT_EQUAL(convertTwipToMm100(MINLAY), getProperty<sal_Int64>(xTableRows->getByIndex(1), "Height"));
- // Size type was MIN, should be FIX to avoid considering the end of paragraph marker.
- CPPUNIT_ASSERT_EQUAL(text::SizeType::FIX, getProperty<sal_Int16>(xTableRows->getByIndex(1), "SizeType"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testBnc519228OddBreaks, "bnc519228_odd-breaks.docx")
{
// Check that all the normal styles are not set as right-only, those should be only those used after odd page breaks.
@@ -2572,26 +888,11 @@ DECLARE_OOXMLIMPORT_TEST(testBnc519228OddBreaks, "bnc519228_odd-breaks.docx")
getParagraphOfText( 1, getProperty< uno::Reference<text::XText> >(page5Style, "HeaderText"), "This is the header for odd pages");
}
-DECLARE_OOXMLIMPORT_TEST(testBnc891663, "bnc891663.docx")
-{
- // The image should be inside a cell, so the text in the following cell should be below it.
- int imageTop = parseDump("/root/page/body/tab/row[1]/cell[2]/txt[1]/anchored/fly/infos/bounds", "top").toInt32();
- int imageHeight = parseDump("/root/page/body/tab/row[1]/cell[2]/txt[1]/anchored/fly/infos/bounds", "height").toInt32();
- int textNextRowTop = parseDump("/root/page/body/tab/row[2]/cell[1]/txt[1]/infos/bounds", "top").toInt32();
- CPPUNIT_ASSERT( textNextRowTop >= imageTop + imageHeight );
-}
-
static OString dateTimeToString( const util::DateTime& dt )
{
return DateTimeToOString( DateTime( Date( dt.Day, dt.Month, dt.Year ), tools::Time( dt.Hours, dt.Minutes, dt.Seconds )));
}
-DECLARE_OOXMLIMPORT_TEST(testTcwRounding, "tcw-rounding.docx")
-{
- // Width of the A1 cell in twips was 3200, due to a rounding error.
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3201), parseDump("/root/page/body/tab/row/cell[1]/infos/bounds", "width").toInt32());
-}
-
DECLARE_OOXMLIMPORT_TEST(testBnc821804, "bnc821804.docx")
{
CPPUNIT_ASSERT_EQUAL( OUString( "TITLE" ), getRun( getParagraph( 1 ), 1 )->getString());
@@ -2696,59 +997,6 @@ DECLARE_OOXMLIMPORT_TEST(testBnc821804, "bnc821804.docx")
CPPUNIT_ASSERT_EQUAL(false,getProperty<bool>(getRun(getParagraph(10), 3), "IsStart"));
}
-DECLARE_OOXMLIMPORT_TEST(testFdo85542, "fdo85542.docx")
-{
- uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xBookmarksByIdx(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(xBookmarksByIdx->getCount(), static_cast<sal_Int32>(3));
- uno::Reference<container::XNameAccess> xBookmarksByName(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xBookmarksByName->hasByName("B1"));
- CPPUNIT_ASSERT(xBookmarksByName->hasByName("B2"));
- CPPUNIT_ASSERT(xBookmarksByName->hasByName("B3"));
- // B1
- uno::Reference<text::XTextContent> xContent1(xBookmarksByName->getByName("B1"), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xRange1(xContent1->getAnchor(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(xRange1->getString(), OUString("ABB"));
- // B2
- uno::Reference<text::XTextContent> xContent2(xBookmarksByName->getByName("B2"), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xRange2(xContent2->getAnchor(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(xRange2->getString(), OUString("BBC"));
- // B3 -- testing a collapsed bookmark
- uno::Reference<text::XTextContent> xContent3(xBookmarksByName->getByName("B3"), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xRange3(xContent3->getAnchor(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(xRange3->getString(), OUString(""));
- uno::Reference<text::XText> xText(xRange3->getText( ), uno::UNO_QUERY);
- uno::Reference<text::XTextCursor> xNeighborhoodCursor(xText->createTextCursor( ), uno::UNO_QUERY);
- xNeighborhoodCursor->gotoRange(xRange3, false);
- xNeighborhoodCursor->goLeft(1, false);
- xNeighborhoodCursor->goRight(2, true);
- uno::Reference<text::XTextRange> xTextNeighborhood(xNeighborhoodCursor, uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(xTextNeighborhood->getString(), OUString("AB"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testChtOutlineNumberingOoxml, "chtoutline.docx")
-{
- const sal_Unicode aExpectedPrefix[2] = { 0x7b2c, 0x0020 };
- const sal_Unicode aExpectedSuffix[2] = { 0x0020, 0x7ae0 };
- uno::Reference< text::XChapterNumberingSupplier > xChapterNumberingSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference< container::XIndexAccess> xLevels(xChapterNumberingSupplier->getChapterNumberingRules());
- uno::Sequence<beans::PropertyValue> aProps;
- xLevels->getByIndex(0) >>= aProps; // 1st level
-
- OUString aSuffix,aPrefix;
- for (int i = 0; i < aProps.getLength(); ++i)
- {
- const beans::PropertyValue& rProp = aProps[i];
-
- if (rProp.Name == "Suffix")
- aSuffix = rProp.Value.get<OUString>();
- if (rProp.Name == "Prefix")
- aPrefix = rProp.Value.get<OUString>();
- }
- CPPUNIT_ASSERT_EQUAL(OUString(aExpectedPrefix,SAL_N_ELEMENTS(aExpectedPrefix)), aPrefix);
- CPPUNIT_ASSERT_EQUAL(OUString(aExpectedSuffix,SAL_N_ELEMENTS(aExpectedSuffix)), aSuffix);
-}
-
DECLARE_OOXMLIMPORT_TEST(testFdo87488, "fdo87488.docx")
{
// The shape on the right (index 0, CustomShape within a
@@ -2770,15 +1018,6 @@ DECLARE_OOXMLIMPORT_TEST(testFdo87488, "fdo87488.docx")
}
}
-DECLARE_OOXMLIMPORT_TEST(mathtype, "mathtype.docx")
-{
- uno::Reference<text::XTextEmbeddedObjectsSupplier> xTextEmbeddedObjectsSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xEmbeddedObjects(xTextEmbeddedObjectsSupplier->getEmbeddedObjects(), uno::UNO_QUERY);
- // This failed as the Model property was empty.
- auto xModel = getProperty< uno::Reference<lang::XServiceInfo> >(xEmbeddedObjects->getByIndex(0), "Model");
- CPPUNIT_ASSERT(xModel->supportsService("com.sun.star.formula.FormulaProperties"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testTdf49073, "tdf49073.docx")
{
// test case for Asisan phontic guide ( ruby text.)
@@ -2795,190 +1034,8 @@ DECLARE_OOXMLIMPORT_TEST(testTdf49073, "tdf49073.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_RIGHT) ,getProperty<sal_Int16>(getParagraph(6)->getStart(),"RubyAdjust"));
}
-DECLARE_OOXMLIMPORT_TEST(testTdf8255, "tdf8255.docx")
-{
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xTextDocument, uno::UNO_QUERY);
- uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
- // This was 1: a full-page-wide multi-page floating table was imported as a TextFrame.
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), xDrawPage->getCount());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf87460, "tdf87460.docx")
-{
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XEndnotesSupplier> xEndnotesSupplier(xTextDocument, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xEndnotes = xEndnotesSupplier->getEndnotes();
- // This was 0: endnote was lost on import.
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), xEndnotes->getCount());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf90611, "tdf90611.docx")
-{
- uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
- uno::Reference<text::XText> xFootnoteText;
- xFootnotes->getByIndex(0) >>= xFootnoteText;
- // This was 11.
- CPPUNIT_ASSERT_EQUAL(10.f, getProperty<float>(getParagraphOfText(1, xFootnoteText), "CharHeight"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf89702, "tdf89702.docx")
-{
- // Get the first paragraph's numbering style's 2nd level's character style name.
- uno::Reference<text::XTextRange> xParagraph = getParagraph(1);
- auto xLevels = getProperty< uno::Reference<container::XIndexAccess> >(xParagraph, "NumberingRules");
- uno::Sequence<beans::PropertyValue> aLevel;
- xLevels->getByIndex(1) >>= aLevel; // 2nd level
- OUString aCharStyleName = std::find_if(aLevel.begin(), aLevel.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "CharStyleName"; })->Value.get<OUString>();
-
- // Make sure that the font name is Arial, this was Verdana.
- uno::Reference<beans::XPropertySet> xStyle(getStyles("CharacterStyles")->getByName(aCharStyleName), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(OUString("Arial"), getProperty<OUString>(xStyle, "CharFontName"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf86374, "tdf86374.docx")
-{
- uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), uno::UNO_QUERY);
- // btLr text direction was imported as FIX, it should be MIN to have enough space for the additionally entered paragraphs.
- CPPUNIT_ASSERT_EQUAL(text::SizeType::MIN, getProperty<sal_Int16>(xTableRows->getByIndex(0), "SizeType"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf87924, "tdf87924.docx")
-{
- uno::Reference<beans::XPropertySet> xPropertySet(getShape(1), uno::UNO_QUERY);
- comphelper::SequenceAsHashMap aGeometry(xPropertySet->getPropertyValue("CustomShapeGeometry"));
- // This was -270, the text rotation angle was set when it should not be rotated.
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), aGeometry["TextPreRotateAngle"].get<sal_Int32>());
-}
-
#endif
-DECLARE_OOXMLIMPORT_TEST(testIndents, "indents.docx")
-{
- //expected left margin and first line indent values
- static const sal_Int32 indents[] =
- {
- 0, 0,
- -2000, 0,
- -2000, 1000,
- -1000, -1000,
- 2000, -1000
- };
- uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XEnumerationAccess> xParaEnumAccess(textDocument->getText(), uno::UNO_QUERY);
- // list of paragraphs
- uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
- size_t paraIndex = 0;
- do
- {
- uno::Reference<lang::XServiceInfo> xServiceInfo;
- if (xParaEnum->nextElement() >>= xServiceInfo)
- {
- uno::Reference<beans::XPropertySet> const xPropertySet(xServiceInfo, uno::UNO_QUERY_THROW);
- sal_Int32 nIndent = 0;
- sal_Int32 nFirstLine = 0;
- xPropertySet->getPropertyValue("ParaLeftMargin") >>= nIndent;
- xPropertySet->getPropertyValue("ParaFirstLineIndent") >>= nFirstLine;
- CPPUNIT_ASSERT_EQUAL(indents[paraIndex * 2], nIndent);
- CPPUNIT_ASSERT_EQUAL(indents[paraIndex * 2 + 1], nFirstLine);
- ++paraIndex;
- }
- } while (xParaEnum->hasMoreElements());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf92454, "tdf92454.docx")
-{
- // The first paragraph had a large indentation / left margin as inheritance
- // in Word and Writer works differently, and no direct value was set to be
- // explicit.
- uno::Reference<beans::XPropertyState> xParagraph(getParagraph(1), uno::UNO_QUERY);
- // This was beans::PropertyState_DEFAULT_VALUE.
- CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DIRECT_VALUE, xParagraph->getPropertyState("ParaFirstLineIndent"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf95376, "tdf95376.docx")
-{
- uno::Reference<beans::XPropertyState> xParagraph(getParagraph(2), uno::UNO_QUERY);
- // This was beans::PropertyState_DIRECT_VALUE: indentation-from-numbering
- // did not have priority over indentation-from-paragraph-style, due to a
- // filter workaround that's not correct here.
- CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DEFAULT_VALUE, xParagraph->getPropertyState("ParaFirstLineIndent"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf92124, "tdf92124.docx")
-{
- // Get the second paragraph's numbering style's 1st level's suffix.
- uno::Reference<text::XTextRange> xParagraph = getParagraph(2);
- auto xLevels = getProperty< uno::Reference<container::XIndexAccess> >(xParagraph, "NumberingRules");
- uno::Sequence<beans::PropertyValue> aLevel;
- xLevels->getByIndex(0) >>= aLevel; // 1st level
- OUString aSuffix = std::find_if(aLevel.begin(), aLevel.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "Suffix"; })->Value.get<OUString>();
- // Make sure it's empty as the source document contains <w:suff w:val="nothing"/>.
- CPPUNIT_ASSERT(aSuffix.isEmpty());
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf90153, "tdf90153.docx")
-{
- // This was at-para, so the line-level VertOrientRelation was lost, resulting in an incorrect vertical position.
- CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER, getProperty<text::TextContentAnchorType>(getShape(1), "AnchorType"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf93919, "tdf93919.docx")
-{
- // This was 0, left margin was not inherited from the list style.
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1270), getProperty<sal_Int32>(getParagraph(1), "ParaLeftMargin"));
-}
-DECLARE_OOXMLIMPORT_TEST(testTdf91417, "tdf91417.docx")
-{
- // The first paragraph should contain a link to "http://www.google.com/"
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XTextCursor> xTextCursor(xTextDocument->getText()->createTextCursor( ), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xCursorProps(xTextCursor, uno::UNO_QUERY);
- OUString aValue;
- xCursorProps->getPropertyValue("HyperLinkURL") >>= aValue;
- CPPUNIT_ASSERT_EQUAL(OUString("http://www.google.com/"), aValue);
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf90810, "tdf90810short.docx")
-{
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XFootnotesSupplier> xFootnoteSupp(xTextDocument, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xFootnoteIdxAcc(xFootnoteSupp->getFootnotes(), uno::UNO_QUERY);
- uno::Reference<text::XFootnote> xFootnote(xFootnoteIdxAcc->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<text::XText> xFootnoteText(xFootnote, uno::UNO_QUERY);
- rtl::OUString sFootnoteText = xFootnoteText->getString();
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(90), static_cast<sal_Int32>(sFootnoteText.getLength()));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf89165, "tdf89165.docx")
-{
- // This must not hang in layout
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf95777, "tdf95777.docx")
-{
- // This must not fail on open
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf94374, "hello.docx")
-{
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xText(xTextDocument->getText(), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xEnd = xText->getEnd();
- // This failed: it wasn't possible to insert a DOCX document into an existing Writer one.
- CPPUNIT_ASSERT(paste("tdf94374.docx", xEnd));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf83300, "tdf83300.docx")
-{
- // This was 'Contents Heading', which (in the original document) implied 'keep with next' on unexpected paragraphs.
- CPPUNIT_ASSERT_EQUAL(OUString("TOC Heading"), getProperty<OUString>(getParagraph(1), "ParaStyleName"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testTdf85232, "tdf85232.docx")
{
uno::Reference<drawing::XShapes> xShapes(getShapeByName("Group 219"), uno::UNO_QUERY);
@@ -2990,12 +1047,6 @@ DECLARE_OOXMLIMPORT_TEST(testTdf85232, "tdf85232.docx")
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2267), xShape->getPosition().X);
}
-DECLARE_OOXMLIMPORT_TEST(testTdf78902, "tdf78902.docx")
-{
- // This hung in layout.
- CPPUNIT_ASSERT_EQUAL(2, getPages());
-}
-
DECLARE_OOXMLIMPORT_TEST(testTdf95755, "tdf95755.docx")
{
/*
@@ -3011,16 +1062,6 @@ DECLARE_OOXMLIMPORT_TEST(testTdf95755, "tdf95755.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int32(10659), nWidth);
}
-DECLARE_OOXMLIMPORT_TEST(testTdf95775, "tdf95775.docx")
-{
- // This must not fail in layout
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf92157, "tdf92157.docx")
-{
- // A graphic with dimensions 0,0 should not fail on load
-}
-
DECLARE_OOXMLIMPORT_TEST(testTdf60351, "tdf60351.docx")
{
// Get the first image in the document and check its contour polygon.
@@ -3045,18 +1086,6 @@ DECLARE_OOXMLIMPORT_TEST(testTdf60351, "tdf60351.docx")
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aPolygon[5].Y);
}
-DECLARE_OOXMLIMPORT_TEST(testTdf97417, "section_break_numbering.docx")
-{
- // paragraph with numbering and section break was removed by writerfilter
- // but its numbering was copied to all following paragraphs
- CPPUNIT_ASSERT_MESSAGE("first paragraph missing numbering",
- getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), "NumberingRules").is());
- uno::Reference<beans::XPropertySet> const xProps(getParagraph(2), uno::UNO_QUERY_THROW);
- CPPUNIT_ASSERT_MESSAGE("second paragraph erroneous numbering",
- !xProps->getPropertyValue("NumberingRules").hasValue());
-
-}
-
DECLARE_OOXMLIMPORT_TEST(testTdf95970, "tdf95970.docx")
{
// First shape: the rotation should be -12.94 deg, it should be mirrored.
@@ -3084,14 +1113,6 @@ DECLARE_OOXMLIMPORT_TEST(testTdf95970, "tdf95970.docx")
CPPUNIT_ASSERT(basegfx::fTools::equal(aTransform.Line3.Column3, 1.0));
}
-DECLARE_OOXMLIMPORT_TEST(testTdf94043, "tdf94043.docx")
-{
- auto xTextSection = getProperty< uno::Reference<beans::XPropertySet> >(getParagraph(2), "TextSection");
- auto xTextColumns = getProperty< uno::Reference<text::XTextColumns> >(xTextSection, "TextColumns");
- // This was 0, the separator line was not visible due to 0 width.
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), getProperty<sal_Int32>(xTextColumns, "SeparatorLineWidth"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testTdf96674, "tdf96674.docx")
{
uno::Reference<drawing::XShape> xShape(getShape(1), uno::UNO_QUERY);
@@ -3102,39 +1123,6 @@ DECLARE_OOXMLIMPORT_TEST(testTdf96674, "tdf96674.docx")
CPPUNIT_ASSERT(aActualSize.Height > 0);
}
-DECLARE_OOXMLIMPORT_TEST(testTdf92045, "tdf92045.docx")
-{
- // This was true, <w:effect w:val="none"/> resulted in setting the blinking font effect.
- CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(getRun(getParagraph(1), 1), "CharFlash"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf95213, "tdf95213.docx")
-{
- // Get the second paragraph's numbering style's 2nd level's character style name.
- uno::Reference<text::XTextRange> xParagraph = getParagraph(2);
- auto xLevels = getProperty< uno::Reference<container::XIndexAccess> >(xParagraph, "NumberingRules");
- uno::Sequence<beans::PropertyValue> aLevel;
- xLevels->getByIndex(1) >>= aLevel; // 2nd level
- OUString aName = std::find_if(aLevel.begin(), aLevel.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "CharStyleName"; })->Value.get<OUString>();
-
- uno::Reference<beans::XPropertySet> xStyle(getStyles("CharacterStyles")->getByName(aName), uno::UNO_QUERY);
- // This was awt::FontWeight::BOLD.
- CPPUNIT_ASSERT_EQUAL(awt::FontWeight::NORMAL, getProperty<float>(xStyle, "CharWeight"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testTdf97371, "tdf97371.docx")
-{
- SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument *>(mxComponent.get());
- CPPUNIT_ASSERT(pTextDoc);
- SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc();
- SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0);
- SdrObject* pShape = pPage->GetObj(0);
- SdrObject* pTextBox = pPage->GetObj(1);
- long nDiff = std::abs(pShape->GetSnapRect().Top() - pTextBox->GetSnapRect().Top());
- // The top of the two shapes were 410 and 3951, now it should be 3950 and 3951.
- CPPUNIT_ASSERT(nDiff < 10);
-}
-
// base class to supply a helper method for testHFLinkToPrev
class testHFBase : public Test
{
@@ -3251,27 +1239,15 @@ DECLARE_OOXMLIMPORT_TEST(testTdf99074, "tdf99074.docx")
CPPUNIT_ASSERT(getProperty<bool>(xSettings, "InBrowseMode"));
}
-DECLARE_OOXMLIMPORT_TEST(testTdf99140, "tdf99140.docx")
-{
- uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xTextDocument, uno::UNO_QUERY);
- uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
- // This was 1: a multi-page floating table was imported as a TextFrame.
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), xDrawPage->getCount());
-
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xTableProperties(xTables->getByIndex(1), uno::UNO_QUERY);
- // This was text::HoriOrientation::NONE, the second table was too wide due to this.
- CPPUNIT_ASSERT_EQUAL(text::HoriOrientation::LEFT_AND_WIDTH, getProperty<sal_Int16>(xTableProperties, "HoriOrient"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testTdf100830, "tdf100830.docx")
{
// FillTransparence wasn't imported, this was 0.
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(30), getProperty<sal_Int16>(getShape(1), "FillTransparence"));
}
+
+// tests should only be added to ooxmlIMPORT *if* they fail round-tripping in ooxmlEXPORT
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */