[Libreoffice-commits] .: sw/CppunitTest_sw_subsequent_rtfimport.mk sw/qa

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Oct 17 01:08:32 PDT 2012


 sw/CppunitTest_sw_subsequent_rtfimport.mk                 |    1 
 sw/qa/extras/rtfimport/data/copypaste-pagestyle-paste.rtf |   17 ++++++++
 sw/qa/extras/rtfimport/data/copypaste-pagestyle.rtf       |    3 +
 sw/qa/extras/rtfimport/rtfimport.cxx                      |   29 ++++++++++++++
 4 files changed, 50 insertions(+)

New commits:
commit cf16c324c98e597517eff73b24234d78567b9db1
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Wed Oct 17 10:09:57 2012 +0200

    fdo#46669 testcase

diff --git a/sw/CppunitTest_sw_subsequent_rtfimport.mk b/sw/CppunitTest_sw_subsequent_rtfimport.mk
index 2cc2110..906bf57 100644
--- a/sw/CppunitTest_sw_subsequent_rtfimport.mk
+++ b/sw/CppunitTest_sw_subsequent_rtfimport.mk
@@ -43,6 +43,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_subsequent_rtfimport, \
     unotest \
     vcl \
     tl \
+    utl \
 	$(gb_UWINAPI) \
 ))
 
diff --git a/sw/qa/extras/rtfimport/data/copypaste-pagestyle-paste.rtf b/sw/qa/extras/rtfimport/data/copypaste-pagestyle-paste.rtf
new file mode 100644
index 0000000..3eca5f0
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/copypaste-pagestyle-paste.rtf
@@ -0,0 +1,17 @@
+{\rtf\ansi
+{\fonttbl
+{\f0\froman\fprq2\fcharset0 Times New Roman;}
+{\f1\fprq2\fcharset0 Arial;}
+{\f2\fprq2\fcharset0 Arial;}
+{\f3\fswiss\fprq2\fcharset0 Arial;}
+{\f4\fprq2\fcharset0 Droid Sans Fallback;}
+}
+{\colortbl\red255\green255\blue255;}
+{\*\EditEnginePoolDefaults\ltrpar\fi0\li0\ri0\fi0\li0\ri0\sb0\sa0\sl0\slmult0\ql\cf0\f0\fs13\b0\ulnone\strike0\i0\outl0\shad0\kerning0\expndtw0\f1\f1\fs13\fs13\b0\b0\i0\i0\accnone\olnone}
+\deftab408
+{
+\ltrpar\f3\fs20\b0\ulnone\strike0\i0\outl0\shad0\f4\f1\fs20\fs20\b0\b0\i0\i0\accnone\olnone 
+{\f3\fs20\b0\i0 1}
+\par\pard\plain
+}
+}
diff --git a/sw/qa/extras/rtfimport/data/copypaste-pagestyle.rtf b/sw/qa/extras/rtfimport/data/copypaste-pagestyle.rtf
new file mode 100644
index 0000000..6ab0e63
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/copypaste-pagestyle.rtf
@@ -0,0 +1,3 @@
+{\rtf1
+\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134
+\par }
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 28517ee..d0376b7 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -28,6 +28,8 @@
 #include "../swmodeltestbase.hxx"
 #include "bordertest.hxx"
 
+#include <com/sun/star/document/XFilter.hpp>
+#include <com/sun/star/document/XImporter.hpp>
 #include <com/sun/star/drawing/EnhancedCustomShapeSegment.hpp>
 #include <com/sun/star/drawing/XDrawPageSupplier.hpp>
 #include <com/sun/star/graphic/GraphicType.hpp>
@@ -54,6 +56,8 @@
 #include <rtl/ustring.hxx>
 #include <vcl/outdev.hxx>
 #include <vcl/svapp.hxx>
+#include <unotools/ucbstreamhelper.hxx>
+#include <unotools/streamwrap.hxx>
 
 #define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
 
@@ -110,6 +114,7 @@ public:
     void testFdo49655();
     void testFdo52475();
     void testFdo55493();
+    void testCopyPastePageStyle();
 
     CPPUNIT_TEST_SUITE(Test);
 #if !defined(MACOSX) && !defined(WNT)
@@ -163,6 +168,7 @@ public:
     CPPUNIT_TEST(testFdo49655);
     CPPUNIT_TEST(testFdo52475);
     CPPUNIT_TEST(testFdo55493);
+    CPPUNIT_TEST(testCopyPastePageStyle);
 #endif
     CPPUNIT_TEST_SUITE_END();
 
@@ -864,6 +870,29 @@ void Test::testFdo55493()
     CPPUNIT_ASSERT_EQUAL(sal_Int32(3969), xShape->getSize().Width);
 }
 
+void Test::testCopyPastePageStyle()
+{
+    // The problem was that RTF import during copy&paste did not ignore page styles.
+    load("copypaste-pagestyle.rtf");
+
+    // Once we have more copy&paste tests, makes sense to refactor this to some helper method.
+    uno::Reference<uno::XInterface> xInterface(m_xSFactory->createInstance("com.sun.star.comp.Writer.RtfFilter"), uno::UNO_QUERY_THROW);
+    uno::Reference<document::XImporter> xImporter(xInterface, uno::UNO_QUERY_THROW);
+    xImporter->setTargetDocument(mxComponent);
+    uno::Reference<document::XFilter> xFilter(xInterface, uno::UNO_QUERY_THROW);
+    uno::Sequence<beans::PropertyValue> aDescriptor(2);
+    aDescriptor[0].Name = "InputStream";
+    SvStream* pStream = utl::UcbStreamHelper::CreateStream(getURLFromSrc("/sw/qa/extras/rtfimport/data/") + "copypaste-pagestyle-paste.rtf", STREAM_WRITE);
+    uno::Reference<io::XStream> xStream(new utl::OStreamWrapper(*pStream));
+    aDescriptor[0].Value <<= xStream;
+    aDescriptor[1].Name = "IsNewDoc";
+    aDescriptor[1].Value <<= sal_False;
+    xFilter->filter(aDescriptor);
+
+    uno::Reference<beans::XPropertySet> xPropertySet(getStyles("PageStyles")->getByName("Default"), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(21001), getProperty<sal_Int32>(xPropertySet, "Width")); // Was letter, i.e. 21590
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
 
 CPPUNIT_PLUGIN_IMPLEMENT();


More information about the Libreoffice-commits mailing list