diff options
-rw-r--r-- | sw/CppunitTest_sw_ooxmlexport8.mk | 104 | ||||
-rw-r--r-- | sw/CppunitTest_sw_ooxmlexport9.mk | 16 | ||||
-rw-r--r-- | sw/Module_sw.mk | 2 | ||||
-rw-r--r-- | sw/ooxmlexport_setup.mk | 1 | ||||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/all_gaps_word.docx (renamed from sw/qa/extras/ooxmlimport/data/all_gaps_word.docx) | bin | 10226 -> 10226 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/annotation-formatting.docx (renamed from sw/qa/extras/ooxmlimport/data/annotation-formatting.docx) | bin | 14298 -> 14298 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/bnc780044_spacing.docx (renamed from sw/qa/extras/ooxmlimport/data/bnc780044_spacing.docx) | bin | 7437 -> 7437 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/bnc865381.docx (renamed from sw/qa/extras/ooxmlimport/data/bnc865381.docx) | bin | 19510 -> 19510 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/bnc875718.docx (renamed from sw/qa/extras/ooxmlimport/data/bnc875718.docx) | bin | 7369 -> 7369 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/bnc891663.docx (renamed from sw/qa/extras/ooxmlimport/data/bnc891663.docx) | bin | 7911 -> 7911 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/caption.docx (renamed from sw/qa/extras/ooxmlimport/data/caption.docx) | bin | 13773 -> 13773 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/chart-prop.docx (renamed from sw/qa/extras/ooxmlimport/data/chart-prop.docx) | bin | 17749 -> 17749 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/chart-size.docx (renamed from sw/qa/extras/ooxmlimport/data/chart-size.docx) | bin | 18128 -> 18128 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/chtoutline.docx (renamed from sw/qa/extras/ooxmlimport/data/chtoutline.docx) | bin | 15406 -> 15406 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/conditionalstyles-tbllook.docx (renamed from sw/qa/extras/ooxmlimport/data/conditionalstyles-tbllook.docx) | bin | 11531 -> 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) | bin | 15770 -> 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) | bin | 17676 -> 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) | bin | 16971 -> 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) | bin | 19727 -> 19727 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo38414.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo38414.docx) | bin | 21800 -> 21800 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo43093b.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo43093.docx) | bin | 12959 -> 12959 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo46361.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo46361.docx) | bin | 13791 -> 13791 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo49940.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo49940.docx) | bin | 9909 -> 9909 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo52208.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo52208.docx) | bin | 13356 -> 13356 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo53985.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo53985.docx) | bin | 20115 -> 20115 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo55187.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo55187.docx) | bin | 12759 -> 12759 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo59273.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo59273.docx) | bin | 4358 -> 4358 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo59638.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo59638.docx) | bin | 12166 -> 12166 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo60922.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo60922.docx) | bin | 4503 -> 4503 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo61343.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo61343.docx) | bin | 114220 -> 114220 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo63685.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo63685.docx) | bin | 10964 -> 10964 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo65090.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo65090.docx) | bin | 10409 -> 10409 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo65632.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo65632.docx) | bin | 12862 -> 12862 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo66474.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo66474.docx) | bin | 96326 -> 96326 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo68607.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo68607.docx) | bin | 36117 -> 36117 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo69548.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo69548.docx) | bin | 3802 -> 3802 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo70457.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo70457.docx) | bin | 20296 -> 20296 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo72560.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo72560.docx) | bin | 15144 -> 15144 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo73389.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo73389.docx) | bin | 11067 -> 11067 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo74357.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo74357.docx) | bin | 11930 -> 11930 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo74401.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo74401.docx) | bin | 18425 -> 18425 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo74745.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo74745.docx) | bin | 32560 -> 32560 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo78883.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo78883.docx) | bin | 18303 -> 18303 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo78904.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo78904.docx) | bin | 14388 -> 14388 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo78939.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo78939.docx) | bin | 73680 -> 73680 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo79535.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo79535.docx) | bin | 22547 -> 22547 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo79738.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo79738.docx) | bin | 10159 -> 10159 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo80555.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo80555.docx) | bin | 15018 -> 15018 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo81486.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo81486.docx) | bin | 13354 -> 13354 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo85542.docx (renamed from sw/qa/extras/ooxmlimport/data/fdo85542.docx) | bin | 10299 -> 10299 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/file_crash.docx (renamed from sw/qa/extras/ooxmlimport/data/file_crash.docx) | bin | 17243 -> 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) | bin | 16348 -> 16348 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/footnote.docx (renamed from sw/qa/extras/ooxmlimport/data/footnote.docx) | bin | 15779 -> 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) | bin | 10348 -> 10348 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/gridbefore.docx (renamed from sw/qa/extras/ooxmlimport/data/gridbefore.docx) | bin | 4987 -> 4987 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/groupshape-rotation.docx (renamed from sw/qa/extras/ooxmlimport/data/groupshape-rotation.docx) | bin | 10462 -> 10462 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/groupshape-smarttag.docx (renamed from sw/qa/extras/ooxmlimport/data/groupshape-smarttag.docx) | bin | 10694 -> 10694 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/groupshape-trackedchanges.docx (renamed from sw/qa/extras/ooxmlimport/data/groupshape-trackedchanges.docx) | bin | 17667 -> 17667 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/hello.docx (renamed from sw/qa/extras/ooxmlimport/data/hello.docx) | bin | 12578 -> 12578 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/hidemark.docx (renamed from sw/qa/extras/ooxmlimport/data/hidemark.docx) | bin | 12816 -> 12816 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/i124106.docx (renamed from sw/qa/extras/ooxmlimport/data/i124106.docx) | bin | 4810 -> 4810 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/imgshadow.docx (renamed from sw/qa/extras/ooxmlimport/data/imgshadow.docx) | bin | 29629 -> 29629 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/indentation.docx (renamed from sw/qa/extras/ooxmlimport/data/indentation.docx) | bin | 16945 -> 16945 bytes | |||
-rwxr-xr-x | sw/qa/extras/ooxmlexport/data/indents.docx (renamed from sw/qa/extras/ooxmlimport/data/indents.docx) | bin | 11553 -> 11553 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/inline-groupshape.docx (renamed from sw/qa/extras/ooxmlimport/data/inline-groupshape.docx) | bin | 16992 -> 16992 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/large-twips.docx (renamed from sw/qa/extras/ooxmlimport/data/large-twips.docx) | bin | 5365 -> 5365 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/libreoffice.png (renamed from sw/qa/extras/ooxmlimport/data/libreoffice.png) | bin | 767 -> 767 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/mathtype.docx (renamed from sw/qa/extras/ooxmlimport/data/mathtype.docx) | bin | 12533 -> 12533 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/mce-nested.docx (renamed from sw/qa/extras/ooxmlimport/data/mce-nested.docx) | bin | 32734 -> 32734 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/mce-wpg.docx (renamed from sw/qa/extras/ooxmlimport/data/mce-wpg.docx) | bin | 17404 -> 17404 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/missing-path.docx (renamed from sw/qa/extras/ooxmlimport/data/missing-path.docx) | bin | 15860 -> 15860 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/msobrightnesscontrast.docx (renamed from sw/qa/extras/ooxmlimport/data/msobrightnesscontrast.docx) | bin | 18972 -> 18972 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n592908-frame.docx (renamed from sw/qa/extras/ooxmlimport/data/n592908-frame.docx) | bin | 13589 -> 13589 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n592908-picture.docx (renamed from sw/qa/extras/ooxmlimport/data/n592908-picture.docx) | bin | 62593 -> 62593 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n652364.docx (renamed from sw/qa/extras/ooxmlimport/data/n652364.docx) | bin | 8975 -> 8975 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n693238.docx (renamed from sw/qa/extras/ooxmlimport/data/n693238.docx) | bin | 9933 -> 9933 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n705956-1.docx (renamed from sw/qa/extras/ooxmlimport/data/n705956-1.docx) | bin | 7861 -> 7861 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n705956-2.docx (renamed from sw/qa/extras/ooxmlimport/data/n705956-2.docx) | bin | 9363 -> 9363 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n747461.docx (renamed from sw/qa/extras/ooxmlimport/data/n747461.docx) | bin | 6489 -> 6489 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n750255.docx (renamed from sw/qa/extras/ooxmlimport/data/n750255.docx) | bin | 10102 -> 10102 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n750935.docx (renamed from sw/qa/extras/ooxmlimport/data/n750935.docx) | bin | 57750 -> 57750 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n751054.docx (renamed from sw/qa/extras/ooxmlimport/data/n751054.docx) | bin | 13100 -> 13100 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n751117.docx (renamed from sw/qa/extras/ooxmlimport/data/n751117.docx) | bin | 10312 -> 10312 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n764005.docx (renamed from sw/qa/extras/ooxmlimport/data/n764005.docx) | bin | 13088 -> 13088 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n766481.docx (renamed from sw/qa/extras/ooxmlimport/data/n766481.docx) | bin | 10021 -> 10021 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n766487.docx (renamed from sw/qa/extras/ooxmlimport/data/n766487.docx) | bin | 9273 -> 9273 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n775906.docx (renamed from sw/qa/extras/ooxmlimport/data/n775906.docx) | bin | 11750 -> 11750 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n777337.docx (renamed from sw/qa/extras/ooxmlimport/data/n777337.docx) | bin | 13409 -> 13409 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n778828.docx (renamed from sw/qa/extras/ooxmlimport/data/n778828.docx) | bin | 10012 -> 10012 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n778836.docx (renamed from sw/qa/extras/ooxmlimport/data/n778836.docx) | bin | 9649 -> 9649 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n779630.docx (renamed from sw/qa/extras/ooxmlimport/data/n779630.docx) | bin | 12500 -> 12500 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n779642.docx (renamed from sw/qa/extras/ooxmlimport/data/n779642.docx) | bin | 85485 -> 85485 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n779834.docx (renamed from sw/qa/extras/ooxmlimport/data/n779834.docx) | bin | 22624 -> 22624 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n779941.docx (renamed from sw/qa/extras/ooxmlimport/data/n779941.docx) | bin | 10316 -> 10316 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n780563.docx (renamed from sw/qa/extras/ooxmlimport/data/n780563.docx) | bin | 24144 -> 24144 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n780843.docx (renamed from sw/qa/extras/ooxmlimport/data/n780843.docx) | bin | 12614 -> 12614 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n780843b.docx (renamed from sw/qa/extras/ooxmlimport/data/n780843b.docx) | bin | 13623 -> 13623 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n780853.docx (renamed from sw/qa/extras/ooxmlimport/data/n780853.docx) | bin | 9261 -> 9261 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n782345.docx (renamed from sw/qa/extras/ooxmlimport/data/n782345.docx) | bin | 12607 -> 12607 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n783638.docx (renamed from sw/qa/extras/ooxmlimport/data/n783638.docx) | bin | 19119 -> 19119 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n785767.docx (renamed from sw/qa/extras/ooxmlimport/data/n785767.docx) | bin | 12848 -> 12848 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n792778.docx (renamed from sw/qa/extras/ooxmlimport/data/n792778.docx) | bin | 15329 -> 15329 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n793262.docx (renamed from sw/qa/extras/ooxmlimport/data/n793262.docx) | bin | 15449 -> 15449 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n793998.docx (renamed from sw/qa/extras/ooxmlimport/data/n793998.docx) | bin | 13167 -> 13167 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n816593.docx (renamed from sw/qa/extras/ooxmlimport/data/n816593.docx) | bin | 17030 -> 17030 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n820509.docx (renamed from sw/qa/extras/ooxmlimport/data/n820509.docx) | bin | 10414 -> 10414 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/n830205.docx (renamed from sw/qa/extras/ooxmlimport/data/n830205.docx) | bin | 33186 -> 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) | bin | 5902 -> 5902 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/numbering1.docx (renamed from sw/qa/extras/ooxmlimport/data/numbering1.docx) | bin | 14346 -> 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) | bin | 10012 -> 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) | bin | 35489 -> 35489 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/rhbz1180114.docx (renamed from sw/qa/extras/ooxmlimport/data/rhbz1180114.docx) | bin | 3435 -> 3435 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/rprchange_closed.docx (renamed from sw/qa/extras/ooxmlimport/data/rprchange_closed.docx) | bin | 24695 -> 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) | bin | 5614 -> 5614 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/strict-smartart.docx (renamed from sw/qa/extras/ooxmlimport/data/strict-smartart.docx) | bin | 18661 -> 18661 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/strict.docx (renamed from sw/qa/extras/ooxmlimport/data/strict.docx) | bin | 25636 -> 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) | bin | 17672 -> 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) | bin | 12907 -> 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) | bin | 10297 -> 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) | bin | 10686 -> 10686 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/table-pagebreak.docx (renamed from sw/qa/extras/ooxmlimport/data/table-pagebreak.docx) | bin | 10148 -> 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) | bin | 10098 -> 10098 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tableborder-finedash.docx (renamed from sw/qa/extras/ooxmlimport/data/tableborder-finedash.docx) | bin | 10266 -> 10266 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tblr-height.docx (renamed from sw/qa/extras/ooxmlimport/data/tblr-height.docx) | bin | 10466 -> 10466 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tcw-rounding.docx (renamed from sw/qa/extras/ooxmlimport/data/tcw-rounding.docx) | bin | 14876 -> 14876 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf59699.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf59699.docx) | bin | 13232 -> 13232 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf78902.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf78902.docx) | bin | 30230 -> 30230 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf8255.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf8255.docx) | bin | 27607 -> 27607 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf83300.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf83300.docx) | bin | 9948 -> 9948 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf86374.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf86374.docx) | bin | 13194 -> 13194 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf87460.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf87460.docx) | bin | 17343 -> 17343 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf87924.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf87924.docx) | bin | 15925 -> 15925 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf89165.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf89165.docx) | bin | 89495 -> 89495 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf89702.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf89702.docx) | bin | 13147 -> 13147 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf90153.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf90153.docx) | bin | 4856 -> 4856 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf90611.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf90611.docx) | bin | 14706 -> 14706 bytes | |||
-rwxr-xr-x | sw/qa/extras/ooxmlexport/data/tdf90810short.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf90810short.docx) | bin | 22286 -> 22286 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf91122.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf91122.docx) | bin | 16946 -> 16946 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf91260.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf91260.docx) | bin | 16422 -> 16422 bytes | |||
-rwxr-xr-x | sw/qa/extras/ooxmlexport/data/tdf91417.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf91417.docx) | bin | 13007 -> 13007 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf92045.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf92045.docx) | bin | 12629 -> 12629 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf92124.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf92124.docx) | bin | 7042 -> 7042 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf92157.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf92157.docx) | bin | 25188 -> 25188 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf92454.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf92454.docx) | bin | 32409 -> 32409 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf93919.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf93919.docx) | bin | 15336 -> 15336 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf94043.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf94043.docx) | bin | 12326 -> 12326 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf94374.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf94374.docx) | bin | 12578 -> 12578 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf95213.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf95213.docx) | bin | 17747 -> 17747 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf95376.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf95376.docx) | bin | 25375 -> 25375 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf95775.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf95775.docx) | bin | 22523 -> 22523 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf95777.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf95777.docx) | bin | 19126 -> 19126 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf97371.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf97371.docx) | bin | 18800 -> 18800 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf99140.docx (renamed from sw/qa/extras/ooxmlimport/data/tdf99140.docx) | bin | 13349 -> 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) | bin | 120620 -> 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) | bin | 16526 -> 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) | bin | 15052 -> 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) | bin | 10578 -> 10578 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/wpg-nested.docx (renamed from sw/qa/extras/ooxmlimport/data/wpg-nested.docx) | bin | 34068 -> 34068 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/wpg-only.docx (renamed from sw/qa/extras/ooxmlimport/data/wpg-only.docx) | bin | 13503 -> 13503 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/wps-only.docx (renamed from sw/qa/extras/ooxmlimport/data/wps-only.docx) | bin | 13180 -> 13180 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport8.cxx | 2082 | ||||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport9.cxx | 45 | ||||
-rw-r--r-- | sw/qa/extras/ooxmlimport/data/Table_cell_auto_width_fdo69656.docx | bin | 18939 -> 0 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlimport/data/fdo69636.docx | bin | 23779 -> 0 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlimport/data/fdo69649.docx | bin | 35048 -> 0 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlimport/data/smartart.docx | bin | 20453 -> 0 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 2032 |
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 Binary files differindex fc52281a2552..fc52281a2552 100644 --- a/sw/qa/extras/ooxmlimport/data/all_gaps_word.docx +++ b/sw/qa/extras/ooxmlexport/data/all_gaps_word.docx diff --git a/sw/qa/extras/ooxmlimport/data/annotation-formatting.docx b/sw/qa/extras/ooxmlexport/data/annotation-formatting.docx Binary files differindex 87af02b780e5..87af02b780e5 100644 --- a/sw/qa/extras/ooxmlimport/data/annotation-formatting.docx +++ b/sw/qa/extras/ooxmlexport/data/annotation-formatting.docx diff --git a/sw/qa/extras/ooxmlimport/data/bnc780044_spacing.docx b/sw/qa/extras/ooxmlexport/data/bnc780044_spacing.docx Binary files differindex 927d4d37671a..927d4d37671a 100644 --- a/sw/qa/extras/ooxmlimport/data/bnc780044_spacing.docx +++ b/sw/qa/extras/ooxmlexport/data/bnc780044_spacing.docx diff --git a/sw/qa/extras/ooxmlimport/data/bnc865381.docx b/sw/qa/extras/ooxmlexport/data/bnc865381.docx Binary files differindex bb125cc73095..bb125cc73095 100644 --- a/sw/qa/extras/ooxmlimport/data/bnc865381.docx +++ b/sw/qa/extras/ooxmlexport/data/bnc865381.docx diff --git a/sw/qa/extras/ooxmlimport/data/bnc875718.docx b/sw/qa/extras/ooxmlexport/data/bnc875718.docx Binary files differindex 878a46fdf912..878a46fdf912 100644 --- a/sw/qa/extras/ooxmlimport/data/bnc875718.docx +++ b/sw/qa/extras/ooxmlexport/data/bnc875718.docx diff --git a/sw/qa/extras/ooxmlimport/data/bnc891663.docx b/sw/qa/extras/ooxmlexport/data/bnc891663.docx Binary files differindex d5f057e66fd6..d5f057e66fd6 100644 --- a/sw/qa/extras/ooxmlimport/data/bnc891663.docx +++ b/sw/qa/extras/ooxmlexport/data/bnc891663.docx diff --git a/sw/qa/extras/ooxmlimport/data/caption.docx b/sw/qa/extras/ooxmlexport/data/caption.docx Binary files differindex 301472cbc7ad..301472cbc7ad 100644 --- a/sw/qa/extras/ooxmlimport/data/caption.docx +++ b/sw/qa/extras/ooxmlexport/data/caption.docx diff --git a/sw/qa/extras/ooxmlimport/data/chart-prop.docx b/sw/qa/extras/ooxmlexport/data/chart-prop.docx Binary files differindex f9cddd4949a6..f9cddd4949a6 100644 --- a/sw/qa/extras/ooxmlimport/data/chart-prop.docx +++ b/sw/qa/extras/ooxmlexport/data/chart-prop.docx diff --git a/sw/qa/extras/ooxmlimport/data/chart-size.docx b/sw/qa/extras/ooxmlexport/data/chart-size.docx Binary files differindex da5d144438a3..da5d144438a3 100644 --- a/sw/qa/extras/ooxmlimport/data/chart-size.docx +++ b/sw/qa/extras/ooxmlexport/data/chart-size.docx diff --git a/sw/qa/extras/ooxmlimport/data/chtoutline.docx b/sw/qa/extras/ooxmlexport/data/chtoutline.docx Binary files differindex 92fdaf71e745..92fdaf71e745 100644 --- a/sw/qa/extras/ooxmlimport/data/chtoutline.docx +++ b/sw/qa/extras/ooxmlexport/data/chtoutline.docx diff --git a/sw/qa/extras/ooxmlimport/data/conditionalstyles-tbllook.docx b/sw/qa/extras/ooxmlexport/data/conditionalstyles-tbllook.docx Binary files differindex 4222d6376789..4222d6376789 100644 --- a/sw/qa/extras/ooxmlimport/data/conditionalstyles-tbllook.docx +++ b/sw/qa/extras/ooxmlexport/data/conditionalstyles-tbllook.docx diff --git a/sw/qa/extras/ooxmlimport/data/dml-charheight-default.docx b/sw/qa/extras/ooxmlexport/data/dml-charheight-default.docx Binary files differindex 0f22a87f0e29..0f22a87f0e29 100644 --- a/sw/qa/extras/ooxmlimport/data/dml-charheight-default.docx +++ b/sw/qa/extras/ooxmlexport/data/dml-charheight-default.docx diff --git a/sw/qa/extras/ooxmlimport/data/dml-groupshape-capitalization.docx b/sw/qa/extras/ooxmlexport/data/dml-groupshape-capitalization.docx Binary files differindex 67fd21f64d14..67fd21f64d14 100644 --- a/sw/qa/extras/ooxmlimport/data/dml-groupshape-capitalization.docx +++ b/sw/qa/extras/ooxmlexport/data/dml-groupshape-capitalization.docx diff --git a/sw/qa/extras/ooxmlimport/data/dml-groupshape-runfonts.docx b/sw/qa/extras/ooxmlexport/data/dml-groupshape-runfonts.docx Binary files differindex e4c8c6cb575f..e4c8c6cb575f 100644 --- a/sw/qa/extras/ooxmlimport/data/dml-groupshape-runfonts.docx +++ b/sw/qa/extras/ooxmlexport/data/dml-groupshape-runfonts.docx diff --git a/sw/qa/extras/ooxmlimport/data/dml-groupshape-sdt.docx b/sw/qa/extras/ooxmlexport/data/dml-groupshape-sdt.docx Binary files differindex 7314d876a45c..7314d876a45c 100644 --- a/sw/qa/extras/ooxmlimport/data/dml-groupshape-sdt.docx +++ b/sw/qa/extras/ooxmlexport/data/dml-groupshape-sdt.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo38414.docx b/sw/qa/extras/ooxmlexport/data/fdo38414.docx Binary files differindex 135cd32c981e..135cd32c981e 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo38414.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo38414.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo43093.docx b/sw/qa/extras/ooxmlexport/data/fdo43093b.docx Binary files differindex 3e5a910e2003..3e5a910e2003 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo43093.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo43093b.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo46361.docx b/sw/qa/extras/ooxmlexport/data/fdo46361.docx Binary files differindex 2f894e4b3ccd..2f894e4b3ccd 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo46361.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo46361.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo49940.docx b/sw/qa/extras/ooxmlexport/data/fdo49940.docx Binary files differindex 242284463632..242284463632 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo49940.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo49940.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo52208.docx b/sw/qa/extras/ooxmlexport/data/fdo52208.docx Binary files differindex be842ad2acbc..be842ad2acbc 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo52208.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo52208.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo53985.docx b/sw/qa/extras/ooxmlexport/data/fdo53985.docx Binary files differindex 0c8b32fb671f..0c8b32fb671f 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo53985.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo53985.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo55187.docx b/sw/qa/extras/ooxmlexport/data/fdo55187.docx Binary files differindex 59cd0a806250..59cd0a806250 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo55187.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo55187.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo59273.docx b/sw/qa/extras/ooxmlexport/data/fdo59273.docx Binary files differindex fcdfd7734411..fcdfd7734411 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo59273.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo59273.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo59638.docx b/sw/qa/extras/ooxmlexport/data/fdo59638.docx Binary files differindex d33e7cc0a037..d33e7cc0a037 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo59638.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo59638.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo60922.docx b/sw/qa/extras/ooxmlexport/data/fdo60922.docx Binary files differindex 0d1ff2613ecd..0d1ff2613ecd 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo60922.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo60922.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo61343.docx b/sw/qa/extras/ooxmlexport/data/fdo61343.docx Binary files differindex 9ab99739b7c2..9ab99739b7c2 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo61343.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo61343.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo63685.docx b/sw/qa/extras/ooxmlexport/data/fdo63685.docx Binary files differindex a1348fcff3b6..a1348fcff3b6 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo63685.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo63685.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo65090.docx b/sw/qa/extras/ooxmlexport/data/fdo65090.docx Binary files differindex 4d45737ddc37..4d45737ddc37 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo65090.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo65090.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo65632.docx b/sw/qa/extras/ooxmlexport/data/fdo65632.docx Binary files differindex 8c336c20fdfc..8c336c20fdfc 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo65632.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo65632.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo66474.docx b/sw/qa/extras/ooxmlexport/data/fdo66474.docx Binary files differindex 0252746f5b6e..0252746f5b6e 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo66474.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo66474.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo68607.docx b/sw/qa/extras/ooxmlexport/data/fdo68607.docx Binary files differindex 11f57064ce92..11f57064ce92 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo68607.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo68607.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo69548.docx b/sw/qa/extras/ooxmlexport/data/fdo69548.docx Binary files differindex 6799f5ef26bf..6799f5ef26bf 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo69548.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo69548.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo70457.docx b/sw/qa/extras/ooxmlexport/data/fdo70457.docx Binary files differindex b9cabb11902c..b9cabb11902c 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo70457.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo70457.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo72560.docx b/sw/qa/extras/ooxmlexport/data/fdo72560.docx Binary files differindex b21535bfd453..b21535bfd453 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo72560.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo72560.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo73389.docx b/sw/qa/extras/ooxmlexport/data/fdo73389.docx Binary files differindex 02b55f74e2b8..02b55f74e2b8 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo73389.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo73389.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo74357.docx b/sw/qa/extras/ooxmlexport/data/fdo74357.docx Binary files differindex 970372906e29..970372906e29 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo74357.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo74357.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo74401.docx b/sw/qa/extras/ooxmlexport/data/fdo74401.docx Binary files differindex fd3cbabdd9d2..fd3cbabdd9d2 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo74401.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo74401.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo74745.docx b/sw/qa/extras/ooxmlexport/data/fdo74745.docx Binary files differindex 773567756a79..773567756a79 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo74745.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo74745.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo78883.docx b/sw/qa/extras/ooxmlexport/data/fdo78883.docx Binary files differindex a72ff9436e0c..a72ff9436e0c 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo78883.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo78883.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo78904.docx b/sw/qa/extras/ooxmlexport/data/fdo78904.docx Binary files differindex c171ae2ca813..c171ae2ca813 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo78904.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo78904.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo78939.docx b/sw/qa/extras/ooxmlexport/data/fdo78939.docx Binary files differindex 2fc3198630cd..2fc3198630cd 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo78939.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo78939.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo79535.docx b/sw/qa/extras/ooxmlexport/data/fdo79535.docx Binary files differindex 64aab18e0ad7..64aab18e0ad7 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo79535.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo79535.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo79738.docx b/sw/qa/extras/ooxmlexport/data/fdo79738.docx Binary files differindex e6873e7a2362..e6873e7a2362 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo79738.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo79738.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo80555.docx b/sw/qa/extras/ooxmlexport/data/fdo80555.docx Binary files differindex a15bdc1ecd31..a15bdc1ecd31 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo80555.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo80555.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo81486.docx b/sw/qa/extras/ooxmlexport/data/fdo81486.docx Binary files differindex 6e680c350a7c..6e680c350a7c 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo81486.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo81486.docx diff --git a/sw/qa/extras/ooxmlimport/data/fdo85542.docx b/sw/qa/extras/ooxmlexport/data/fdo85542.docx Binary files differindex db4940845140..db4940845140 100644 --- a/sw/qa/extras/ooxmlimport/data/fdo85542.docx +++ b/sw/qa/extras/ooxmlexport/data/fdo85542.docx diff --git a/sw/qa/extras/ooxmlimport/data/file_crash.docx b/sw/qa/extras/ooxmlexport/data/file_crash.docx Binary files differindex 7a233aba5c47..7a233aba5c47 100644 --- a/sw/qa/extras/ooxmlimport/data/file_crash.docx +++ b/sw/qa/extras/ooxmlexport/data/file_crash.docx diff --git a/sw/qa/extras/ooxmlimport/data/floating-tables-anchor.docx b/sw/qa/extras/ooxmlexport/data/floating-tables-anchor.docx Binary files differindex 70dc7cf8bf10..70dc7cf8bf10 100644 --- a/sw/qa/extras/ooxmlimport/data/floating-tables-anchor.docx +++ b/sw/qa/extras/ooxmlexport/data/floating-tables-anchor.docx diff --git a/sw/qa/extras/ooxmlimport/data/footnote.docx b/sw/qa/extras/ooxmlexport/data/footnote.docx Binary files differindex f5c94bd27004..f5c94bd27004 100644 --- a/sw/qa/extras/ooxmlimport/data/footnote.docx +++ b/sw/qa/extras/ooxmlexport/data/footnote.docx diff --git a/sw/qa/extras/ooxmlimport/data/frame-wrap-auto.docx b/sw/qa/extras/ooxmlexport/data/frame-wrap-auto.docx Binary files differindex 6ad7fe059449..6ad7fe059449 100644 --- a/sw/qa/extras/ooxmlimport/data/frame-wrap-auto.docx +++ b/sw/qa/extras/ooxmlexport/data/frame-wrap-auto.docx diff --git a/sw/qa/extras/ooxmlimport/data/gridbefore.docx b/sw/qa/extras/ooxmlexport/data/gridbefore.docx Binary files differindex 571fb48eaa9a..571fb48eaa9a 100644 --- a/sw/qa/extras/ooxmlimport/data/gridbefore.docx +++ b/sw/qa/extras/ooxmlexport/data/gridbefore.docx diff --git a/sw/qa/extras/ooxmlimport/data/groupshape-rotation.docx b/sw/qa/extras/ooxmlexport/data/groupshape-rotation.docx Binary files differindex d63b5d0734e1..d63b5d0734e1 100644 --- a/sw/qa/extras/ooxmlimport/data/groupshape-rotation.docx +++ b/sw/qa/extras/ooxmlexport/data/groupshape-rotation.docx diff --git a/sw/qa/extras/ooxmlimport/data/groupshape-smarttag.docx b/sw/qa/extras/ooxmlexport/data/groupshape-smarttag.docx Binary files differindex 6fc1cb2e6936..6fc1cb2e6936 100644 --- a/sw/qa/extras/ooxmlimport/data/groupshape-smarttag.docx +++ b/sw/qa/extras/ooxmlexport/data/groupshape-smarttag.docx diff --git a/sw/qa/extras/ooxmlimport/data/groupshape-trackedchanges.docx b/sw/qa/extras/ooxmlexport/data/groupshape-trackedchanges.docx Binary files differindex 116721f39ecc..116721f39ecc 100644 --- a/sw/qa/extras/ooxmlimport/data/groupshape-trackedchanges.docx +++ b/sw/qa/extras/ooxmlexport/data/groupshape-trackedchanges.docx diff --git a/sw/qa/extras/ooxmlimport/data/hello.docx b/sw/qa/extras/ooxmlexport/data/hello.docx Binary files differindex d5d8d43ebdac..d5d8d43ebdac 100644 --- a/sw/qa/extras/ooxmlimport/data/hello.docx +++ b/sw/qa/extras/ooxmlexport/data/hello.docx diff --git a/sw/qa/extras/ooxmlimport/data/hidemark.docx b/sw/qa/extras/ooxmlexport/data/hidemark.docx Binary files differindex 4a273d6039bb..4a273d6039bb 100644 --- a/sw/qa/extras/ooxmlimport/data/hidemark.docx +++ b/sw/qa/extras/ooxmlexport/data/hidemark.docx diff --git a/sw/qa/extras/ooxmlimport/data/i124106.docx b/sw/qa/extras/ooxmlexport/data/i124106.docx Binary files differindex de1d542936ce..de1d542936ce 100644 --- a/sw/qa/extras/ooxmlimport/data/i124106.docx +++ b/sw/qa/extras/ooxmlexport/data/i124106.docx diff --git a/sw/qa/extras/ooxmlimport/data/imgshadow.docx b/sw/qa/extras/ooxmlexport/data/imgshadow.docx Binary files differindex efe0e9596008..efe0e9596008 100644 --- a/sw/qa/extras/ooxmlimport/data/imgshadow.docx +++ b/sw/qa/extras/ooxmlexport/data/imgshadow.docx diff --git a/sw/qa/extras/ooxmlimport/data/indentation.docx b/sw/qa/extras/ooxmlexport/data/indentation.docx Binary files differindex cf57aaf5417e..cf57aaf5417e 100644 --- a/sw/qa/extras/ooxmlimport/data/indentation.docx +++ b/sw/qa/extras/ooxmlexport/data/indentation.docx diff --git a/sw/qa/extras/ooxmlimport/data/indents.docx b/sw/qa/extras/ooxmlexport/data/indents.docx Binary files differindex b16736791c2e..b16736791c2e 100755 --- a/sw/qa/extras/ooxmlimport/data/indents.docx +++ b/sw/qa/extras/ooxmlexport/data/indents.docx diff --git a/sw/qa/extras/ooxmlimport/data/inline-groupshape.docx b/sw/qa/extras/ooxmlexport/data/inline-groupshape.docx Binary files differindex def5a05b40e4..def5a05b40e4 100644 --- a/sw/qa/extras/ooxmlimport/data/inline-groupshape.docx +++ b/sw/qa/extras/ooxmlexport/data/inline-groupshape.docx diff --git a/sw/qa/extras/ooxmlimport/data/large-twips.docx b/sw/qa/extras/ooxmlexport/data/large-twips.docx Binary files differindex 6e9d82dfab42..6e9d82dfab42 100644 --- a/sw/qa/extras/ooxmlimport/data/large-twips.docx +++ b/sw/qa/extras/ooxmlexport/data/large-twips.docx diff --git a/sw/qa/extras/ooxmlimport/data/libreoffice.png b/sw/qa/extras/ooxmlexport/data/libreoffice.png Binary files differindex 437f613c178c..437f613c178c 100644 --- a/sw/qa/extras/ooxmlimport/data/libreoffice.png +++ b/sw/qa/extras/ooxmlexport/data/libreoffice.png diff --git a/sw/qa/extras/ooxmlimport/data/mathtype.docx b/sw/qa/extras/ooxmlexport/data/mathtype.docx Binary files differindex bf60f43b25b7..bf60f43b25b7 100644 --- a/sw/qa/extras/ooxmlimport/data/mathtype.docx +++ b/sw/qa/extras/ooxmlexport/data/mathtype.docx diff --git a/sw/qa/extras/ooxmlimport/data/mce-nested.docx b/sw/qa/extras/ooxmlexport/data/mce-nested.docx Binary files differindex 907ac080c1e3..907ac080c1e3 100644 --- a/sw/qa/extras/ooxmlimport/data/mce-nested.docx +++ b/sw/qa/extras/ooxmlexport/data/mce-nested.docx diff --git a/sw/qa/extras/ooxmlimport/data/mce-wpg.docx b/sw/qa/extras/ooxmlexport/data/mce-wpg.docx Binary files differindex bd0d84681317..bd0d84681317 100644 --- a/sw/qa/extras/ooxmlimport/data/mce-wpg.docx +++ b/sw/qa/extras/ooxmlexport/data/mce-wpg.docx diff --git a/sw/qa/extras/ooxmlimport/data/missing-path.docx b/sw/qa/extras/ooxmlexport/data/missing-path.docx Binary files differindex 8d75e9f630ed..8d75e9f630ed 100644 --- a/sw/qa/extras/ooxmlimport/data/missing-path.docx +++ b/sw/qa/extras/ooxmlexport/data/missing-path.docx diff --git a/sw/qa/extras/ooxmlimport/data/msobrightnesscontrast.docx b/sw/qa/extras/ooxmlexport/data/msobrightnesscontrast.docx Binary files differindex 132f23575b57..132f23575b57 100644 --- a/sw/qa/extras/ooxmlimport/data/msobrightnesscontrast.docx +++ b/sw/qa/extras/ooxmlexport/data/msobrightnesscontrast.docx diff --git a/sw/qa/extras/ooxmlimport/data/n592908-frame.docx b/sw/qa/extras/ooxmlexport/data/n592908-frame.docx Binary files differindex ff59cacbad79..ff59cacbad79 100644 --- a/sw/qa/extras/ooxmlimport/data/n592908-frame.docx +++ b/sw/qa/extras/ooxmlexport/data/n592908-frame.docx diff --git a/sw/qa/extras/ooxmlimport/data/n592908-picture.docx b/sw/qa/extras/ooxmlexport/data/n592908-picture.docx Binary files differindex 2766d3691cdd..2766d3691cdd 100644 --- a/sw/qa/extras/ooxmlimport/data/n592908-picture.docx +++ b/sw/qa/extras/ooxmlexport/data/n592908-picture.docx diff --git a/sw/qa/extras/ooxmlimport/data/n652364.docx b/sw/qa/extras/ooxmlexport/data/n652364.docx Binary files differindex 0845509e84b7..0845509e84b7 100644 --- a/sw/qa/extras/ooxmlimport/data/n652364.docx +++ b/sw/qa/extras/ooxmlexport/data/n652364.docx diff --git a/sw/qa/extras/ooxmlimport/data/n693238.docx b/sw/qa/extras/ooxmlexport/data/n693238.docx Binary files differindex 5bcda0fff6f7..5bcda0fff6f7 100644 --- a/sw/qa/extras/ooxmlimport/data/n693238.docx +++ b/sw/qa/extras/ooxmlexport/data/n693238.docx diff --git a/sw/qa/extras/ooxmlimport/data/n705956-1.docx b/sw/qa/extras/ooxmlexport/data/n705956-1.docx Binary files differindex edff3bac412c..edff3bac412c 100644 --- a/sw/qa/extras/ooxmlimport/data/n705956-1.docx +++ b/sw/qa/extras/ooxmlexport/data/n705956-1.docx diff --git a/sw/qa/extras/ooxmlimport/data/n705956-2.docx b/sw/qa/extras/ooxmlexport/data/n705956-2.docx Binary files differindex 138818523a92..138818523a92 100644 --- a/sw/qa/extras/ooxmlimport/data/n705956-2.docx +++ b/sw/qa/extras/ooxmlexport/data/n705956-2.docx diff --git a/sw/qa/extras/ooxmlimport/data/n747461.docx b/sw/qa/extras/ooxmlexport/data/n747461.docx Binary files differindex 1064e5db060b..1064e5db060b 100644 --- a/sw/qa/extras/ooxmlimport/data/n747461.docx +++ b/sw/qa/extras/ooxmlexport/data/n747461.docx diff --git a/sw/qa/extras/ooxmlimport/data/n750255.docx b/sw/qa/extras/ooxmlexport/data/n750255.docx Binary files differindex a0c7370022b0..a0c7370022b0 100644 --- a/sw/qa/extras/ooxmlimport/data/n750255.docx +++ b/sw/qa/extras/ooxmlexport/data/n750255.docx diff --git a/sw/qa/extras/ooxmlimport/data/n750935.docx b/sw/qa/extras/ooxmlexport/data/n750935.docx Binary files differindex 0dd01592dd65..0dd01592dd65 100644 --- a/sw/qa/extras/ooxmlimport/data/n750935.docx +++ b/sw/qa/extras/ooxmlexport/data/n750935.docx diff --git a/sw/qa/extras/ooxmlimport/data/n751054.docx b/sw/qa/extras/ooxmlexport/data/n751054.docx Binary files differindex 49d7d6af9cc6..49d7d6af9cc6 100644 --- a/sw/qa/extras/ooxmlimport/data/n751054.docx +++ b/sw/qa/extras/ooxmlexport/data/n751054.docx diff --git a/sw/qa/extras/ooxmlimport/data/n751117.docx b/sw/qa/extras/ooxmlexport/data/n751117.docx Binary files differindex 17cc9c53d1cb..17cc9c53d1cb 100644 --- a/sw/qa/extras/ooxmlimport/data/n751117.docx +++ b/sw/qa/extras/ooxmlexport/data/n751117.docx diff --git a/sw/qa/extras/ooxmlimport/data/n764005.docx b/sw/qa/extras/ooxmlexport/data/n764005.docx Binary files differindex 1c0dd9d077e9..1c0dd9d077e9 100644 --- a/sw/qa/extras/ooxmlimport/data/n764005.docx +++ b/sw/qa/extras/ooxmlexport/data/n764005.docx diff --git a/sw/qa/extras/ooxmlimport/data/n766481.docx b/sw/qa/extras/ooxmlexport/data/n766481.docx Binary files differindex e1521ec82f9c..e1521ec82f9c 100644 --- a/sw/qa/extras/ooxmlimport/data/n766481.docx +++ b/sw/qa/extras/ooxmlexport/data/n766481.docx diff --git a/sw/qa/extras/ooxmlimport/data/n766487.docx b/sw/qa/extras/ooxmlexport/data/n766487.docx Binary files differindex 85eda0e7e381..85eda0e7e381 100644 --- a/sw/qa/extras/ooxmlimport/data/n766487.docx +++ b/sw/qa/extras/ooxmlexport/data/n766487.docx diff --git a/sw/qa/extras/ooxmlimport/data/n775906.docx b/sw/qa/extras/ooxmlexport/data/n775906.docx Binary files differindex 6b6dd1a6b45d..6b6dd1a6b45d 100644 --- a/sw/qa/extras/ooxmlimport/data/n775906.docx +++ b/sw/qa/extras/ooxmlexport/data/n775906.docx diff --git a/sw/qa/extras/ooxmlimport/data/n777337.docx b/sw/qa/extras/ooxmlexport/data/n777337.docx Binary files differindex 8bb377dcf621..8bb377dcf621 100644 --- a/sw/qa/extras/ooxmlimport/data/n777337.docx +++ b/sw/qa/extras/ooxmlexport/data/n777337.docx diff --git a/sw/qa/extras/ooxmlimport/data/n778828.docx b/sw/qa/extras/ooxmlexport/data/n778828.docx Binary files differindex ad2e22d17fbf..ad2e22d17fbf 100644 --- a/sw/qa/extras/ooxmlimport/data/n778828.docx +++ b/sw/qa/extras/ooxmlexport/data/n778828.docx diff --git a/sw/qa/extras/ooxmlimport/data/n778836.docx b/sw/qa/extras/ooxmlexport/data/n778836.docx Binary files differindex ccd89e85b436..ccd89e85b436 100644 --- a/sw/qa/extras/ooxmlimport/data/n778836.docx +++ b/sw/qa/extras/ooxmlexport/data/n778836.docx diff --git a/sw/qa/extras/ooxmlimport/data/n779630.docx b/sw/qa/extras/ooxmlexport/data/n779630.docx Binary files differindex 97812d66cff5..97812d66cff5 100644 --- a/sw/qa/extras/ooxmlimport/data/n779630.docx +++ b/sw/qa/extras/ooxmlexport/data/n779630.docx diff --git a/sw/qa/extras/ooxmlimport/data/n779642.docx b/sw/qa/extras/ooxmlexport/data/n779642.docx Binary files differindex 2fe9a176689b..2fe9a176689b 100644 --- a/sw/qa/extras/ooxmlimport/data/n779642.docx +++ b/sw/qa/extras/ooxmlexport/data/n779642.docx diff --git a/sw/qa/extras/ooxmlimport/data/n779834.docx b/sw/qa/extras/ooxmlexport/data/n779834.docx Binary files differindex 24b6db1a446e..24b6db1a446e 100644 --- a/sw/qa/extras/ooxmlimport/data/n779834.docx +++ b/sw/qa/extras/ooxmlexport/data/n779834.docx diff --git a/sw/qa/extras/ooxmlimport/data/n779941.docx b/sw/qa/extras/ooxmlexport/data/n779941.docx Binary files differindex 9889d81e2383..9889d81e2383 100644 --- a/sw/qa/extras/ooxmlimport/data/n779941.docx +++ b/sw/qa/extras/ooxmlexport/data/n779941.docx diff --git a/sw/qa/extras/ooxmlimport/data/n780563.docx b/sw/qa/extras/ooxmlexport/data/n780563.docx Binary files differindex 508dc7474bfa..508dc7474bfa 100644 --- a/sw/qa/extras/ooxmlimport/data/n780563.docx +++ b/sw/qa/extras/ooxmlexport/data/n780563.docx diff --git a/sw/qa/extras/ooxmlimport/data/n780843.docx b/sw/qa/extras/ooxmlexport/data/n780843.docx Binary files differindex 9b92f79aaa17..9b92f79aaa17 100644 --- a/sw/qa/extras/ooxmlimport/data/n780843.docx +++ b/sw/qa/extras/ooxmlexport/data/n780843.docx diff --git a/sw/qa/extras/ooxmlimport/data/n780843b.docx b/sw/qa/extras/ooxmlexport/data/n780843b.docx Binary files differindex 2ba9ab2c6f0f..2ba9ab2c6f0f 100644 --- a/sw/qa/extras/ooxmlimport/data/n780843b.docx +++ b/sw/qa/extras/ooxmlexport/data/n780843b.docx diff --git a/sw/qa/extras/ooxmlimport/data/n780853.docx b/sw/qa/extras/ooxmlexport/data/n780853.docx Binary files differindex fed8276fbb2a..fed8276fbb2a 100644 --- a/sw/qa/extras/ooxmlimport/data/n780853.docx +++ b/sw/qa/extras/ooxmlexport/data/n780853.docx diff --git a/sw/qa/extras/ooxmlimport/data/n782345.docx b/sw/qa/extras/ooxmlexport/data/n782345.docx Binary files differindex f25709fedf4f..f25709fedf4f 100644 --- a/sw/qa/extras/ooxmlimport/data/n782345.docx +++ b/sw/qa/extras/ooxmlexport/data/n782345.docx diff --git a/sw/qa/extras/ooxmlimport/data/n783638.docx b/sw/qa/extras/ooxmlexport/data/n783638.docx Binary files differindex 93b587b92ef9..93b587b92ef9 100644 --- a/sw/qa/extras/ooxmlimport/data/n783638.docx +++ b/sw/qa/extras/ooxmlexport/data/n783638.docx diff --git a/sw/qa/extras/ooxmlimport/data/n785767.docx b/sw/qa/extras/ooxmlexport/data/n785767.docx Binary files differindex db356769bc8b..db356769bc8b 100644 --- a/sw/qa/extras/ooxmlimport/data/n785767.docx +++ b/sw/qa/extras/ooxmlexport/data/n785767.docx diff --git a/sw/qa/extras/ooxmlimport/data/n792778.docx b/sw/qa/extras/ooxmlexport/data/n792778.docx Binary files differindex d9541d4ccfce..d9541d4ccfce 100644 --- a/sw/qa/extras/ooxmlimport/data/n792778.docx +++ b/sw/qa/extras/ooxmlexport/data/n792778.docx diff --git a/sw/qa/extras/ooxmlimport/data/n793262.docx b/sw/qa/extras/ooxmlexport/data/n793262.docx Binary files differindex 7f2d2e0a8084..7f2d2e0a8084 100644 --- a/sw/qa/extras/ooxmlimport/data/n793262.docx +++ b/sw/qa/extras/ooxmlexport/data/n793262.docx diff --git a/sw/qa/extras/ooxmlimport/data/n793998.docx b/sw/qa/extras/ooxmlexport/data/n793998.docx Binary files differindex fc96e2e97f74..fc96e2e97f74 100644 --- a/sw/qa/extras/ooxmlimport/data/n793998.docx +++ b/sw/qa/extras/ooxmlexport/data/n793998.docx diff --git a/sw/qa/extras/ooxmlimport/data/n816593.docx b/sw/qa/extras/ooxmlexport/data/n816593.docx Binary files differindex 7d784e69d4e6..7d784e69d4e6 100644 --- a/sw/qa/extras/ooxmlimport/data/n816593.docx +++ b/sw/qa/extras/ooxmlexport/data/n816593.docx diff --git a/sw/qa/extras/ooxmlimport/data/n820509.docx b/sw/qa/extras/ooxmlexport/data/n820509.docx Binary files differindex a6da1e16842c..a6da1e16842c 100644 --- a/sw/qa/extras/ooxmlimport/data/n820509.docx +++ b/sw/qa/extras/ooxmlexport/data/n820509.docx diff --git a/sw/qa/extras/ooxmlimport/data/n830205.docx b/sw/qa/extras/ooxmlexport/data/n830205.docx Binary files differindex 89cf1d8434a1..89cf1d8434a1 100644 --- a/sw/qa/extras/ooxmlimport/data/n830205.docx +++ b/sw/qa/extras/ooxmlexport/data/n830205.docx diff --git a/sw/qa/extras/ooxmlimport/data/negative-cell-margin-twips.docx b/sw/qa/extras/ooxmlexport/data/negative-cell-margin-twips.docx Binary files differindex 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 diff --git a/sw/qa/extras/ooxmlimport/data/numbering1.docx b/sw/qa/extras/ooxmlexport/data/numbering1.docx Binary files differindex 55b4af3e8584..55b4af3e8584 100644 --- a/sw/qa/extras/ooxmlimport/data/numbering1.docx +++ b/sw/qa/extras/ooxmlexport/data/numbering1.docx diff --git a/sw/qa/extras/ooxmlimport/data/page-border-shadow.docx b/sw/qa/extras/ooxmlexport/data/page-border-shadow.docx Binary files differindex 65a2273f6bc6..65a2273f6bc6 100644 --- a/sw/qa/extras/ooxmlimport/data/page-border-shadow.docx +++ b/sw/qa/extras/ooxmlexport/data/page-border-shadow.docx diff --git a/sw/qa/extras/ooxmlimport/data/picture-with-schemecolor.docx b/sw/qa/extras/ooxmlexport/data/picture-with-schemecolor.docx Binary files differindex bfee0e1415e8..bfee0e1415e8 100644 --- a/sw/qa/extras/ooxmlimport/data/picture-with-schemecolor.docx +++ b/sw/qa/extras/ooxmlexport/data/picture-with-schemecolor.docx diff --git a/sw/qa/extras/ooxmlimport/data/rhbz1180114.docx b/sw/qa/extras/ooxmlexport/data/rhbz1180114.docx Binary files differindex 23009ebbdc82..23009ebbdc82 100644 --- a/sw/qa/extras/ooxmlimport/data/rhbz1180114.docx +++ b/sw/qa/extras/ooxmlexport/data/rhbz1180114.docx diff --git a/sw/qa/extras/ooxmlimport/data/rprchange_closed.docx b/sw/qa/extras/ooxmlexport/data/rprchange_closed.docx Binary files differindex ff53871e91ae..ff53871e91ae 100644 --- a/sw/qa/extras/ooxmlimport/data/rprchange_closed.docx +++ b/sw/qa/extras/ooxmlexport/data/rprchange_closed.docx diff --git a/sw/qa/extras/ooxmlimport/data/section_break_numbering.docx b/sw/qa/extras/ooxmlexport/data/section_break_numbering.docx Binary files differindex 8b5378a771e5..8b5378a771e5 100644 --- a/sw/qa/extras/ooxmlimport/data/section_break_numbering.docx +++ b/sw/qa/extras/ooxmlexport/data/section_break_numbering.docx diff --git a/sw/qa/extras/ooxmlimport/data/strict-smartart.docx b/sw/qa/extras/ooxmlexport/data/strict-smartart.docx Binary files differindex bab7c16bcea1..bab7c16bcea1 100644 --- a/sw/qa/extras/ooxmlimport/data/strict-smartart.docx +++ b/sw/qa/extras/ooxmlexport/data/strict-smartart.docx diff --git a/sw/qa/extras/ooxmlimport/data/strict.docx b/sw/qa/extras/ooxmlexport/data/strict.docx Binary files differindex b46ce94b3402..b46ce94b3402 100644 --- a/sw/qa/extras/ooxmlimport/data/strict.docx +++ b/sw/qa/extras/ooxmlexport/data/strict.docx 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/sw/qa/extras/ooxmlimport/data/table-auto-nested.docx b/sw/qa/extras/ooxmlexport/data/table-auto-nested.docx Binary files differindex 85f47dbba0b3..85f47dbba0b3 100644 --- a/sw/qa/extras/ooxmlimport/data/table-auto-nested.docx +++ b/sw/qa/extras/ooxmlexport/data/table-auto-nested.docx diff --git a/sw/qa/extras/ooxmlimport/data/table-btlr-center.docx b/sw/qa/extras/ooxmlexport/data/table-btlr-center.docx Binary files differindex 79cb53eed06d..79cb53eed06d 100644 --- a/sw/qa/extras/ooxmlimport/data/table-btlr-center.docx +++ b/sw/qa/extras/ooxmlexport/data/table-btlr-center.docx diff --git a/sw/qa/extras/ooxmlimport/data/table-pagebreak.docx b/sw/qa/extras/ooxmlexport/data/table-pagebreak.docx Binary files differindex 06ecf9535af1..06ecf9535af1 100644 --- a/sw/qa/extras/ooxmlimport/data/table-pagebreak.docx +++ b/sw/qa/extras/ooxmlexport/data/table-pagebreak.docx diff --git a/sw/qa/extras/ooxmlimport/data/table-style-parprop.docx b/sw/qa/extras/ooxmlexport/data/table-style-parprop.docx Binary files differindex 1c68c704e7fb..1c68c704e7fb 100644 --- a/sw/qa/extras/ooxmlimport/data/table-style-parprop.docx +++ b/sw/qa/extras/ooxmlexport/data/table-style-parprop.docx diff --git a/sw/qa/extras/ooxmlimport/data/tableborder-finedash.docx b/sw/qa/extras/ooxmlexport/data/tableborder-finedash.docx Binary files differindex 003167ac3ade..003167ac3ade 100644 --- a/sw/qa/extras/ooxmlimport/data/tableborder-finedash.docx +++ b/sw/qa/extras/ooxmlexport/data/tableborder-finedash.docx diff --git a/sw/qa/extras/ooxmlimport/data/tblr-height.docx b/sw/qa/extras/ooxmlexport/data/tblr-height.docx Binary files differindex 6a16c81dd5e0..6a16c81dd5e0 100644 --- a/sw/qa/extras/ooxmlimport/data/tblr-height.docx +++ b/sw/qa/extras/ooxmlexport/data/tblr-height.docx diff --git a/sw/qa/extras/ooxmlimport/data/tcw-rounding.docx b/sw/qa/extras/ooxmlexport/data/tcw-rounding.docx Binary files differindex d4055c953b6f..d4055c953b6f 100644 --- a/sw/qa/extras/ooxmlimport/data/tcw-rounding.docx +++ b/sw/qa/extras/ooxmlexport/data/tcw-rounding.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf59699.docx b/sw/qa/extras/ooxmlexport/data/tdf59699.docx Binary files differindex 158ac338f88a..158ac338f88a 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf59699.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf59699.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf78902.docx b/sw/qa/extras/ooxmlexport/data/tdf78902.docx Binary files differindex 3cf3a443a975..3cf3a443a975 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf78902.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf78902.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf8255.docx b/sw/qa/extras/ooxmlexport/data/tdf8255.docx Binary files differindex 366e498856ba..366e498856ba 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf8255.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf8255.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf83300.docx b/sw/qa/extras/ooxmlexport/data/tdf83300.docx Binary files differindex aa3ad22d10fc..aa3ad22d10fc 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf83300.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf83300.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf86374.docx b/sw/qa/extras/ooxmlexport/data/tdf86374.docx Binary files differindex 7fd772d79b3f..7fd772d79b3f 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf86374.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf86374.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf87460.docx b/sw/qa/extras/ooxmlexport/data/tdf87460.docx Binary files differindex c443dbe4563e..c443dbe4563e 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf87460.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf87460.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf87924.docx b/sw/qa/extras/ooxmlexport/data/tdf87924.docx Binary files differindex 5265d6638a88..5265d6638a88 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf87924.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf87924.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf89165.docx b/sw/qa/extras/ooxmlexport/data/tdf89165.docx Binary files differindex a060ca444e27..a060ca444e27 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf89165.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf89165.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf89702.docx b/sw/qa/extras/ooxmlexport/data/tdf89702.docx Binary files differindex 5542d1cbe575..5542d1cbe575 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf89702.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf89702.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf90153.docx b/sw/qa/extras/ooxmlexport/data/tdf90153.docx Binary files differindex decbfa29d3b9..decbfa29d3b9 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf90153.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf90153.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf90611.docx b/sw/qa/extras/ooxmlexport/data/tdf90611.docx Binary files differindex ac54feedd05f..ac54feedd05f 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf90611.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf90611.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf90810short.docx b/sw/qa/extras/ooxmlexport/data/tdf90810short.docx Binary files differindex 85b6369fbf29..85b6369fbf29 100755 --- a/sw/qa/extras/ooxmlimport/data/tdf90810short.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf90810short.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf91122.docx b/sw/qa/extras/ooxmlexport/data/tdf91122.docx Binary files differindex c7a45e4dd99a..c7a45e4dd99a 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf91122.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf91122.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf91260.docx b/sw/qa/extras/ooxmlexport/data/tdf91260.docx Binary files differindex 4888f498ddf9..4888f498ddf9 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf91260.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf91260.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf91417.docx b/sw/qa/extras/ooxmlexport/data/tdf91417.docx Binary files differindex 1427f8cb3a5d..1427f8cb3a5d 100755 --- a/sw/qa/extras/ooxmlimport/data/tdf91417.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf91417.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf92045.docx b/sw/qa/extras/ooxmlexport/data/tdf92045.docx Binary files differindex d41f523c79b1..d41f523c79b1 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf92045.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf92045.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf92124.docx b/sw/qa/extras/ooxmlexport/data/tdf92124.docx Binary files differindex 2999311930eb..2999311930eb 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf92124.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf92124.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf92157.docx b/sw/qa/extras/ooxmlexport/data/tdf92157.docx Binary files differindex ba5bc2a8f5f5..ba5bc2a8f5f5 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf92157.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf92157.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf92454.docx b/sw/qa/extras/ooxmlexport/data/tdf92454.docx Binary files differindex 70426685e207..70426685e207 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf92454.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf92454.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf93919.docx b/sw/qa/extras/ooxmlexport/data/tdf93919.docx Binary files differindex c7454690c844..c7454690c844 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf93919.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf93919.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf94043.docx b/sw/qa/extras/ooxmlexport/data/tdf94043.docx Binary files differindex fa47be0760cd..fa47be0760cd 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf94043.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf94043.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf94374.docx b/sw/qa/extras/ooxmlexport/data/tdf94374.docx Binary files differindex d5d8d43ebdac..d5d8d43ebdac 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf94374.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf94374.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf95213.docx b/sw/qa/extras/ooxmlexport/data/tdf95213.docx Binary files differindex 831d543b903f..831d543b903f 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf95213.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf95213.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf95376.docx b/sw/qa/extras/ooxmlexport/data/tdf95376.docx Binary files differindex 9bd2d05b2e7a..9bd2d05b2e7a 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf95376.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf95376.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf95775.docx b/sw/qa/extras/ooxmlexport/data/tdf95775.docx Binary files differindex a4c1293a56ba..a4c1293a56ba 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf95775.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf95775.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf95777.docx b/sw/qa/extras/ooxmlexport/data/tdf95777.docx Binary files differindex e71fdea609b6..e71fdea609b6 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf95777.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf95777.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf97371.docx b/sw/qa/extras/ooxmlexport/data/tdf97371.docx Binary files differindex 87e67ddf877b..87e67ddf877b 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf97371.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf97371.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf99140.docx b/sw/qa/extras/ooxmlexport/data/tdf99140.docx Binary files differindex 42fa73d2f8e0..42fa73d2f8e0 100644 --- a/sw/qa/extras/ooxmlimport/data/tdf99140.docx +++ b/sw/qa/extras/ooxmlexport/data/tdf99140.docx diff --git a/sw/qa/extras/ooxmlimport/data/test_extra_image.docx b/sw/qa/extras/ooxmlexport/data/test_extra_image.docx Binary files differindex cdb05afa4456..cdb05afa4456 100644 --- a/sw/qa/extras/ooxmlimport/data/test_extra_image.docx +++ b/sw/qa/extras/ooxmlexport/data/test_extra_image.docx diff --git a/sw/qa/extras/ooxmlimport/data/textbox-wpg-only.docx b/sw/qa/extras/ooxmlexport/data/textbox-wpg-only.docx Binary files differindex cd853f97d55f..cd853f97d55f 100644 --- a/sw/qa/extras/ooxmlimport/data/textbox-wpg-only.docx +++ b/sw/qa/extras/ooxmlexport/data/textbox-wpg-only.docx diff --git a/sw/qa/extras/ooxmlimport/data/tools-line-numbering.docx b/sw/qa/extras/ooxmlexport/data/tools-line-numbering.docx Binary files differindex 8fb2668b327e..8fb2668b327e 100644 --- a/sw/qa/extras/ooxmlimport/data/tools-line-numbering.docx +++ b/sw/qa/extras/ooxmlexport/data/tools-line-numbering.docx diff --git a/sw/qa/extras/ooxmlimport/data/vml-text-vertical-adjust.docx b/sw/qa/extras/ooxmlexport/data/vml-text-vertical-adjust.docx Binary files differindex 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 diff --git a/sw/qa/extras/ooxmlimport/data/wpg-nested.docx b/sw/qa/extras/ooxmlexport/data/wpg-nested.docx Binary files differindex eba2aad0e76c..eba2aad0e76c 100644 --- a/sw/qa/extras/ooxmlimport/data/wpg-nested.docx +++ b/sw/qa/extras/ooxmlexport/data/wpg-nested.docx diff --git a/sw/qa/extras/ooxmlimport/data/wpg-only.docx b/sw/qa/extras/ooxmlexport/data/wpg-only.docx Binary files differindex 7c86361f9d34..7c86361f9d34 100644 --- a/sw/qa/extras/ooxmlimport/data/wpg-only.docx +++ b/sw/qa/extras/ooxmlexport/data/wpg-only.docx diff --git a/sw/qa/extras/ooxmlimport/data/wps-only.docx b/sw/qa/extras/ooxmlexport/data/wps-only.docx Binary files differindex 7f7b8c75bc26..7f7b8c75bc26 100644 --- a/sw/qa/extras/ooxmlimport/data/wps-only.docx +++ b/sw/qa/extras/ooxmlexport/data/wps-only.docx 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 Binary files differdeleted file mode 100644 index 10b8f9de21d8..000000000000 --- a/sw/qa/extras/ooxmlimport/data/Table_cell_auto_width_fdo69656.docx +++ /dev/null diff --git a/sw/qa/extras/ooxmlimport/data/fdo69636.docx b/sw/qa/extras/ooxmlimport/data/fdo69636.docx Binary files differdeleted file mode 100644 index b2f3069b5020..000000000000 --- a/sw/qa/extras/ooxmlimport/data/fdo69636.docx +++ /dev/null diff --git a/sw/qa/extras/ooxmlimport/data/fdo69649.docx b/sw/qa/extras/ooxmlimport/data/fdo69649.docx Binary files differdeleted file mode 100644 index cb0f78999880..000000000000 --- a/sw/qa/extras/ooxmlimport/data/fdo69649.docx +++ /dev/null diff --git a/sw/qa/extras/ooxmlimport/data/smartart.docx b/sw/qa/extras/ooxmlimport/data/smartart.docx Binary files differdeleted file mode 100644 index 7a553f425188..000000000000 --- a/sw/qa/extras/ooxmlimport/data/smartart.docx +++ /dev/null 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: */ |