[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - sc/qa sc/source vcl/source

2020-10-04 Thread Xisco Fauli (via logerrit)
 sc/qa/uitest/autofilter/autofilter.py |   28 
 sc/source/ui/view/gridwin.cxx |   19 ---
 vcl/source/treelist/uiobject.cxx  |1 +
 3 files changed, 41 insertions(+), 7 deletions(-)

New commits:
commit 40927b3792450142966cc7b5137ec6f084680d30
Author: Xisco Fauli 
AuthorDate: Thu Sep 24 21:16:05 2020 +0200
Commit: Thorsten Behrens 
CommitDate: Sun Oct 4 11:44:26 2020 +0200

tdf#134351: do not apply autofilter if all entries are selected

Change-Id: I33cdfe07cc53b579bbe16486f302daf7bd3da841
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103352
Tested-by: Jenkins
Reviewed-by: Xisco Fauli 
Signed-off-by: Xisco Fauli 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103388
Reviewed-by: Thorsten Behrens 

diff --git a/sc/qa/uitest/autofilter/autofilter.py 
b/sc/qa/uitest/autofilter/autofilter.py
index 57504e66e8e9..e1aea9c1e303 100644
--- a/sc/qa/uitest/autofilter/autofilter.py
+++ b/sc/qa/uitest/autofilter/autofilter.py
@@ -8,6 +8,7 @@
 from uitest.framework import UITestCase
 from uitest.path import get_srcdir_url
 
+from uitest.uihelper.common import get_state_as_dict
 from libreoffice.uno.propertyvalue import mkPropertyValues
 from libreoffice.calc.document import get_row
 
@@ -70,4 +71,31 @@ class AutofilterTest(UITestCase):
 self.assertTrue(is_row_hidden(doc, 3))
 self.assertFalse(is_row_hidden(doc, 4))
 
+def test_tdf134351(self):
+doc = self.ui_test.load_file(get_url_for_data_file("autofilter.ods"))
+
+xGridWin = self.xUITest.getTopFocusWindow().getChild("grid_window")
+xGridWin.executeAction("LAUNCH", mkPropertyValues({"AUTOFILTER": "", 
"COL": "0", "ROW": "0"}))
+
+xFloatWindow = self.xUITest.getFloatWindow()
+xCheckListMenu = xFloatWindow.getChild("check_list_menu")
+
+xTreeList = xCheckListMenu.getChild("check_list_box")
+
+self.assertEqual(2, len(xTreeList.getChildren()))
+
self.assertTrue(get_state_as_dict(xTreeList.getChild('0'))['IsSelected'])
+
self.assertTrue(get_state_as_dict(xTreeList.getChild('1'))['IsSelected'])
+
+xOkBtn = xFloatWindow.getChild("ok")
+xOkBtn.executeAction("CLICK", tuple())
+
+self.assertFalse(is_row_hidden(doc, 0))
+# Without the fix in place, this test would have failed here
+self.assertFalse(is_row_hidden(doc, 1))
+self.assertFalse(is_row_hidden(doc, 2))
+self.assertFalse(is_row_hidden(doc, 3))
+self.assertFalse(is_row_hidden(doc, 4))
+
+self.ui_test.close_doc()
+
 # vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 0cf3171679cd..6390343c42fe 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -813,13 +813,18 @@ void 
ScGridWindow::UpdateAutoFilterFromMenu(AutoFilterMode eMode)
 if (aResult == aSaveAutoFilterResult)
 {
 SAL_INFO("sc.ui", "Apply autofilter to data when entries are the 
same");
-// Apply autofilter to data
-ScQueryEntry* pEntry = aParam.FindEntryByField(rPos.Col(), true);
-pEntry->bDoQuery = true;
-pEntry->nField = rPos.Col();
-pEntry->eConnect = SC_AND;
-pEntry->eOp = SC_EQUAL;
-pViewData->GetView()->Query(aParam, nullptr, true);
+
+if (!mpAutoFilterPopup->isAllSelected())
+{
+// Apply autofilter to data
+ScQueryEntry* pEntry = aParam.FindEntryByField(rPos.Col(), 
true);
+pEntry->bDoQuery = true;
+pEntry->nField = rPos.Col();
+pEntry->eConnect = SC_AND;
+pEntry->eOp = SC_EQUAL;
+pViewData->GetView()->Query(aParam, nullptr, true);
+}
+
 return;
 }
 }
diff --git a/vcl/source/treelist/uiobject.cxx b/vcl/source/treelist/uiobject.cxx
index 2478ab8786df..a2f18abee4b9 100644
--- a/vcl/source/treelist/uiobject.cxx
+++ b/vcl/source/treelist/uiobject.cxx
@@ -106,6 +106,7 @@ StringMap TreeListEntryUIObject::get_state()
 aMap["Text"] = mxTreeList->GetEntryText(mpEntry);
 aMap["Children"] = 
OUString::number(mxTreeList->GetLevelChildCount(mpEntry));
 aMap["VisibleChildCount"] = 
OUString::number(mxTreeList->GetVisibleChildCount(mpEntry));
+aMap["IsSelected"] = OUString::boolean(mxTreeList->IsSelected(mpEntry));
 
 return aMap;
 }
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - sc/qa sc/source

