2012-07-20 15:34:43 +02:00
|
|
|
/*
|
|
|
|
* Version: MPL 1.1 / GPLv3+ / LGPLv3+
|
|
|
|
*
|
|
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
|
|
* the License. You may obtain a copy of the License at
|
|
|
|
* http://www.mozilla.org/MPL/
|
|
|
|
*
|
|
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
|
|
* for the specific language governing rights and limitations under the
|
|
|
|
* License.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is
|
|
|
|
* Miklos Vajna <vmiklos@suse.cz> (SUSE, Inc.)
|
|
|
|
* Portions created by the Initial Developer are Copyright (C) 2012 the
|
|
|
|
* Initial Developer. All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
|
|
|
*
|
|
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
|
|
* either the GNU General Public License Version 3 or later (the "GPLv3+"), or
|
|
|
|
* the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
|
|
|
|
* in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
|
|
|
|
* instead of those above.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "../swmodeltestbase.hxx"
|
|
|
|
|
|
|
|
#include <unotools/tempfile.hxx>
|
|
|
|
|
|
|
|
class Test : public SwModelTestBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
void testFdo38244();
|
2012-10-09 18:33:22 +02:00
|
|
|
void testFirstHeaderFooter();
|
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},
|
|
|
|
};
|
|
|
|
for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i)
|
|
|
|
{
|
|
|
|
MethodEntry<Test>& rEntry = aMethods[i];
|
|
|
|
mxComponent = loadFromDesktop(getURLFromSrc("/sw/qa/extras/odfexport/data/") + OUString::createFromAscii(rEntry.pName));
|
|
|
|
// If the testcase is stored in some other format, it's pointless to test.
|
|
|
|
if (OString(rEntry.pName).endsWith(".odt"))
|
|
|
|
(this->*rEntry.pMethod)();
|
|
|
|
uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Sequence<beans::PropertyValue> aArgs(1);
|
|
|
|
aArgs[0].Name = "FilterName";
|
|
|
|
aArgs[0].Value <<= OUString("writer8");
|
|
|
|
utl::TempFile aTempFile;
|
|
|
|
aTempFile.EnableKillingFile();
|
|
|
|
xStorable->storeToURL(aTempFile.GetURL(), aArgs);
|
|
|
|
uno::Reference<lang::XComponent> xComponent(xStorable, uno::UNO_QUERY);
|
|
|
|
xComponent->dispose();
|
|
|
|
mxComponent = loadFromDesktop(aTempFile.GetURL());
|
|
|
|
(this->*rEntry.pMethod)();
|
|
|
|
}
|
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()"));
|
|
|
|
}
|
|
|
|
|
2012-07-20 15:34:43 +02:00
|
|
|
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
|
|
|
|
|
|
|
|
CPPUNIT_PLUGIN_IMPLEMENT();
|
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|