2012-07-20 15:34:43 +02:00
|
|
|
/*
|
2013-04-19 21:10:42 +01:00
|
|
|
* This file is part of the LibreOffice project.
|
2012-07-20 15:34:43 +02:00
|
|
|
*
|
2013-04-19 21:10:42 +01:00
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
2012-07-20 15:34:43 +02:00
|
|
|
*/
|
|
|
|
|
2012-11-18 11:07:45 +01:00
|
|
|
#include <swmodeltestbase.hxx>
|
2013-01-29 15:49:44 +01:00
|
|
|
#include <com/sun/star/awt/Gradient.hpp>
|
|
|
|
#include <com/sun/star/drawing/FillStyle.hpp>
|
2012-07-20 15:34:43 +02:00
|
|
|
|
|
|
|
class Test : public SwModelTestBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
void testFdo38244();
|
2012-10-09 18:33:22 +02:00
|
|
|
void testFirstHeaderFooter();
|
2013-01-29 15:49:44 +01:00
|
|
|
void testTextframeGradient();
|
2013-03-20 10:43:57 +01:00
|
|
|
void testFdo60769();
|
2012-07-20 15:34:43 +02:00
|
|
|
|
|
|
|
CPPUNIT_TEST_SUITE(Test);
|
|
|
|
#if !defined(MACOSX) && !defined(WNT)
|
2012-10-20 11:42:15 +02:00
|
|
|
CPPUNIT_TEST(run);
|
2012-07-20 15:34:43 +02:00
|
|
|
#endif
|
|
|
|
CPPUNIT_TEST_SUITE_END();
|
|
|
|
|
|
|
|
private:
|
2012-10-20 11:42:15 +02:00
|
|
|
void run();
|
2012-07-20 15:34:43 +02:00
|
|
|
};
|
|
|
|
|
2012-10-20 11:42:15 +02:00
|
|
|
void Test::run()
|
2012-07-20 15:34:43 +02:00
|
|
|
{
|
2012-10-20 11:42:15 +02:00
|
|
|
MethodEntry<Test> aMethods[] = {
|
|
|
|
{"fdo38244.odt", &Test::testFdo38244},
|
|
|
|
{"first-header-footer.odt", &Test::testFirstHeaderFooter},
|
2013-01-29 15:49:44 +01:00
|
|
|
{"textframe-gradient.odt", &Test::testTextframeGradient},
|
2013-03-20 10:43:57 +01:00
|
|
|
{"fdo60769.odt", &Test::testFdo60769},
|
2012-10-20 11:42:15 +02:00
|
|
|
};
|
2012-12-21 22:07:47 +01:00
|
|
|
header();
|
2012-10-20 11:42:15 +02:00
|
|
|
for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i)
|
|
|
|
{
|
|
|
|
MethodEntry<Test>& rEntry = aMethods[i];
|
2012-12-21 22:07:47 +01:00
|
|
|
load("/sw/qa/extras/odfexport/data/", rEntry.pName);
|
2012-10-20 11:42:15 +02:00
|
|
|
// If the testcase is stored in some other format, it's pointless to test.
|
|
|
|
if (OString(rEntry.pName).endsWith(".odt"))
|
|
|
|
(this->*rEntry.pMethod)();
|
2012-12-21 22:07:47 +01:00
|
|
|
reload("writer8");
|
2012-10-20 11:42:15 +02:00
|
|
|
(this->*rEntry.pMethod)();
|
2012-12-21 22:07:47 +01:00
|
|
|
finish();
|
2012-10-20 11:42:15 +02:00
|
|
|
}
|
2012-07-20 15:34:43 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void Test::testFdo38244()
|
|
|
|
{
|
|
|
|
// See ooxmlexport's testFdo38244().
|
|
|
|
|
|
|
|
// Test comment range feature.
|
|
|
|
uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
|
|
|
|
uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParaEnum->nextElement(), uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration();
|
|
|
|
xRunEnum->nextElement();
|
|
|
|
uno::Reference<beans::XPropertySet> xPropertySet(xRunEnum->nextElement(), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("TextFieldStart"), getProperty<OUString>(xPropertySet, "TextPortionType"));
|
|
|
|
xRunEnum->nextElement();
|
|
|
|
xPropertySet.set(xRunEnum->nextElement(), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("TextFieldEnd"), getProperty<OUString>(xPropertySet, "TextPortionType"));
|
|
|
|
|
|
|
|
// Test properties
|
|
|
|
uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
|
|
|
|
uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
|
|
|
|
xPropertySet.set(xFields->nextElement(), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("__Fieldmark__4_1833023242"), getProperty<OUString>(xPropertySet, "Name"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("M"), getProperty<OUString>(xPropertySet, "Initials"));
|
|
|
|
}
|
|
|
|
|
2012-10-09 18:33:22 +02:00
|
|
|
void Test::testFirstHeaderFooter()
|
|
|
|
{
|
|
|
|
// Test import and export of the header-first token.
|
|
|
|
|
|
|
|
// The document has 6 pages, two page styles for the first and second half of pages.
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("First header"), parseDump("/root/page[1]/header/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("First footer"), parseDump("/root/page[1]/footer/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Left header"), parseDump("/root/page[2]/header/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Left footer"), parseDump("/root/page[2]/footer/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Right header"), parseDump("/root/page[3]/header/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Right footer"), parseDump("/root/page[3]/footer/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("First header2"), parseDump("/root/page[4]/header/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("First footer2"), parseDump("/root/page[4]/footer/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Right header2"), parseDump("/root/page[5]/header/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Right footer2"), parseDump("/root/page[5]/footer/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Left header2"), parseDump("/root/page[6]/header/txt/text()"));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Left footer2"), parseDump("/root/page[6]/footer/txt/text()"));
|
|
|
|
}
|
|
|
|
|
2013-01-29 15:49:44 +01:00
|
|
|
void Test::testTextframeGradient()
|
|
|
|
{
|
|
|
|
uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle"));
|
|
|
|
awt::Gradient aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(0xC0504D), aGradient.StartColor);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(0xD99594), aGradient.EndColor);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);
|
|
|
|
|
|
|
|
xFrame.set(xIndexAccess->getByIndex(1), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle"));
|
|
|
|
aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(0x000000), aGradient.StartColor);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(0x666666), aGradient.EndColor);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);
|
|
|
|
}
|
|
|
|
|
2013-03-20 10:43:57 +01:00
|
|
|
void Test::testFdo60769()
|
|
|
|
{
|
|
|
|
// Test multi-paragraph comment range feature.
|
|
|
|
uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
|
|
|
|
uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParaEnum->nextElement(), uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration();
|
|
|
|
while (xRunEnum->hasMoreElements())
|
|
|
|
{
|
|
|
|
uno::Reference<beans::XPropertySet> xPropertySet(xRunEnum->nextElement(), uno::UNO_QUERY);
|
|
|
|
OUString aType = getProperty<OUString>(xPropertySet, "TextPortionType");
|
|
|
|
// First paragraph: no field end, no anchor
|
|
|
|
CPPUNIT_ASSERT(aType == "Text" || aType == "TextFieldStart");
|
|
|
|
}
|
|
|
|
|
|
|
|
xRunEnumAccess.set(xParaEnum->nextElement(), uno::UNO_QUERY);
|
|
|
|
while (xRunEnum->hasMoreElements())
|
|
|
|
{
|
|
|
|
uno::Reference<beans::XPropertySet> xPropertySet(xRunEnum->nextElement(), uno::UNO_QUERY);
|
|
|
|
OUString aType = getProperty<OUString>(xPropertySet, "TextPortionType");
|
|
|
|
// Second paragraph: no field start
|
|
|
|
CPPUNIT_ASSERT(aType == "Text" || aType == "TextFieldEnd" || aType == "TextFieldEnd");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-07-20 15:34:43 +02:00
|
|
|
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
|
|
|
|
|
|
|
|
CPPUNIT_PLUGIN_IMPLEMENT();
|
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|