summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2012-10-17 10:09:57 +0200
committerMiklos Vajna <vmiklos@suse.cz>2012-10-17 10:09:57 +0200
commitcf16c324c98e597517eff73b24234d78567b9db1 (patch)
tree50a5121ca1ff07986b816e036b78ec6e6ea01d23
parent625e91c75fe66d4e067213a561f19e626cfbfa93 (diff)
fdo#46669 testcase
-rw-r--r--sw/CppunitTest_sw_subsequent_rtfimport.mk1
-rw-r--r--sw/qa/extras/rtfimport/data/copypaste-pagestyle-paste.rtf17
-rw-r--r--sw/qa/extras/rtfimport/data/copypaste-pagestyle.rtf3
-rw-r--r--sw/qa/extras/rtfimport/rtfimport.cxx29
4 files changed, 50 insertions, 0 deletions
diff --git a/sw/CppunitTest_sw_subsequent_rtfimport.mk b/sw/CppunitTest_sw_subsequent_rtfimport.mk
index 2cc2110594eb..906bf57236ec 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 000000000000..3eca5f0275f2
--- /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 000000000000..6ab0e635f3f8
--- /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 28517ee7dad1..d0376b7aca40 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();