summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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: */