diff options
author | Michael Stahl <mstahl@redhat.com> | 2014-08-29 19:09:29 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2014-08-29 19:18:42 +0200 |
commit | 5b63c12ace2aec9a659e4b9125f6aa9ff204ed09 (patch) | |
tree | d5154c303d9bcc3ddbf7d797a00c27c74d8a4984 /sd/qa | |
parent | f582d9789c15934a65abff36e3c4af107dacc347 (diff) |
n#708518: sd: check that master page matches when setting parent style
In ODF import it happened that the parent style of "outline2" etc.
was always set to the "outline1" style of the first master page in
the document, but it should be the "outline1" style of the same master
page as the "outline2".
(regression from e955433c3574cb602dedba96bc645898f97858bf)
Change-Id: Ie563d5ee5c2040aeb6ca5c8bb25b195e15ea964e
Diffstat (limited to 'sd/qa')
-rw-r--r-- | sd/qa/unit/data/odp/masterpage_style_parent.odp | bin | 0 -> 17790 bytes | |||
-rw-r--r-- | sd/qa/unit/import-tests.cxx | 43 |
2 files changed, 43 insertions, 0 deletions
diff --git a/sd/qa/unit/data/odp/masterpage_style_parent.odp b/sd/qa/unit/data/odp/masterpage_style_parent.odp Binary files differnew file mode 100644 index 000000000000..e9f63784905e --- /dev/null +++ b/sd/qa/unit/data/odp/masterpage_style_parent.odp diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 3131937f26af..33c52398dbac 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -50,6 +50,8 @@ #include <com/sun/star/chart2/data/XDataSequence.hpp> #include <com/sun/star/chart2/data/XNumericalDataSequence.hpp> +#include <stlpool.hxx> + using namespace ::com::sun::star; /// Impress import filters tests. @@ -60,6 +62,7 @@ public: void testSmoketest(); void testN759180(); void testN778859(); + void testMasterPageStyleParent(); void testFdo64512(); void testFdo71075(); void testN828390_2(); @@ -80,6 +83,7 @@ public: CPPUNIT_TEST(testSmoketest); CPPUNIT_TEST(testN759180); CPPUNIT_TEST(testN778859); + CPPUNIT_TEST(testMasterPageStyleParent); CPPUNIT_TEST(testFdo64512); CPPUNIT_TEST(testFdo71075); CPPUNIT_TEST(testN828390_2); @@ -344,6 +348,45 @@ void SdFiltersTest::testN828390_3() xDocShRef->DoClose(); } +void SdFiltersTest::testMasterPageStyleParent() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/odp/masterpage_style_parent.odp"), ODP ); + + SdDrawDocument *pDoc = xDocShRef->GetDoc(); + CPPUNIT_ASSERT_MESSAGE( "no document", pDoc != NULL ); + const SdrPage *pPage = pDoc->GetPage(1); + CPPUNIT_ASSERT_MESSAGE( "no page", pPage != NULL ); + + SdStyleSheetPool *const pPool(pDoc->GetSdStyleSheetPool()); + + int parents(0); + SfxStyleSheetIterator iter(pPool, SD_STYLE_FAMILY_MASTERPAGE); + for (SfxStyleSheetBase * pStyle = iter.First(); pStyle; pStyle = iter.Next()) + { + OUString const name(pStyle->GetName()); + OUString const parent(pStyle->GetParent()); + if (!parent.isEmpty()) + { + ++parents; + // check that parent exists + SfxStyleSheetBase *const pParentStyle( + pPool->Find(parent, SD_STYLE_FAMILY_MASTERPAGE)); + CPPUNIT_ASSERT(pParentStyle); + CPPUNIT_ASSERT_EQUAL(pParentStyle->GetName(), parent); + // check that parent has the same master page as pStyle + CPPUNIT_ASSERT(parent.indexOf(SD_LT_SEPARATOR) != -1); + CPPUNIT_ASSERT(name.indexOf(SD_LT_SEPARATOR) != -1); + CPPUNIT_ASSERT_EQUAL( + parent.copy(0, parent.indexOf(SD_LT_SEPARATOR)), + name.copy(0, name.indexOf(SD_LT_SEPARATOR))); + } + } + // check that there are actually parents... + CPPUNIT_ASSERT_EQUAL(16, parents); + + xDocShRef->DoClose(); +} + void SdFiltersTest::testN778859() { ::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/n778859.pptx"), PPTX); |