summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@suse.cz>2012-08-23 17:11:52 +0200
committerLuboš Luňák <l.lunak@suse.cz>2012-08-23 17:29:22 +0200
commit863bd5f7b91792ab2d39567c206b23b25b661c50 (patch)
tree49dbd553c3fc7be255bfb4d1af5133489baf13d9 /sw
parenta2cc10e02375aebd32ba0df49d83ee01235a709b (diff)
convert docx mathml test documents into unittests
There are few small things that do not survive the roundtrip completely accurately, they should be checked somewhen when there's time. But it's better to have these as actual tests rather than just documents somewhere. Change-Id: Ic3732ab8450376820867950438d89e324f391eeb
Diffstat (limited to 'sw')
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-accents.docxbin0 -> 3555 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-d.docxbin0 -> 3633 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-escaping.docxbin0 -> 3481 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-lim.docxbin0 -> 3512 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-malformed_xml.docxbin0 -> 4320 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-matrix.docxbin0 -> 3507 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-mso2k7.docxbin0 -> 12207 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-nary.docxbin0 -> 3562 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-overbrace_underbrace.docxbin0 -> 3567 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-overstrike.docxbin0 -> 3507 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-placeholders.docxbin0 -> 3467 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-rad.docxbin0 -> 3507 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-subscripts.docxbin0 -> 3669 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/math-vertical_stacks.docxbin0 -> 3522 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport.cxx172
15 files changed, 172 insertions, 0 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/math-accents.docx b/sw/qa/extras/ooxmlexport/data/math-accents.docx
new file mode 100644
index 000000000000..b623cb556dfc
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-accents.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-d.docx b/sw/qa/extras/ooxmlexport/data/math-d.docx
new file mode 100644
index 000000000000..a18afdd81068
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-d.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-escaping.docx b/sw/qa/extras/ooxmlexport/data/math-escaping.docx
new file mode 100644
index 000000000000..d51c47552e61
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-escaping.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-lim.docx b/sw/qa/extras/ooxmlexport/data/math-lim.docx
new file mode 100644
index 000000000000..6adb548ab6a1
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-lim.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-malformed_xml.docx b/sw/qa/extras/ooxmlexport/data/math-malformed_xml.docx
new file mode 100644
index 000000000000..53d64b039142
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-malformed_xml.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-matrix.docx b/sw/qa/extras/ooxmlexport/data/math-matrix.docx
new file mode 100644
index 000000000000..d6b5b1871a69
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-matrix.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-mso2k7.docx b/sw/qa/extras/ooxmlexport/data/math-mso2k7.docx
new file mode 100644
index 000000000000..b6b16ef7cb2b
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-mso2k7.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-nary.docx b/sw/qa/extras/ooxmlexport/data/math-nary.docx
new file mode 100644
index 000000000000..f3bb781d6e85
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-nary.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-overbrace_underbrace.docx b/sw/qa/extras/ooxmlexport/data/math-overbrace_underbrace.docx
new file mode 100644
index 000000000000..e4119f66f769
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-overbrace_underbrace.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-overstrike.docx b/sw/qa/extras/ooxmlexport/data/math-overstrike.docx
new file mode 100644
index 000000000000..9809edc8ef97
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-overstrike.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-placeholders.docx b/sw/qa/extras/ooxmlexport/data/math-placeholders.docx
new file mode 100644
index 000000000000..1c32c048f082
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-placeholders.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-rad.docx b/sw/qa/extras/ooxmlexport/data/math-rad.docx
new file mode 100644
index 000000000000..39194dcca2dc
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-rad.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-subscripts.docx b/sw/qa/extras/ooxmlexport/data/math-subscripts.docx
new file mode 100644
index 000000000000..038925f63942
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-subscripts.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/math-vertical_stacks.docx b/sw/qa/extras/ooxmlexport/data/math-vertical_stacks.docx
new file mode 100644
index 000000000000..50dfab0ecb79
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/math-vertical_stacks.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 076eedce7dd4..47246f80c3db 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -43,6 +43,20 @@ public:
void testFdo38244();
void testMathEscape();
void testFdo51034();
+ void testMathAccents();
+ void testMathD();
+ void testMathEscaping();
+ void testMathLim();
+ void testMathMalformedXml();
+ void testMathMatrix();
+ void testMathMso2k7();
+ void testMathNary();
+ void testMathOverbraceUnderbrace();
+ void testMathOverstrike();
+ void testMathPlaceholders();
+ void testMathRad();
+ void testMathSubscripts();
+ void testMathVerticalStacks();
CPPUNIT_TEST_SUITE(Test);
#if !defined(MACOSX) && !defined(WNT)
@@ -51,6 +65,20 @@ public:
CPPUNIT_TEST(testFdo38244);
CPPUNIT_TEST(testMathEscape);
CPPUNIT_TEST(testFdo51034);
+ CPPUNIT_TEST(testMathAccents);
+ CPPUNIT_TEST(testMathD);
+ CPPUNIT_TEST(testMathEscaping);
+ CPPUNIT_TEST(testMathLim);
+ CPPUNIT_TEST(testMathMalformedXml);
+ CPPUNIT_TEST(testMathMatrix);
+ CPPUNIT_TEST(testMathMso2k7);
+ CPPUNIT_TEST(testMathNary);
+ CPPUNIT_TEST(testMathOverbraceUnderbrace);
+ CPPUNIT_TEST(testMathOverstrike);
+ CPPUNIT_TEST(testMathPlaceholders);
+ CPPUNIT_TEST(testMathRad);
+ CPPUNIT_TEST(testMathSubscripts);
+ CPPUNIT_TEST(testMathVerticalStacks);
#endif
CPPUNIT_TEST_SUITE_END();
@@ -178,6 +206,150 @@ void Test::testFdo51034()
CPPUNIT_ASSERT_EQUAL(OUString("http://Www.google.com/#a"), getProperty<OUString>(getRun(getParagraph(1), 1), "HyperLinkURL"));
}
+// Construct the expected formula from UTF8, as there may be such characters.
+// Remove all spaces, as LO export/import may change that.
+// Replace symbol - (i.e. U+2212) with ASCII - , LO does this change and it shouldn't matter.
+#define CHECK_FORMULA( expected, actual ) \
+ CPPUNIT_ASSERT_EQUAL( \
+ OUString( expected, strlen( expected ), RTL_TEXTENCODING_UTF8 ) \
+ .replaceAll( " ", "" ).replaceAll( OUString( "−", strlen( "−" ), RTL_TEXTENCODING_UTF8 ), "-" ), \
+ OUString( actual ).replaceAll( " ", "" ).replaceAll( OUString( "−", strlen( "−" ), RTL_TEXTENCODING_UTF8 ), "-" ))
+
+void Test::testMathAccents()
+{
+ roundtrip( "math-accents.docx" );
+ CHECK_FORMULA(
+ "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}",
+ getFormula( getRun( getParagraph( 1 ), 1 )));
+}
+
+void Test::testMathD()
+{
+ roundtrip( "math-d.docx" );
+ CHECK_FORMULA( "left (x mline y mline z right )", getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA( "left (1 right )", getFormula( getRun( getParagraph( 1 ), 2 )));
+ CHECK_FORMULA( "left [2 right ]", getFormula( getRun( getParagraph( 1 ), 3 )));
+ CHECK_FORMULA( "left ldbracket 3 right rdbracket", getFormula( getRun( getParagraph( 1 ), 4 )));
+ CHECK_FORMULA( "left lline 4 right rline", getFormula( getRun( getParagraph( 1 ), 5 )));
+ CHECK_FORMULA( "left ldline 5 right rdline", getFormula( getRun( getParagraph( 1 ), 6 )));
+ CHECK_FORMULA( "left langle 6 right rangle", getFormula( getRun( getParagraph( 1 ), 7 )));
+ CHECK_FORMULA( "left langle a mline b right rangle", getFormula( getRun( getParagraph( 1 ), 8 )));
+ CHECK_FORMULA( "left ({x} over {y} right )", getFormula( getRun( getParagraph( 1 ), 9 )));
+}
+
+void Test::testMathEscaping()
+{
+ roundtrip( "math-escaping.docx" );
+ CHECK_FORMULA( "− ∞ < x < ∞", getFormula( getRun( getParagraph( 1 ), 1 )));
+}
+
+void Test::testMathLim()
+{
+ roundtrip( "math-lim.docx" );
+ CHECK_FORMULA( "lim from {x → 1} {x}", getFormula( getRun( getParagraph( 1 ), 1 )));
+}
+
+void Test::testMathMalformedXml()
+{
+ roundtrip( "math-malformed_xml.docx" );
+ CPPUNIT_ASSERT_EQUAL( 0, getLength());
+}
+
+void Test::testMathMatrix()
+{
+ roundtrip( "math-matrix.docx" );
+ CHECK_FORMULA( "left [matrix {1 # 2 ## 3 # 4} right ]", getFormula( getRun( getParagraph( 1 ), 1 )));
+}
+
+void Test::testMathMso2k7()
+{
+ roundtrip( "math-mso2k7.docx" );
+ CHECK_FORMULA( "A = π {r} ^ {2}", getFormula( getRun( getParagraph( 1 ), 1 )));
+// TODO check the stack/binom difference
+// CHECK_FORMULA( "{left (x+a right )} ^ {n} = sum from {k=0} to {n} {left (binom {n} {k} right ) {x} ^ {k} {a} ^ {n-k}}",
+ CHECK_FORMULA( "{left (x+a right )} ^ {n} = sum from {k=0} to {n} {left (stack {n # k} right ) {x} ^ {k} {a} ^ {n-k}}",
+ getFormula( getRun( getParagraph( 2 ), 1 )));
+ CHECK_FORMULA( "{left (1+x right )} ^ {n} =1+ {nx} over {1!} + {n left (n-1 right ) {x} ^ {2}} over {2!} +…",
+ getFormula( getRun( getParagraph( 3 ), 1 )));
+// TODO check (cos/sin miss {})
+// CHECK_FORMULA( "f left (x right ) = {a} rsub {0} + sum from {n=1} to {∞} {left ({a} rsub {n} cos {{nπx} over {L}} + {b} rsub {n} sin {{nπx} over {L}} right )}",
+ CHECK_FORMULA( "f left (x right ) = {a} rsub {0} + sum from {n=1} to {∞} {left ({a} rsub {n} cos {nπx} over {L} + {b} rsub {n} sin {nπx} over {L} right )}",
+ getFormula( getRun( getParagraph( 4 ), 1 )));
+ CHECK_FORMULA( "{a} ^ {2} + {b} ^ {2} = {c} ^ {2}", getFormula( getRun( getParagraph( 5 ), 1 )));
+ CHECK_FORMULA( "x = {- b ± sqrt {{b} ^ {2} -4 ac}} over {2 a}",
+ getFormula( getRun( getParagraph( 6 ), 1 )));
+ CHECK_FORMULA(
+ "{e} ^ {x} =1+ {x} over {1!} + {{x} ^ {2}} over {2!} + {{x} ^ {3}} over {3!} +…, -∞<x<∞",
+ getFormula( getRun( getParagraph( 7 ), 1 )));
+ CHECK_FORMULA(
+// "sin {α} ± sin {β} =2 sin {{1} over {2} left (α±β right )} cos {{1} over {2} left (α∓β right )}",
+// TODO check (cos/in miss {})
+ "sin α ± sin β =2 sin {1} over {2} left (α±β right ) cos {1} over {2} left (α∓β right )",
+ getFormula( getRun( getParagraph( 8 ), 1 )));
+ CHECK_FORMULA(
+// "cos {α} + cos {β} =2 cos {{1} over {2} left (α+β right )} cos {{1} over {2} left (α-β right )}",
+// TODO check (cos/sin miss {})
+ "cos α + cos β =2 cos {1} over {2} left (α+β right ) cos {1} over {2} left (α-β right )",
+ getFormula( getRun( getParagraph( 9 ), 1 )));
+}
+
+void Test::testMathNary()
+{
+ roundtrip( "math-nary.docx" );
+ CHECK_FORMULA( "lllint from {1} to {2} {x + 1}", getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA( "prod from {a} {b}", getFormula( getRun( getParagraph( 1 ), 2 )));
+ CHECK_FORMULA( "sum to {2} {x}", getFormula( getRun( getParagraph( 1 ), 3 )));
+}
+
+void Test::testMathOverbraceUnderbrace()
+{
+ roundtrip( "math-overbrace_underbrace.docx" );
+ CHECK_FORMULA( "{abcd} overbrace {4}", getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA( "{xyz} underbrace {3}", getFormula( getRun( getParagraph( 2 ), 1 )));
+}
+
+void Test::testMathOverstrike()
+{
+ roundtrip( "math-overstrike.docx" );
+ CHECK_FORMULA( "overstrike {abc}", getFormula( getRun( getParagraph( 1 ), 1 )));
+}
+
+void Test::testMathPlaceholders()
+{
+ roundtrip( "math-placeholders.docx" );
+ CHECK_FORMULA( "sum from <?> to <?> <?>", getFormula( getRun( getParagraph( 1 ), 1 )));
+}
+
+void Test::testMathRad()
+{
+ roundtrip( "math-rad.docx" );
+ CHECK_FORMULA( "sqrt {4}", getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA( "nroot {3} {x + 1}", getFormula( getRun( getParagraph( 1 ), 2 )));
+}
+
+void Test::testMathSubscripts()
+{
+ roundtrip( "math-subscripts.docx" );
+ CHECK_FORMULA( "{x} ^ {y} + {e} ^ {x}", getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA( "{x} ^ {b}", getFormula( getRun( getParagraph( 1 ), 2 )));
+ CHECK_FORMULA( "{x} rsub {b}", getFormula( getRun( getParagraph( 1 ), 3 )));
+ CHECK_FORMULA( "{a} rsub {c} rsup {b}", getFormula( getRun( getParagraph( 1 ), 4 )));
+ CHECK_FORMULA( "{x} lsub {2} lsup {1}", getFormula( getRun( getParagraph( 1 ), 5 )));
+ CHECK_FORMULA( "{{x csup {6} csub {3}} lsub {4} lsup {5}} rsub {2} rsup {1}",
+ getFormula( getRun( getParagraph( 1 ), 6 )));
+}
+
+void Test::testMathVerticalStacks()
+{
+ roundtrip( "math-vertical_stacks.docx" );
+ CHECK_FORMULA( "{a} over {b}", getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA( "{a} / {b}", getFormula( getRun( getParagraph( 2 ), 1 )));
+// TODO check these
+// CHECK_FORMULA( "binom {a} {b}", getFormula( getRun( getParagraph( 3 ), 1 )));
+// CHECK_FORMULA( "binom {a} {binom {b} {c}}", getFormula( getRun( getParagraph( 4 ), 1 )));
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();