2020-09-08 Thread Caolán McNamara (via logerrit)
 sc/qa/unit/functions_test.cxx|4 
 sc/source/core/tool/interpr8.cxx |2 ++
 2 files changed, 2 insertions(+), 4 deletions(-)

New commits:
commit 69b287731c1c4693ab9d2ed696e829a15f01071d
Author: Caolán McNamara 
AuthorDate: Thu Sep 3 11:51:41 2020 +0100
Commit: Miklos Vajna 
CommitDate: Tue Sep 8 17:08:02 2020 +0200

intermittent forecast.ets.add.fods failure

valgrinding the forecast.ets.add.fods failure gives...

a) mnSmplInPrd is 9
b) ScETSForecastCalculation::prefillPerIdx:476 fills mpPerIdx to index 8 
with values.
c) ScETSForecastCalculation::refill:791 (the bAdditive branch)
   due to nIdx = ( i > mnSmplInPrd ? i - mnSmplInPrd : i ) with i of 9 
gives nIdx of 9 and
   uninit mpPerIdx[9] is used in the calculation.
d) At line 799 (the !bAdditive branch)
   due to nIdx = ( i >= mnSmplInPrd ? i - mnSmplInPrd : i ) the nIdx used 
would be 0 not 9
   under the same circumstances

extending the initialization of prefillPerIdx to zeroing out the next index 
gives the same
results as we usually get and test passes without a need to change it while 
avoiding the use
of an uninitialized value.

Change-Id: Ib4629b28ecf2389c0c7611137b756d4d2d9fd700
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101997
Tested-by: Caolán McNamara 
Reviewed-by: Caolán McNamara 
(cherry picked from commit e3545d491e2a2c4ff609a63385994f0c8d388edf)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101961
Tested-by: Jenkins
Reviewed-by: Miklos Vajna 

diff --git a/sc/qa/unit/functions_test.cxx b/sc/qa/unit/functions_test.cxx
index 1a48c03432d9..16e0a530a5e5 100644
--- a/sc/qa/unit/functions_test.cxx
+++ b/sc/qa/unit/functions_test.cxx
@@ -40,10 +40,6 @@ bool FunctionsTest::load(const OUString& rFilter, const 
OUString& rURL,
 
 ScDocument& rDoc = xDocShRef->GetDocument();
 
-#ifdef __APPLE__
-// FIXME tends to fail a lot
-if (!rURL.endsWith("forecast.ets.add.fods"))
-#endif
 CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, rDoc.GetValue(1, 2, 0), 1e-14);
 
 xDocShRef->DoClose();
diff --git a/sc/source/core/tool/interpr8.cxx b/sc/source/core/tool/interpr8.cxx
index 92ea9ab1ac11..d380a057176b 100644
--- a/sc/source/core/tool/interpr8.cxx
+++ b/sc/source/core/tool/interpr8.cxx
@@ -475,6 +475,8 @@ bool ScETSForecastCalculation::prefillPerIdx()
 }
 mpPerIdx[ j ] = fI / nPeriods;
 }
