problem with link error in unit test
Regina Henschel
rb.henschel at t-online.de
Sat Feb 13 23:46:54 UTC 2021
Hi all,
I have added a unit test
ScShapeTest::testTdf134355_DragCreateCustomShape()
in /sc/qa/unit/scshapetest.cxx
https://git.libreoffice.org/core/+/02e4f6c44295004f5c7201a7aa2744fd0518ba9d
Now I want to do the same with a form control. But I get link errors
'unresolved external symbol' about FuConstruct::MouseMove,
FuConstUnoControl::MouseButtonUp, FuConstUnoControl::MouseButtonDo
wn and FuConstUnoControl::Deactivate
Can please someone help me? I have no idea what makes a
FuConstUnoControl different from a FuConstCustomShape.
The new test is below.
Kind regards
Regina
void ScShapeTest::testTdf140252_DragCreateFormControl()
{
// Error was, that drag-created form controls were initially not on
layer 'controls' and thus
// other shapes could be placed in front of form controls.
// Load an empty document.
OUString aFileURL;
createFileURL(u"ManualColWidthRowHeight.ods", aFileURL);
uno::Reference<css::lang::XComponent> xComponent =
loadFromDesktop(aFileURL);
CPPUNIT_ASSERT(xComponent.is());
// Get ScTabView
ScDocShell* pDocSh = lcl_getScDocShellWithAssert(xComponent);
ScTabViewShell* pTabViewShell =
lcl_getScTabViewShellWithAssert(pDocSh);
ScTabView* pTabView = pTabViewShell->GetViewData().GetView();
CPPUNIT_ASSERT(pTabView);
// drag-create a push button as example of form control
uno::Sequence<beans::PropertyValue> aPropertyValues = {
comphelper::makePropertyValue("Pushbutton", true),
};
dispatchCommand(xComponent, ".uno:Pushbutton", aPropertyValues);
// above includes creation of FuConstUnoControl and call of its
Activate() method
FuConstUnoControl* pFuConstUC =
static_cast<FuConstUnoControl*>(pTabView->GetDrawFuncPtr());
CPPUNIT_ASSERT(pFuConstUC);
// points are in pixel
MouseEvent aMouseEvent(Point(50, 100), 1,
MouseEventModifiers::NONE, MOUSE_LEFT, 0);
pFuConstUC->MouseButtonDown(aMouseEvent);
aMouseEvent = MouseEvent(Point(200, 250), 1,
MouseEventModifiers::DRAGMOVE, MOUSE_LEFT, 0);
pFuConstUC->MouseMove(aMouseEvent);
aMouseEvent = MouseEvent(Point(200, 250), 1,
MouseEventModifiers::NONE, MOUSE_LEFT, 0);
pFuConstUC->MouseButtonUp(aMouseEvent);
pFuConstUC->Deactivate();
pTabViewShell->SetDrawShell(false);
// Get document and newly created push button.
ScDocument& rDoc = pDocSh->GetDocument();
SdrUnoObj* pObj =
static_cast<SdrUnoObj*>(lcl_getSdrObjectWithAssert(rDoc, 0));
// Without the fix in place, the shape would be on layer
SC_LAYER_FRONT (0)
sal_uInt8 nExpectedID = sal_uInt8(SC_LAYER_CONTROLS);
sal_uInt8 nActualID = pObj->GetLayer().get();
CPPUNIT_ASSERT_EQUAL(nExpectedID, nActualID);
pDocSh->DoClose();
}
More information about the LibreOffice
mailing list