[Libreoffice-commits] .: Branch 'feature/gsoc_test_improvements3' - sw/qa

Artur Dorda adorda at kemper.freedesktop.org
Wed Jul 25 09:16:43 PDT 2012


 sw/qa/extras/ooxmltok/data/all_gaps_word.docx |binary
 sw/qa/extras/ooxmltok/ooxmltok.cxx            |  146 ++++++++++++++++++++++++++
 2 files changed, 146 insertions(+)

New commits:
commit afb8974755ea8aca5d13920df85c7aa2bdb9b6d2
Author: Artur Dorda <artur.dorda+libo at gmail.com>
Date:   Wed Jul 25 18:16:00 2012 +0200

    Word format import - new test in ooxml checking top border's widths in tables
    
    Change-Id: I0e4434e9266190f0719df7fbba9f6f2904da8707

diff --git a/sw/qa/extras/ooxmltok/data/all_gaps_word.docx b/sw/qa/extras/ooxmltok/data/all_gaps_word.docx
new file mode 100644
index 0000000..992fc44
Binary files /dev/null and b/sw/qa/extras/ooxmltok/data/all_gaps_word.docx differ
diff --git a/sw/qa/extras/ooxmltok/ooxmltok.cxx b/sw/qa/extras/ooxmltok/ooxmltok.cxx
index a3fd38a..69edd57 100644
--- a/sw/qa/extras/ooxmltok/ooxmltok.cxx
+++ b/sw/qa/extras/ooxmltok/ooxmltok.cxx
@@ -43,11 +43,17 @@
 #include <com/sun/star/text/XTextFramesSupplier.hpp>
 #include <com/sun/star/text/XTextViewCursorSupplier.hpp>
 #include <com/sun/star/style/ParagraphAdjust.hpp>
+#include <com/sun/star/table/XCell.hpp>
+#include <com/sun/star/table/BorderLine.hpp>
+#include <com/sun/star/text/XTextTable.hpp>
 
 #include <vcl/svapp.hxx>
 
 #define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
 
+typedef std::map<rtl::OUString, com::sun::star::table::BorderLine> BorderLineMap;
+typedef std::pair<rtl::OUString, com::sun::star::table::BorderLine> StringBorderPair;
+
 using rtl::OString;
 using rtl::OUString;
 using rtl::OUStringBuffer;
@@ -76,6 +82,7 @@ public:
     void testN766481();
     void testN766487();
     void testN693238();
+    void testAllGapsWord();
 
     CPPUNIT_TEST_SUITE(Test);
 #if !defined(MACOSX) && !defined(WNT)
@@ -100,6 +107,7 @@ public:
     CPPUNIT_TEST(testN766481);
     CPPUNIT_TEST(testN766487);
     CPPUNIT_TEST(testN693238);
+    CPPUNIT_TEST(testAllGapsWord);
 #endif
     CPPUNIT_TEST_SUITE_END();
 
@@ -678,6 +686,144 @@ void Test::testN693238()
     CPPUNIT_ASSERT_EQUAL(sal_Int32(635), nValue);
 }
 
