[Libreoffice-commits] core.git: sc/qa
Regina Henschel (via logerrit)
logerrit at kemper.freedesktop.org
Thu Jan 28 23:36:56 UTC 2021
sc/qa/unit/scshapetest.cxx | 422 ++++++++++++---------------------------------
1 file changed, 114 insertions(+), 308 deletions(-)
New commits:
commit 66013201749df7d5ac5ddaf377a7b3732518a93b
Author: Regina Henschel <rb.henschel at t-online.de>
AuthorDate: Wed Jan 27 23:31:56 2021 +0100
Commit: Regina Henschel <rb.henschel at t-online.de>
CommitDate: Fri Jan 29 00:36:12 2021 +0100
Factor out common parts in scshapetest.cxx
Change-Id: Ifb63fa5162ea2fe0d1083c6a4361e9595af23317
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110038
Tested-by: Jenkins
Reviewed-by: Regina Henschel <rb.henschel at t-online.de>
diff --git a/sc/qa/unit/scshapetest.cxx b/sc/qa/unit/scshapetest.cxx
index bc5df4d4854c..1c54c0e5ac5c 100644
--- a/sc/qa/unit/scshapetest.cxx
+++ b/sc/qa/unit/scshapetest.cxx
@@ -148,29 +148,61 @@ static void lcl_AssertPointEqualWithTolerance(std::string_view sInfo, const Poin
CPPUNIT_ASSERT_MESSAGE(sMsg.getStr(), std::abs(rExpected.Y() - rActual.Y()) <= nTolerance);
}
-void ScShapeTest::testTdf139583_Rotate180deg()
+static ScDocShell*
+lcl_getScDocShellWithAssert(css::uno::Reference<css::lang::XComponent>& xComponent)
{
- // Load an empty document.
- OUString aFileURL;
- createFileURL(u"ManualColWidthRowHeight.ods", aFileURL);
- uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
- CPPUNIT_ASSERT(xComponent.is());
-
- // Get ScDocShell
SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
CPPUNIT_ASSERT(pDocSh);
+ return pDocSh;
+}
- // Get SdrPage
- ScDocument& rDoc = pDocSh->GetDocument();
+static ScTabViewShell* lcl_getScTabViewShellWithAssert(ScDocShell* pDocSh)
+{
+ ScTabViewShell* pTabViewShell = pDocSh->GetBestViewShell(false);
+ CPPUNIT_ASSERT_MESSAGE("No ScTabViewShell", pTabViewShell);
+ return pTabViewShell;
+}
+
+static SdrPage* lcl_getSdrPageWithAssert(ScDocument& rDoc)
+{
ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
SdrPage* pPage = pDrawLayer->GetPage(0);
CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
+ return pPage;
+}
+
+static SdrObject* lcl_getSdrObjectWithAssert(ScDocument& rDoc, sal_uInt16 nObjNumber)
+{
+ ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
+ CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
+ const SdrPage* pPage = pDrawLayer->GetPage(0);
+ CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
+ SdrObject* pObj = pPage->GetObj(nObjNumber);
+ OString sMsg = "no Object " + OString::number(nObjNumber);
+ CPPUNIT_ASSERT_MESSAGE(sMsg.getStr(), pObj);
+ return pObj;
+}
+
+void ScShapeTest::testTdf139583_Rotate180deg()
+{
+ // Load an empty document.
+ OUString aFileURL;
+ createFileURL(u"ManualColWidthRowHeight.ods", aFileURL);
+ uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
+ CPPUNIT_ASSERT(xComponent.is());
+
+ // Get document and draw page
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
+ ScDocument& rDoc = pDocSh->GetDocument();
+ SdrPage* pPage = lcl_getSdrPageWithAssert(rDoc);
// Insert Shape
const tools::Rectangle aRect(Point(3000, 4000), Size(5000, 2000));
+ ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
+ CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
SdrRectObj* pObj = new SdrRectObj(*pDrawLayer, aRect);
CPPUNIT_ASSERT_MESSAGE("Could not create rectangle", pObj);
pPage->InsertObject(pObj);
@@ -184,20 +216,10 @@ void ScShapeTest::testTdf139583_Rotate180deg()
saveAndReload(xComponent, "calc8");
CPPUNIT_ASSERT(xComponent);
- // Get ScDocShell
- pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Reload: Failed to access document shell", pFoundShell);
- pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
// Get document and object
+ pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc2 = pDocSh->GetDocument();
- pDrawLayer = rDoc2.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("Reload: No ScDrawLayer", pDrawLayer);
- pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("Reload: No draw page", pPage);
- pObj = dynamic_cast<SdrRectObj*>(pPage->GetObj(0));
- CPPUNIT_ASSERT_MESSAGE("Reload: Shape no longer exists", pObj);
+ pObj = static_cast<SdrRectObj*>(lcl_getSdrObjectWithAssert(rDoc2, 0));
// Without the fix in place, the shape would have nearly zero size.
lcl_AssertRectEqualWithTolerance("Show: Object geometry should not change", aRect,
@@ -213,20 +235,10 @@ void ScShapeTest::testTdf137033_FlipHori_Resize()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get document
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = static_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
+ // Get document and shape
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
-
- // Get shape
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
- SdrObjCustomShape* pObj = static_cast<SdrObjCustomShape*>(pPage->GetObj(0));
- CPPUNIT_ASSERT_MESSAGE("Load: custom shape not found", pObj);
+ SdrObjCustomShape* pObj = static_cast<SdrObjCustomShape*>(lcl_getSdrObjectWithAssert(rDoc, 0));
// Verify shape is correctly loaded. Then set shape to "resize with cell".
tools::Rectangle aSnapRect(pObj->GetSnapRect());
@@ -238,20 +250,10 @@ void ScShapeTest::testTdf137033_FlipHori_Resize()
saveAndReload(xComponent, "calc8");
CPPUNIT_ASSERT(xComponent);
- // Get document
- pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- pDocSh = static_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
+ // Get document and shape
+ pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc2 = pDocSh->GetDocument();
-
- // Get shape
- pDrawLayer = rDoc2.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
- pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
- pObj = static_cast<SdrObjCustomShape*>(pPage->GetObj(0));
- CPPUNIT_ASSERT_MESSAGE("Reload: custom shape not found", pObj);
+ pObj = static_cast<SdrObjCustomShape*>(lcl_getSdrObjectWithAssert(rDoc2, 0));
// Check shape has the original geometry, besides rounding and unit conversion errors
aSnapRect = pObj->GetSnapRect();
@@ -273,10 +275,7 @@ void ScShapeTest::testTdf137033_RotShear_ResizeHide()
CPPUNIT_ASSERT(xComponent.is());
// Get document
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
// Hide rows 4 and 5 (UI number), which are inside the shape and thus change shape geometry
@@ -284,12 +283,7 @@ void ScShapeTest::testTdf137033_RotShear_ResizeHide()
rDoc.SetDrawPageSize(0); // trigger recalcpos, otherwise shapes are not changed
// Get shape
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
- SdrObject* pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("No object found", pObj);
+ SdrObject* pObj = lcl_getSdrObjectWithAssert(rDoc, 0);
// Verify hiding has changed shape geometry as expected
tools::Rectangle aSnapRect(pObj->GetSnapRect());
@@ -310,20 +304,10 @@ void ScShapeTest::testTdf137033_RotShear_ResizeHide()
saveAndReload(xComponent, "calc8");
CPPUNIT_ASSERT(xComponent);
- // Get document
- pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
+ // Get document and shape
+ pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc2 = pDocSh->GetDocument();
-
- // Get shape
- pDrawLayer = rDoc2.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
- pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
- pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("No object found", pObj);
+ pObj = lcl_getSdrObjectWithAssert(rDoc2, 0);
// Check shape has the original geometry, besides heavy rounding and unit conversion errors
aSnapRect = pObj->GetSnapRect();
@@ -351,10 +335,7 @@ void ScShapeTest::testTdf137033_RotShear_Hide()
CPPUNIT_ASSERT(xComponent.is());
// Get document
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
// Hide column C, which is left from logic rect, but right from left edge of snap rect
@@ -365,20 +346,10 @@ void ScShapeTest::testTdf137033_RotShear_Hide()
saveAndReload(xComponent, "calc8");
CPPUNIT_ASSERT(xComponent);
- // Get document
- pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
+ // Get document and shape
+ pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc2 = pDocSh->GetDocument();
-
- // Get shape
- ScDrawLayer* pDrawLayer = rDoc2.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
- SdrObject* pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("No object found", pObj);
+ SdrObject* pObj = lcl_getSdrObjectWithAssert(rDoc2, 0);
// Check shape is visible. With the old version, the shape was moved to column C and
// thus hidden on reload.
@@ -409,26 +380,17 @@ void ScShapeTest::testTdf137576_LogicRectInDefaultMeasureline()
CPPUNIT_ASSERT(xComponent.is());
// Get ScDocShell
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT_MESSAGE("No ScDocShell", pDocSh);
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
// Create default measureline by SfxRequest that corresponds to Ctrl+Click
- ScTabViewShell* pTabViewShell = pDocSh->GetBestViewShell(false);
- CPPUNIT_ASSERT_MESSAGE("No ScTabViewShell", pTabViewShell);
+ ScTabViewShell* pTabViewShell = lcl_getScTabViewShellWithAssert(pDocSh);
SfxRequest aReq(pTabViewShell->GetViewFrame(), SID_DRAW_MEASURELINE);
aReq.SetModifier(KEY_MOD1); // Ctrl
pTabViewShell->ExecDraw(aReq);
// Get document and newly created measure line.
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
- SdrObject* pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("No object found", pObj);
+ SdrObject* pObj = lcl_getSdrObjectWithAssert(rDoc, 0);
// Anchor "to Cell (resize with cell)"
ScDrawLayer::SetCellAnchoredFromPosition(*pObj, rDoc, 0 /*SCTAB*/, true /*bResizeWithCell*/);
@@ -449,19 +411,11 @@ void ScShapeTest::testTdf137576_LogicRectInDefaultMeasureline()
// Save and reload, get ScDocShell
saveAndReload(xComponent, "calc8");
CPPUNIT_ASSERT(xComponent);
- pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Reload: Failed to access document shell", pFoundShell);
- pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
+ pDocSh = lcl_getScDocShellWithAssert(xComponent);
// Get document and object
ScDocument& rDoc2 = pDocSh->GetDocument();
- pDrawLayer = rDoc2.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("Reload: No ScDrawLayer", pDrawLayer);
- pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("Reload: No draw page", pPage);
- pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("Measure line lost", pObj);
+ pObj = lcl_getSdrObjectWithAssert(rDoc2, 0);
// Assert object position is unchanged, besides Twips<->Hmm inaccuracy.
Point aNewPos = pObj->GetRelativePos();
@@ -482,22 +436,16 @@ void ScShapeTest::testTdf137576_LogicRectInNewMeasureline()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get ScDocShell
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
- // Get SdrPage
+ // Get document and draw page
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
- SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
+ SdrPage* pPage = lcl_getSdrPageWithAssert(rDoc);
// Create a new measure line and insert it
Point aStartPoint(5000, 5500);
Point aEndPoint(13000, 8000);
+ ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
+ CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
SdrMeasureObj* pObj = new SdrMeasureObj(*pDrawLayer, aStartPoint, aEndPoint);
CPPUNIT_ASSERT_MESSAGE("Could not create measure line", pObj);
pPage->InsertObject(pObj);
@@ -523,20 +471,10 @@ void ScShapeTest::testMeasurelineHideColSave()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get the document model
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
// Get document and shape
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
- SdrObject* pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("No object found", pObj);
+ SdrObject* pObj = lcl_getSdrObjectWithAssert(rDoc, 0);
// Make sure loading is correct
Point aStartPoint(7500, 15000); // according UI
@@ -557,20 +495,10 @@ void ScShapeTest::testMeasurelineHideColSave()
saveAndReload(xComponent, "calc8");
CPPUNIT_ASSERT(xComponent);
- // Get ScDocShell
- pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Reload: Failed to access document shell", pFoundShell);
- pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
- // Get document and object
+ // Get document and shape
+ pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc2 = pDocSh->GetDocument();
- pDrawLayer = rDoc2.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("Reload: No ScDrawLayer", pDrawLayer);
- pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("Reload: No draw page", pPage);
- pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("Reload: custom shape no longer exists", pObj);
+ pObj = lcl_getSdrObjectWithAssert(rDoc2, 0);
// Check that start and end point are unchanged besides rounding and unit conversion errors
lcl_AssertPointEqualWithTolerance("Reload start: ", aStartPoint, pObj->GetPoint(0), 2);
@@ -590,20 +518,11 @@ void ScShapeTest::testHideColsShow()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get the document model
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
// Get document and shape
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
- SdrObject* pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("No object found", pObj);
+ SdrObjCustomShape* pObj = static_cast<SdrObjCustomShape*>(lcl_getSdrObjectWithAssert(rDoc, 0));
+
CPPUNIT_ASSERT_MESSAGE("Load: Object should be visible", pObj->IsVisible());
tools::Rectangle aSnapRectOrig(pObj->GetSnapRect());
@@ -613,8 +532,7 @@ void ScShapeTest::testHideColsShow()
};
dispatchCommand(xComponent, ".uno:GoToCell", aPropertyValues);
- ScTabViewShell* pViewShell = pDocSh->GetBestViewShell(false);
- CPPUNIT_ASSERT_MESSAGE("No ScTabViewShell", pViewShell);
+ ScTabViewShell* pViewShell = lcl_getScTabViewShellWithAssert(pDocSh);
pViewShell->GetViewData().GetDispatcher().Execute(FID_COL_HIDE);
// Check object is invisible
@@ -645,20 +563,10 @@ void ScShapeTest::testTdf138138_MoveCellWithRotatedShape()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get ScDocShell
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
- // Get document and object
+ // Get document and shape
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("Load: No ScDrawLayer", pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("Load: No draw page", pPage);
- SdrObject* pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("Load: custom shape not found", pObj);
+ SdrObject* pObj = lcl_getSdrObjectWithAssert(rDoc, 0);
// Check anchor and position of shape. The expected values are taken from UI.
tools::Rectangle aSnapRect = pObj->GetSnapRect();
@@ -670,8 +578,8 @@ void ScShapeTest::testTdf138138_MoveCellWithRotatedShape()
comphelper::makePropertyValue("ToPoint", OUString("$A$1:$B$1")),
};
dispatchCommand(xComponent, ".uno:GoToCell", aPropertyValues);
- ScTabViewShell* pViewShell = pDocSh->GetBestViewShell(false);
- CPPUNIT_ASSERT_MESSAGE("No ScTabViewShell", pViewShell);
+
+ ScTabViewShell* pViewShell = lcl_getScTabViewShellWithAssert(pDocSh);
pViewShell->GetViewData().GetDispatcher().Execute(FID_INS_COLUMNS_AFTER);
aExpectedRect = tools::Rectangle(Point(16000, 3000), Size(1000, 7500)); // col width 3000
aSnapRect = pObj->GetSnapRect();
@@ -682,20 +590,10 @@ void ScShapeTest::testTdf138138_MoveCellWithRotatedShape()
saveAndReload(xComponent, "calc8");
CPPUNIT_ASSERT(xComponent);
- // Get ScDocShell
- pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Reload: Failed to access document shell", pFoundShell);
- pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
- // Get document and object
+ // Get document and shape
+ pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc2 = pDocSh->GetDocument();
- pDrawLayer = rDoc2.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("Reload: No ScDrawLayer", pDrawLayer);
- pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("Reload: No draw page", pPage);
- pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("Reload: custom shape no longer exists", pObj);
+ pObj = lcl_getSdrObjectWithAssert(rDoc2, 0);
// Assert objects size is unchanged, position is shifted.
aSnapRect = pObj->GetSnapRect();
@@ -714,20 +612,12 @@ void ScShapeTest::testLoadVerticalFlip()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get the document model
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
- // Get the shape and check that it is flipped
+ // Get document and shape
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT(pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT(pPage);
- SdrObjCustomShape* pObj = dynamic_cast<SdrObjCustomShape*>(pPage->GetObj(0));
- CPPUNIT_ASSERT(pObj);
+ SdrObjCustomShape* pObj = static_cast<SdrObjCustomShape*>(lcl_getSdrObjectWithAssert(rDoc, 0));
+
+ // Check that shape is flipped
CPPUNIT_ASSERT_MESSAGE("Load: Object should be vertically flipped", pObj->IsMirroredY());
pDocSh->DoClose();
@@ -743,26 +633,14 @@ void ScShapeTest::testTdf117948_CollapseBeforeShape()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get ScDocShell
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
// Get document and objects
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("Load: No ScDrawLayer", pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("Load: No draw page", pPage);
- SdrObject* pObj0 = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("Load: custom shape not found", pObj0);
- SdrObject* pObj1 = pPage->GetObj(1);
- CPPUNIT_ASSERT_MESSAGE("Load: Vertical line not found", pObj1);
+ SdrObject* pObj0 = lcl_getSdrObjectWithAssert(rDoc, 0);
+ SdrObject* pObj1 = lcl_getSdrObjectWithAssert(rDoc, 1);
// Collapse the group
- ScTabViewShell* pViewShell = pDocSh->GetBestViewShell(false);
- CPPUNIT_ASSERT_MESSAGE("Load: No ScTabViewShell", pViewShell);
+ ScTabViewShell* pViewShell = lcl_getScTabViewShellWithAssert(pDocSh);
pViewShell->GetViewData().SetCurX(1);
pViewShell->GetViewData().SetCurY(0);
pViewShell->GetViewData().GetDispatcher().Execute(SID_OUTLINE_HIDE);
@@ -780,22 +658,11 @@ void ScShapeTest::testTdf117948_CollapseBeforeShape()
saveAndReload(xComponent, "calc8");
CPPUNIT_ASSERT(xComponent);
- // Get ScDocShell
- pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Reload: Failed to access document shell", pFoundShell);
- pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
// Get document and objects
+ pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc2 = pDocSh->GetDocument();
- pDrawLayer = rDoc2.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("Reload: No ScDrawLayer", pDrawLayer);
- pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("Reload: No draw page", pPage);
- pObj0 = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("Reload: custom shape no longer exists", pObj0);
- pObj1 = pPage->GetObj(1);
- CPPUNIT_ASSERT_MESSAGE("Reload: custom shape no longer exists", pObj1);
+ pObj0 = lcl_getSdrObjectWithAssert(rDoc2, 0);
+ pObj1 = lcl_getSdrObjectWithAssert(rDoc2, 1);
// Assert objects size and position are not changed. Actual values differ a little bit
// because of cumulated Twips-Hmm conversion errors.
@@ -820,20 +687,11 @@ void ScShapeTest::testTdf137355_UndoHideRows()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get the document model
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
// Get document and shape
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("No ScDrawLayer", pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
- SdrObject* pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("No object found", pObj);
+ SdrObject* pObj = lcl_getSdrObjectWithAssert(rDoc, 0);
+
CPPUNIT_ASSERT_MESSAGE("Load: Object should be visible", pObj->IsVisible());
tools::Rectangle aSnapRectOrig(pObj->GetSnapRect());
@@ -843,9 +701,7 @@ void ScShapeTest::testTdf137355_UndoHideRows()
comphelper::makePropertyValue("ToPoint", OUString("$A$3:$A$6")),
};
dispatchCommand(xComponent, ".uno:GoToCell", aPropertyValues);
-
- ScTabViewShell* pViewShell = pDocSh->GetBestViewShell(false);
- CPPUNIT_ASSERT_MESSAGE("No ScTabViewShell", pViewShell);
+ ScTabViewShell* pViewShell = lcl_getScTabViewShellWithAssert(pDocSh);
pViewShell->GetViewData().GetDispatcher().Execute(FID_ROW_HIDE);
// Check object is invisible
@@ -875,27 +731,16 @@ void ScShapeTest::testTdf115655_HideDetail()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get ScDocShell
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
// Get document and image
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("Load: No ScDrawLayer", pDrawLayer);
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("Load: No draw page", pPage);
- SdrObject* pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("Load: No object found", pObj);
+ SdrObject* pObj = lcl_getSdrObjectWithAssert(rDoc, 0);
// Get image size
tools::Rectangle aSnapRectOrig = pObj->GetSnapRect();
// Collapse the group
- ScTabViewShell* pViewShell = pDocSh->GetBestViewShell(false);
- CPPUNIT_ASSERT_MESSAGE("Load: No ScTabViewShell", pViewShell);
+ ScTabViewShell* pViewShell = lcl_getScTabViewShellWithAssert(pDocSh);
pViewShell->GetViewData().SetCurX(0);
pViewShell->GetViewData().SetCurY(1);
pViewShell->GetViewData().GetDispatcher().Execute(SID_OUTLINE_HIDE);
@@ -905,20 +750,10 @@ void ScShapeTest::testTdf115655_HideDetail()
saveAndReload(xComponent, "calc8");
CPPUNIT_ASSERT(xComponent);
- // Get ScDocShell
- pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Reload: Failed to access document shell", pFoundShell);
- pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
// Get document and image
+ pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc2 = pDocSh->GetDocument();
- pDrawLayer = rDoc2.GetDrawLayer();
- CPPUNIT_ASSERT_MESSAGE("Reload: No ScDrawLayer", pDrawLayer);
- pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT_MESSAGE("Reload: No draw page", pPage);
- pObj = pPage->GetObj(0);
- CPPUNIT_ASSERT_MESSAGE("Reload: Image no longer exists", pObj);
+ pObj = lcl_getSdrObjectWithAssert(rDoc2, 0);
// Expand the group
pViewShell = pDocSh->GetBestViewShell(false);
@@ -946,29 +781,13 @@ void ScShapeTest::testFitToCellSize()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get the document model
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
- // Get the shape
+ // Get document and shape
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT(pDrawLayer);
-
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT(pPage);
-
- SdrObjCustomShape* pObj = dynamic_cast<SdrObjCustomShape*>(pPage->GetObj(0));
- CPPUNIT_ASSERT(pObj);
-
- // Get the document controller
- ScTabViewShell* pViewShell = pDocSh->GetBestViewShell(false);
- CPPUNIT_ASSERT(pViewShell);
+ SdrObjCustomShape* pObj = dynamic_cast<SdrObjCustomShape*>(lcl_getSdrObjectWithAssert(rDoc, 0));
// Get the draw view of the document
+ ScTabViewShell* pViewShell = lcl_getScTabViewShellWithAssert(pDocSh);
ScDrawView* pDrawView = pViewShell->GetViewData().GetScDrawView();
CPPUNIT_ASSERT(pDrawView);
@@ -996,23 +815,10 @@ void ScShapeTest::testCustomShapeCellAnchoredRotatedShape()
uno::Reference<css::lang::XComponent> xComponent = loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
- // Get the document model
- SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
- CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
-
- ScDocShell* pDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
- CPPUNIT_ASSERT(pDocSh);
-
- // Get the shape
+ // Get document and shape
+ ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScDocument& rDoc = pDocSh->GetDocument();
- ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
- CPPUNIT_ASSERT(pDrawLayer);
-
- const SdrPage* pPage = pDrawLayer->GetPage(0);
- CPPUNIT_ASSERT(pPage);
-
- SdrObjCustomShape* pObj = dynamic_cast<SdrObjCustomShape*>(pPage->GetObj(0));
- CPPUNIT_ASSERT(pObj);
+ SdrObjCustomShape* pObj = dynamic_cast<SdrObjCustomShape*>(lcl_getSdrObjectWithAssert(rDoc, 0));
// Check Position and Size
rDoc.SetDrawPageSize(0); // trigger recalcpos
More information about the Libreoffice-commits
mailing list