diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2012-07-26 12:54:37 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2012-07-26 13:21:30 +0200 |
commit | a572af02752164a62478052113707c5f9bc705da (patch) | |
tree | a0dbfeca3d10170559e0af97a6c6a42ec391619d | |
parent | e0c5698f064d988baf906e8c9d87554b668fde92 (diff) |
add tests for RTF_MACC and RTF_MEQARR
Change-Id: Id33672d0acef4d79239e0ee8a86d5a244ac736e7
-rw-r--r-- | starmath/qa/testdocuments/README | 2 | ||||
-rw-r--r-- | sw/CppunitTest_sw_subsequent_rtfexport.mk | 3 | ||||
-rw-r--r-- | sw/qa/extras/rtfexport/data/math-accents.rtf | 189 | ||||
-rw-r--r-- | sw/qa/extras/rtfexport/data/math-eqarray.rtf | 96 | ||||
-rw-r--r-- | sw/qa/extras/rtfexport/rtfexport.cxx | 24 | ||||
-rw-r--r-- | sw/qa/extras/swmodeltestbase.hxx | 23 |
6 files changed, 334 insertions, 3 deletions
diff --git a/starmath/qa/testdocuments/README b/starmath/qa/testdocuments/README new file mode 100644 index 000000000000..416e082c3404 --- /dev/null +++ b/starmath/qa/testdocuments/README @@ -0,0 +1,2 @@ +You can find test documents here for DOCX. RTF test documents are at +sw/qa/extras/rtfexport/data/math-*.rtf. diff --git a/sw/CppunitTest_sw_subsequent_rtfexport.mk b/sw/CppunitTest_sw_subsequent_rtfexport.mk index bdc47cd8b29f..a0dd4518fbc4 100644 --- a/sw/CppunitTest_sw_subsequent_rtfexport.mk +++ b/sw/CppunitTest_sw_subsequent_rtfexport.mk @@ -65,6 +65,7 @@ $(eval $(call gb_CppunitTest_use_ure,sw_subsequent_rtfexport)) $(eval $(call gb_CppunitTest_use_components,sw_subsequent_rtfexport,\ comphelper/util/comphelp \ configmgr/source/configmgr \ + embeddedobj/util/embobj \ fileaccess/source/fileacc \ filter/source/config/cache/filterconfig1 \ framework/util/fwk \ @@ -73,6 +74,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_subsequent_rtfexport,\ package/util/package2 \ sax/source/expatwrap/expwrap \ sfx2/util/sfx \ + starmath/util/sm \ svl/source/fsstor/fsstorage \ svtools/util/svt \ sw/util/msword \ @@ -81,6 +83,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_subsequent_rtfexport,\ toolkit/util/tk \ ucb/source/core/ucb1 \ ucb/source/ucp/file/ucpfile1 \ + unotools/util/utl \ unoxml/source/service/unoxml \ writerfilter/util/writerfilter \ )) diff --git a/sw/qa/extras/rtfexport/data/math-accents.rtf b/sw/qa/extras/rtfexport/data/math-accents.rtf new file mode 100644 index 000000000000..2dcaf7061f51 --- /dev/null +++ b/sw/qa/extras/rtfexport/data/math-accents.rtf @@ -0,0 +1,189 @@ +{\rtf1
+{\mmath
+{\*\moMathPara
+{\*\moMath
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u769 \'b4}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0
+\i\f34\insrsid26133 \hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u768 `}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0
+\i\f34\insrsid26133 \hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u780 ?}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0
+\i\f34\insrsid26133 \hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u774 ?}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0
+\i\f34\insrsid26133 \hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u778 \'b0}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0
+\i\f34\insrsid26133 \hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u8407 ?}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0
+\i\f34\insrsid26133 \hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u771 ~}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0
+\i\f34\insrsid26133 \hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \i\f34\insrsid26133
+\hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u729 ?}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \i\f34\insrsid26133
+\hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u8407 ?}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \i\f34\insrsid26133
+\hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u8407 ?}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \i\f34\insrsid26133
+\hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\macc
+{\maccPr
+{\mchr \u771 ~}
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \i\f34\insrsid26133
+\hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+{\mbar
+{\mbarPr
+{\mctrlPr\f34 }
+}
+{\me
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \i\f34\insrsid26133
+\hich\af34\dbch\af42\loch\f34
+{\mr\mscr0\msty2 a}
+}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f34\insrsid26133 }
+}
+}
+}
+}
+}
+\par
+}
diff --git a/sw/qa/extras/rtfexport/data/math-eqarray.rtf b/sw/qa/extras/rtfexport/data/math-eqarray.rtf new file mode 100644 index 000000000000..8e499ae2f870 --- /dev/null +++ b/sw/qa/extras/rtfexport/data/math-eqarray.rtf @@ -0,0 +1,96 @@ +{\rtf1 +{\mmath +{\*\moMathPara +{\*\moMath +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 y} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 =} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid14308624 } +{\md +{\mdPr +{\mbegChr \'7b} +{\mendChr } +{\mctrlPr\i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033 } +} +{\me +{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid14308624 } +{\meqArr +{\meqArrPr +{\mctrlPr\i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033 } +} +{\me +{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 0, } +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 +\hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 x} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 <0} +} +{\rtlch\fcs1 \af31507 +\ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid14308624 } +} +{\me +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 1, } +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 x} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 =0} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid14308624 } +} +{\me +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid14308624 } +{\msSup +{\msSupPr +{\mctrlPr\i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033 } +} +{\me +{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 x} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid14308624 } +} +{\msup +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 2} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid14308624 } +} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 , +} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 x} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid9447840 \hich\af34\dbch\af31505\loch\f34 +{\mr\mscr0\msty2 >0} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid14308624 } +} +} +{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\lang1033\langfe1033\loch\af34\hich\af34\dbch\af31505\langnp1033\insrsid14308624 } +} +} +} +} +} +\par +} diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index ff23b6a38437..64950a6ef0dc 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -27,11 +27,11 @@ #include "../swmodeltestbase.hxx" -#include <com/sun/star/frame/XStorable.hpp> -#include <com/sun/star/view/XViewSettingsSupplier.hpp> #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> +#include <com/sun/star/frame/XStorable.hpp> #include <com/sun/star/text/XPageCursor.hpp> #include <com/sun/star/text/XTextViewCursorSupplier.hpp> +#include <com/sun/star/view/XViewSettingsSupplier.hpp> #include <unotools/tempfile.hxx> #include <vcl/svapp.hxx> @@ -51,6 +51,8 @@ public: void testFdo50831(); void testFdo48335(); void testFdo38244(); + void testMathAccents(); + void testMathEqarray(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -62,6 +64,8 @@ public: CPPUNIT_TEST(testFdo50831); CPPUNIT_TEST(testFdo48335); CPPUNIT_TEST(testFdo38244); + CPPUNIT_TEST(testMathAccents); + CPPUNIT_TEST(testMathEqarray); #endif CPPUNIT_TEST_SUITE_END(); @@ -202,6 +206,22 @@ void Test::testFdo38244() CPPUNIT_ASSERT_EQUAL(OUString("M"), getProperty<OUString>(xPropertySet, "Initials")); } +void Test::testMathAccents() +{ + roundtrip("math-accents.rtf"); + OUString aActual = getFormula(getRun(getParagraph(1), 1)); + OUString aExpected("acute {a} grave {a} check {a} breve {a} circle {a} widevec {a} widetilde {a} widehat {a} dot {a} widevec {a} widevec {a} widetilde {a} underline {a}"); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); +} + +void Test::testMathEqarray() +{ + roundtrip("math-eqarray.rtf"); + OUString aActual = getFormula(getRun(getParagraph(1), 1)); + OUString aExpected("y = left lbrace stack { 0, x < 0 # 1, x = 0 # {x} ^ {2} , x > 0 } right none"); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/qa/extras/swmodeltestbase.hxx b/sw/qa/extras/swmodeltestbase.hxx index 39e41da9d768..b0ec46027e98 100644 --- a/sw/qa/extras/swmodeltestbase.hxx +++ b/sw/qa/extras/swmodeltestbase.hxx @@ -25,6 +25,7 @@ * instead of those above. */ +#include <com/sun/star/container/XContentEnumerationAccess.hpp> #include <com/sun/star/style/XStyleFamiliesSupplier.hpp> #include <com/sun/star/text/XTextDocument.hpp> #include <com/sun/star/text/XTextRange.hpp> @@ -162,7 +163,7 @@ protected: } // Get paragraph (counted from 1), optionally check it contains the given text. - uno::Reference< text::XTextRange > getParagraph( int number, rtl::OUString content ) const + uno::Reference< text::XTextRange > getParagraph( int number, rtl::OUString content = OUString() ) const { uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY); uno::Reference<container::XEnumerationAccess> paraEnumAccess(textDocument->getText(), uno::UNO_QUERY); @@ -177,6 +178,26 @@ protected: return paragraph; } + /// Get run (counted from 1) of a paragraph. + uno::Reference<text::XTextRange> getRun(uno::Reference<text::XTextRange> xParagraph, int number) const + { + uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration(); + for (int i = 1; i < number; ++i) + xRunEnum->nextElement(); + uno::Reference<text::XTextRange> xRun(xRunEnum->nextElement(), uno::UNO_QUERY); + return xRun; + } + + /// Get math formula string of a run. + OUString getFormula(uno::Reference<text::XTextRange> xRun) const + { + uno::Reference<container::XContentEnumerationAccess> xContentEnumAccess(xRun, uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xContentEnum(xContentEnumAccess->createContentEnumeration(""), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xFormula(xContentEnum->nextElement(), uno::UNO_QUERY); + return getProperty<OUString>(getProperty< uno::Reference<beans::XPropertySet> >(xFormula, "Model"), "Formula"); + } + uno::Reference<lang::XComponent> mxComponent; xmlBufferPtr mpXmlBuffer; }; |