+void Test::testAllGapsWord()
+{
+    load("all_gaps_word.docx");
+    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();
+
+    // maps containing TopBorder widths for every cell
+    // one map for each tables - there are 8 of them, counting from 0
+    BorderLineMap map0;
+    map0.insert(StringBorderPair(OUString("A1"), table::BorderLine(0, 53, 26, 26)));
+    map0.insert(StringBorderPair(OUString("B1"), table::BorderLine(0, 79, 26, 26)));
+    map0.insert(StringBorderPair(OUString("C1"), table::BorderLine(0, 106, 26, 26)));
+    map0.insert(StringBorderPair(OUString("D1"), table::BorderLine(0, 159, 26, 26)));
+    map0.insert(StringBorderPair(OUString("E1"), table::BorderLine(0, 212, 26, 26)));
+    BorderLineMap map1;
+    map1.insert(StringBorderPair(OUString("A1"), table::BorderLine(0, 9, 9, 9)));
+    map1.insert(StringBorderPair(OUString("B1"), table::BorderLine(0, 18, 18, 18)));
+    map1.insert(StringBorderPair(OUString("C1"), table::BorderLine(0, 26, 26, 26)));
+    map1.insert(StringBorderPair(OUString("D1"), table::BorderLine(0, 53, 53, 53)));
+    map1.insert(StringBorderPair(OUString("E1"), table::BorderLine(0, 79, 79, 79)));
+    map1.insert(StringBorderPair(OUString("F1"), table::BorderLine(0, 106, 106, 106)));
+    BorderLineMap map2;
+    map2.insert(StringBorderPair(OUString("A1"), table::BorderLine(0, 9, 5, 5)));
+    map2.insert(StringBorderPair(OUString("B1"), table::BorderLine(0, 18, 9, 9)));
+    map2.insert(StringBorderPair(OUString("C1"), table::BorderLine(0, 26, 14, 14)));
+    map2.insert(StringBorderPair(OUString("D1"), table::BorderLine(0, 35, 18, 18)));
+    map2.insert(StringBorderPair(OUString("E1"), table::BorderLine(0, 53, 26, 26)));
+    map2.insert(StringBorderPair(OUString("F1"), table::BorderLine(0, 79, 41, 41)));
+    map2.insert(StringBorderPair(OUString("G1"), table::BorderLine(0, 106, 53, 53)));
+    map2.insert(StringBorderPair(OUString("H1"), table::BorderLine(0, 159, 79, 79)));
+    map2.insert(StringBorderPair(OUString("I1"), table::BorderLine(0, 212, 106, 106)));
+    BorderLineMap map3;
+    map3.insert(StringBorderPair(OUString("A1"), table::BorderLine(0, 53, 26, 9)));
+    map3.insert(StringBorderPair(OUString("B1"), table::BorderLine(0, 53, 26, 18)));
+    map3.insert(StringBorderPair(OUString("C1"), table::BorderLine(0, 53, 26, 26)));
+    map3.insert(StringBorderPair(OUString("D1"), table::BorderLine(0, 53, 26, 35)));
+    map3.insert(StringBorderPair(OUString("E1"), table::BorderLine(0, 53, 26, 53)));
+    map3.insert(StringBorderPair(OUString("F1"), table::BorderLine(0, 53, 26, 79)));
+    map3.insert(StringBorderPair(OUString("G1"), table::BorderLine(0, 53, 26, 106)));
+    map3.insert(StringBorderPair(OUString("H1"), table::BorderLine(0, 53, 26, 159)));
+    map3.insert(StringBorderPair(OUString("I1"), table::BorderLine(0, 53, 26, 212)));
+    map3.insert(StringBorderPair(OUString("A1"), table::BorderLine(0, 53, 26, 9)));
+    BorderLineMap map4;
+    map4.insert(StringBorderPair(OUString("B1"), table::BorderLine(0, 53, 26, 18)));
+    map4.insert(StringBorderPair(OUString("C1"), table::BorderLine(0, 53, 26, 26)));
+    map4.insert(StringBorderPair(OUString("D1"), table::BorderLine(0, 53, 26, 35)));
+    map4.insert(StringBorderPair(OUString("E1"), table::BorderLine(0, 53, 26, 35)));
+    map4.insert(StringBorderPair(OUString("F1"), table::BorderLine(0, 53, 26, 79)));
+    map4.insert(StringBorderPair(OUString("G1"), table::BorderLine(0, 53, 26, 106)));
+    map4.insert(StringBorderPair(OUString("H1"), table::BorderLine(0, 53, 26, 159)));
+    map4.insert(StringBorderPair(OUString("I1"), table::BorderLine(0, 53, 26, 212)));
+    BorderLineMap map5;
+    map5.insert(StringBorderPair(OUString("A1"), table::BorderLine(0, 26, 53, 9)));
+    map5.insert(StringBorderPair(OUString("B1"), table::BorderLine(0, 26, 53, 18)));
+    map5.insert(StringBorderPair(OUString("C1"), table::BorderLine(0, 26, 53, 26)));
+    map5.insert(StringBorderPair(OUString("D1"), table::BorderLine(0, 26, 53, 35)));
+    map5.insert(StringBorderPair(OUString("E1"), table::BorderLine(0, 26, 53, 53)));
+    map5.insert(StringBorderPair(OUString("F1"), table::BorderLine(0, 26, 53, 79)));
+    map5.insert(StringBorderPair(OUString("G1"), table::BorderLine(0, 26, 53, 106)));
+    map5.insert(StringBorderPair(OUString("H1"), table::BorderLine(0, 26, 53, 159)));
+    map5.insert(StringBorderPair(OUString("I1"), table::BorderLine(0, 26, 53, 212)));
+    BorderLineMap map6;
+    map6.insert(StringBorderPair(OUString("A1"), table::BorderLine(0, 14, 14, 26)));
+    map6.insert(StringBorderPair(OUString("B1"), table::BorderLine(0, 26, 26, 53)));
+    map6.insert(StringBorderPair(OUString("C1"), table::BorderLine(0, 41, 41, 79)));
+    map6.insert(StringBorderPair(OUString("D1"), table::BorderLine(0, 53, 53, 106)));
+    map6.insert(StringBorderPair(OUString("E1"), table::BorderLine(0, 79, 79, 159)));
+    map6.insert(StringBorderPair(OUString("F1"), table::BorderLine(0, 106, 106, 212)));
+    BorderLineMap map7;
+    map7.insert(StringBorderPair(OUString("A1"), table::BorderLine(0, 14, 14, 26)));
+    map7.insert(StringBorderPair(OUString("B1"), table::BorderLine(0, 26, 26, 53)));
+    map7.insert(StringBorderPair(OUString("C1"), table::BorderLine(0, 41, 41, 79)));
+    map7.insert(StringBorderPair(OUString("D1"), table::BorderLine(0, 53, 53, 106)));
+    map7.insert(StringBorderPair(OUString("E1"), table::BorderLine(0, 79, 79, 159)));
+    map7.insert(StringBorderPair(OUString("F1"), table::BorderLine(0, 106, 106, 212)));
+
+    sal_Int32 currentTable = 0; //to know which map should we check with the current table
+    BorderLineMap* tempMap;
+    tempMap = &map0;
+    do
+    {
+        uno::Reference<lang::XServiceInfo> xServiceInfo;
+        if (xParaEnum->nextElement() >>= xServiceInfo)
+        {
+            if (xServiceInfo->supportsService("com.sun.star.text.TextTable"))
+            {
+                uno::Reference<text::XTextTable> const xTextTable(xServiceInfo, uno::UNO_QUERY_THROW);
+                uno::Sequence<rtl::OUString> const cells = xTextTable->getCellNames();
+                uno::Sequence< uno::Sequence< sal_Int32 > > borderWidthSequence;
+                sal_Int32 nLength = cells.getLength();
+
+                if(currentTable == sal_Int32(1))
+                    tempMap = &map1;
+                if(currentTable == sal_Int32(2))
+                    tempMap = &map2;
+                if(currentTable == sal_Int32(3))
+                    tempMap = &map3;
+                if(currentTable == sal_Int32(4))
+                    tempMap = &map4;
+                if(currentTable == sal_Int32(5))
+                    tempMap = &map5;
+                if(currentTable == sal_Int32(6))
+                    tempMap = &map6;
+                if(currentTable == sal_Int32(7))
+                    tempMap = &map7;
+
+                BorderLineMap::iterator it;
+                it = tempMap->begin();
+
+                for (sal_Int32 i = 0; i < nLength; ++i)
+                {
+                    uno::Reference<table::XCell> xCell = xTextTable->getCellByName(cells[i]);
+                    uno::Reference< beans::XPropertySet > xPropSet(xCell, uno::UNO_QUERY_THROW);
+                    uno::Any aAny = xPropSet->getPropertyValue("TopBorder");
+                    table::BorderLine aBorderLine;
+                    it = tempMap->find(cells[i]);
+                    if ((aAny >>= aBorderLine) && (it!=tempMap->end()))
+                    {
+                        sal_Int32 innerLineWidth = aBorderLine.InnerLineWidth;
+                        sal_Int32 outerLineWidth = aBorderLine.OuterLineWidth;
+                        sal_Int32 lineDistance = aBorderLine.LineDistance;
+
+                        sal_Int32 perfectInner = it->second.InnerLineWidth;
+                        sal_Int32 perfectOuter = it->second.OuterLineWidth;
+                        sal_Int32 perfectDistance = it->second.LineDistance;
+                        CPPUNIT_ASSERT_EQUAL(perfectInner, innerLineWidth);
+                        CPPUNIT_ASSERT_EQUAL(perfectOuter, outerLineWidth);
+                        CPPUNIT_ASSERT_EQUAL(perfectDistance, lineDistance);
+                    }
+                }
+                ++currentTable;
+            }
+        }
+    } while(xParaEnum->hasMoreElements());
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
 
 CPPUNIT_PLUGIN_IMPLEMENT();


More information about the Libreoffice-commits mailing list