+if (mnSmplInPrd < mnCount)
+mpPerIdx[mnSmplInPrd] = 0.0;
 }
 return true;
 }
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - sc/qa sc/source

2020-08-04 Thread Attila Szűcs (via logerrit)
 sc/qa/unit/data/xlsx/tdf134817_HeaderFooterTextWith2Section.xlsx |binary
 sc/qa/unit/subsequent_export-test.cxx|   20 
++
 sc/source/filter/excel/xehelper.cxx  |2 -
 3 files changed, 21 insertions(+), 1 deletion(-)

New commits:
commit ceb2282e392dbe90379a893b2282d9d5beae89ed
Author: Attila Szűcs 
AuthorDate: Fri Jul 17 09:21:45 2020 +0200
Commit: Xisco Fauli 
CommitDate: Tue Aug 4 12:16:42 2020 +0200

tdf#134817 XLSX export: fix partially lost header/footer

When header/footer text contain text portions with different
font setting, only the last text portion was exported.

Co-authored-by: Tibor Nagy (NISZ)

Change-Id: Id4cba2b9188459cdaa0ade30c2217d8f59fe6316
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98938
Tested-by: László Németh 
Reviewed-by: László Németh 
Signed-off-by: Xisco Fauli 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99788
Tested-by: Jenkins
Reviewed-by: Attila Szűcs 

diff --git a/sc/qa/unit/data/xlsx/tdf134817_HeaderFooterTextWith2Section.xlsx 
b/sc/qa/unit/data/xlsx/tdf134817_HeaderFooterTextWith2Section.xlsx
new file mode 100644
index ..224ac8d18429
Binary files /dev/null and 
b/sc/qa/unit/data/xlsx/tdf134817_HeaderFooterTextWith2Section.xlsx differ
diff --git a/sc/qa/unit/subsequent_export-test.cxx 
b/sc/qa/unit/subsequent_export-test.cxx
index 096c95e0f575..d74d4d63d0ec 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -249,6 +249,7 @@ public:
 void testTdf131372();
 void testTdf122331();
 void testTdf83779();
+void testTdf134817_HeaderFooterTextWith2SectionXLSX();
 
 CPPUNIT_TEST_SUITE(ScExportTest);
 CPPUNIT_TEST(test);
@@ -396,6 +397,7 @@ public:
 CPPUNIT_TEST(testTdf131372);
 CPPUNIT_TEST(testTdf122331);
 CPPUNIT_TEST(testTdf83779);
+CPPUNIT_TEST(testTdf134817_HeaderFooterTextWith2SectionXLSX);
 
 CPPUNIT_TEST_SUITE_END();
 
@@ -5081,6 +5083,24 @@ void ScExportTest::testTdf83779()
 xShell->DoClose();
 }
 
+void ScExportTest::testTdf134817_HeaderFooterTextWith2SectionXLSX()
+{
+// Header/footer text with multiple selection should be exported, and 
imported properly
+ScDocShellRef xShell = loadDoc("tdf134817_HeaderFooterTextWith2Section.", 
FORMAT_XLSX);
+CPPUNIT_ASSERT(xShell.is());
+
+ScDocShellRef xDocSh = saveAndReload(&(*xShell), FORMAT_XLSX);
+CPPUNIT_ASSERT(xDocSh.is());
+
+xmlDocUniquePtr pDoc = XPathHelper::parseExport2(*this, *xDocSh, 
m_xSFactory, "xl/worksheets/sheet1.xml", FORMAT_XLSX);
+CPPUNIT_ASSERT(pDoc);
+
+assertXPathContent(pDoc, "/x:worksheet/x:headerFooter/x:oddHeader", 
"&\"Abadi,Regular\"&11aaa&\"Bembo,Regular\"&20bbb");
+assertXPathContent(pDoc, "/x:worksheet/x:headerFooter/x:oddFooter", 
"&\"Cambria,Regular\"&14camb&\"Dante,Regular\"&18dant");
+
+xDocSh->DoClose();
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(ScExportTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sc/source/filter/excel/xehelper.cxx 
b/sc/source/filter/excel/xehelper.cxx
index 6584c314aae5..88dcabe1b58f 100644
--- a/sc/source/filter/excel/xehelper.cxx
+++ b/sc/source/filter/excel/xehelper.cxx
@@ -739,7 +739,7 @@ void XclExpHFConverter::AppendPortion( const 
EditTextObject* pTextObj, sal_Unico
  (aFontData.mbItalic != aNewData.mbItalic);
 if( bNewFont || (bNewStyle && pFontList) )
 {
-aParaText = "&\"" + aNewData.maName;
+aParaText.append("&\"").append(aNewData.maName);
 if( pFontList )
 {
 FontMetric aFontMetric( pFontList->Get(
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - sc/qa sc/source

2020-07-01 Thread Eike Rathke (via logerrit)
 sc/qa/unit/uicalc/uicalc.cxx |8 -
 sc/source/core/tool/interpr1.cxx |   58 ++-
 2 files changed, 40 insertions(+), 26 deletions(-)

New commits:
commit 5eb23da4c4a6ba6c35142918d0313432365b8e51
Author: Eike Rathke 
AuthorDate: Tue Jun 30 23:08:31 2020 +0200
Commit: Eike Rathke 
CommitDate: Wed Jul 1 12:41:44 2020 +0200

Resolves: tdf#85551 OFFSET() NewWidth and NewHeight must be >0 if given

This also makes it necessary to adjust a test that reused the bug
document for a different scenario but checked the result.

Change-Id: I80136747445d5029aa5c894270448f002c567e3c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97553
Reviewed-by: Eike Rathke 
Tested-by: Jenkins
(cherry picked from commit f31d8d61859bb375c99419ff176adca27a9197b6)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97509

diff --git a/sc/qa/unit/uicalc/uicalc.cxx b/sc/qa/unit/uicalc/uicalc.cxx
index 694644b77df3..b68c5e6cd941 100644
--- a/sc/qa/unit/uicalc/uicalc.cxx
+++ b/sc/qa/unit/uicalc/uicalc.cxx
@@ -123,14 +123,18 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf124816)
 ScDocument* pDoc = pModelObj->GetDocument();
 CPPUNIT_ASSERT(pDoc);
 
+// The actual result is completely unrelated to this test and behaviour of
+// OFFSET() was changed as of tdf#85551 and here result of that test
+// document is now Err:502 instead of 0.
+const OUString aExpectedResult("Err:502");
 checkCurrentCell(3, 9);
-CPPUNIT_ASSERT_EQUAL(OUString("0"), pDoc->GetString(ScAddress(3, 9, 0)));
+CPPUNIT_ASSERT_EQUAL(aExpectedResult, pDoc->GetString(ScAddress(3, 9, 0)));
 
 //Without the fix, it would crash
 dispatchCommand(mxComponent, ".uno:InsertRowsBefore", {});
 CPPUNIT_ASSERT_EQUAL(OUString(""), pDoc->GetString(ScAddress(3, 9, 0)));
 dispatchCommand(mxComponent, ".uno:Undo", {});
-CPPUNIT_ASSERT_EQUAL(OUString("0"), pDoc->GetString(ScAddress(3, 9, 0)));
+CPPUNIT_ASSERT_EQUAL(aExpectedResult, pDoc->GetString(ScAddress(3, 9, 0)));
 }
 
 CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf124815)
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index d4f134fa0b19..8af767c9b00e 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -8319,35 +8319,53 @@ void ScInterpreter::ScOffset()
 sal_uInt8 nParamCount = GetByte();
 if ( MustHaveParamCount( nParamCount, 3, 5 ) )
 {
-sal_Int32 nColNew = -1, nRowNew = -1, nColPlus, nRowPlus;
+bool bNewWidth = false;
+bool bNewHeight = false;
+sal_Int32 nColNew = 1, nRowNew = 1;
 if (nParamCount == 5)
-nColNew = GetInt32();
+{
+if (IsMissing())
+PopError();
+else
+{
+nColNew = GetInt32();
+bNewWidth = true;
+}
+}
 if (nParamCount >= 4)
-nRowNew = GetInt32WithDefault(-1);
-nColPlus = GetInt32();
-nRowPlus = GetInt32();
+{
+if (IsMissing())
+PopError();
+else
+{
+nRowNew = GetInt32();
+bNewHeight = true;
+}
+}
+sal_Int32 nColPlus = GetInt32();
+sal_Int32 nRowPlus = GetInt32();
 if (nGlobalError != FormulaError::NONE)
 {
 PushError( nGlobalError);
 return;
 }
+if (nColNew <= 0 || nRowNew <= 0)
+{
+PushIllegalArgument();
+return;
+}
 SCCOL nCol1(0);
 SCROW nRow1(0);
 SCTAB nTab1(0);
 SCCOL nCol2(0);
 SCROW nRow2(0);
 SCTAB nTab2(0);
-if (nColNew == 0 || nRowNew == 0)
-{
-PushIllegalArgument();
-return;
-}
 switch (GetStackType())
 {
 case svSingleRef:
 {
 PopSingleRef(nCol1, nRow1, nTab1);
-if (nParamCount == 3 || (nColNew < 0 && nRowNew < 0))
+if (!bNewWidth && !bNewHeight)
 {
 nCol1 = static_cast(static_cast(nCol1) + 
nColPlus);
 nRow1 = static_cast(static_cast(nRow1) + 
nRowPlus);
@@ -8358,10 +8376,6 @@ void ScInterpreter::ScOffset()
 }
 else
 {
-if (nColNew < 0)
-nColNew = 1;
-if (nRowNew < 0)
-nRowNew = 1;
 nCol1 = static_cast(static_cast(nCol1)+nColPlus);
 nRow1 = static_cast(static_cast(nRow1)+nRowPlus);
 nCol2 = static_cast(static_cast(nCol1)+nColNew-1);
@@ -8385,7 +8399,7 @@ void ScInterpreter::ScOffset()
 nRow1 = aAbsRef.Row();
 nTab1 = aAbsRef.Tab();
 
-if (nParamCount == 3 || (nColNew < 0 && nRowNew < 0))
+if (!bNewWidth && !bNewHeight)
 {
 nCol1 = 

[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - sc/qa sc/source

2020-05-31 Thread Szabolcs Toth (via logerrit)
 sc/qa/unit/data/xlsx/testShapeRotationImport.xlsx |binary
 sc/qa/unit/subsequent_filters-test.cxx|   49 ++
 sc/source/filter/oox/drawingfragment.cxx  |   37 ++--
 3 files changed, 82 insertions(+), 4 deletions(-)

New commits:
commit d24e590cab4c948f19d4eaa00eaec81364c5b8ee
Author: Szabolcs Toth 
AuthorDate: Thu May 21 09:06:08 2020 +0200
Commit: Adolfo Jayme Barrientos 
CommitDate: Sun May 31 22:34:55 2020 +0200

tdf#83593 XLSX DrawingML shape import: fix missing rotation

caused by broken import of xdr:twoCellAnchor.

Co-authored-by: Balázs Regényi

Change-Id: I3f382c3c9b2428e825a3e6d954c65356942f9158
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94611
Tested-by: László Németh 
Reviewed-by: László Németh 
(cherry picked from commit 130e6a3f4493b987a7d0b177cc84d65219b47d13)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95192
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos 

diff --git a/sc/qa/unit/data/xlsx/testShapeRotationImport.xlsx 
b/sc/qa/unit/data/xlsx/testShapeRotationImport.xlsx
new file mode 100644
index ..125a3ccaabd0
Binary files /dev/null and b/sc/qa/unit/data/xlsx/testShapeRotationImport.xlsx 
differ
diff --git a/sc/qa/unit/subsequent_filters-test.cxx 
b/sc/qa/unit/subsequent_filters-test.cxx
index e56ebd256eb1..3292058ed979 100644
--- a/sc/qa/unit/subsequent_filters-test.cxx
+++ b/sc/qa/unit/subsequent_filters-test.cxx
@@ -77,6 +77,7 @@
 
 #include "helper/qahelper.hxx"
 #include "helper/shared_test_impl.hxx"
+#include 
 
 namespace com::sun::star::frame { class XModel; }
 
@@ -257,6 +258,7 @@ public:
 void testAutoheight2Rows();
 void testXLSDefColWidth();
 void testPreviewMissingObjLink();
+void testShapeRotationImport();
 
 CPPUNIT_TEST_SUITE(ScFiltersTest);
 CPPUNIT_TEST(testBooleanFormatXLSX);
@@ -405,6 +407,7 @@ public:
 CPPUNIT_TEST(testAutoheight2Rows);
 CPPUNIT_TEST(testXLSDefColWidth);
 CPPUNIT_TEST(testPreviewMissingObjLink);
+CPPUNIT_TEST(testShapeRotationImport);
 
 CPPUNIT_TEST_SUITE_END();
 
@@ -4445,6 +4448,52 @@ void ScFiltersTest::testPreviewMissingObjLink()
 xDocSh->DoClose();
 }
 
+void ScFiltersTest::testShapeRotationImport()
+{
+// tdf#83593 Incorrectly calculated bounding rectangles caused shapes to 
appear as if there
+// were extra or missing rotations. Hence, we check the sizes of these 
rectangles.
+ScDocShellRef xDocSh = loadDoc("testShapeRotationImport.", FORMAT_XLSX);
+CPPUNIT_ASSERT_MESSAGE("Failed to load testShapeRotationImport.xlsx", 
xDocSh.is());
+uno::Reference< drawing::XDrawPagesSupplier > xDoc(xDocSh->GetModel(), 
uno::UNO_QUERY_THROW);
+uno::Reference< drawing::XDrawPage > 
xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW);
+
+// The expected values are in the map below. Note that some of the angles 
are outside of the set which contains
+// the value of the wrong angles. This is to check the border cases and 
one value on both sides.
+std::map> aExpectedValues
+{
+{  4400, { { "x",  6832 }, { "y", 36893 }, { "width",  8898 }, { 
"height", 1163 } } },
+{  4500, { { "x",  4490 }, { "y", 36400 }, { "width",  8898 }, { 
"height", 1163 } } },
+{  4600, { { "x",  1673 }, { "y", 36270 }, { "width",  8862 }, { 
"height", 1144 } } },
+{ 13400, { { "x", 13762 }, { "y", 28403 }, { "width",  8863 }, { 
"height", 1194 } } },
+{ 13500, { { "x", 10817 }, { "y", 27951 }, { "width",  8863 }, { 
"height", 1170 } } },
+{ 13600, { { "x",  8449 }, { "y", 28336 }, { "width",  8897 }, { 
"height", 1164 } } },
+{ 22400, { { "x", 14948 }, { "y", 12978 }, { "width",  8898 }, { 
"height", 1164 } } },
+{ 22500, { { "x", 11765 }, { "y", 12834 }, { "width",  8898 }, { 
"height", 1164 } } },
+{ 22600, { { "x",  8253 }, { "y", 12919 }, { "width",  8863 }, { 
"height", 1171 } } },
+{ 31400, { { "x",  8099 }, { "y",  1160 }, { "width",  9815 }, { 
"height", 1171 } } },
+{ 31500, { { "x",  4427 }, { "y",  1274 }, { "width", 10238 }, { 
"height", 1171 } } },
+{ 31600, { { "x",  1964 }, { "y",  1878 }, { "width", 10307 }, { 
"height", 1164 } } },
+};
+
+for (sal_Int32 ind = 0; ind < 12; ++ind)
+{
+uno::Reference< drawing::XShape > xShape(xPage->getByIndex(ind), 
uno::UNO_QUERY_THROW);
+
+uno::Reference< beans::XPropertySet > xShapeProperties(xShape, 
uno::UNO_QUERY);
+uno::Any nRotProp = xShapeProperties->getPropertyValue("RotateAngle");
+sal_Int32 nRot = nRotProp.get();
+
+awt::Point aPosition = xShape->getPosition();
+awt::Size aSize = xShape->getSize();
+
+CPPUNIT_ASSERT(aExpectedValues.find(nRot) != aExpectedValues.end());
+CPPUNIT_ASSERT_EQUAL(aExpectedValues[nRot]["x"],  aPosition.X);
+CPPUNIT_ASSERT_EQUAL(aExpectedValues[nRot]["y"],