From a54392a6c40037d9903c7d35dc62f9de6fefffaf Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Thu, 8 Oct 2015 10:56:49 +0200 Subject: [PATCH 194/398] CppunitTest_desktop_lib: add Calc find-all testcase Fails without commit a31f95b180728c1c671930913b4b4ad96ebcda5f (sc tiled rendering: fix showing all search results, 2015-10-07). Change-Id: Ibc01d468168367f789b3f5046808104fa3f5ef18 (cherry picked from commit 97c414758d3d8aa3cc2233d52612cf0a33c24c34) --- desktop/CppunitTest_desktop_lib.mk | 3 ++ desktop/qa/data/search.ods | Bin 0 -> 7636 bytes desktop/qa/desktop_lib/test_desktop_lib.cxx | 76 ++++++++++++++++++++++++++-- 3 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 desktop/qa/data/search.ods diff --git a/desktop/CppunitTest_desktop_lib.mk b/desktop/CppunitTest_desktop_lib.mk index be394600ddf0..0c963f9088c2 100644 --- a/desktop/CppunitTest_desktop_lib.mk +++ b/desktop/CppunitTest_desktop_lib.mk @@ -56,11 +56,14 @@ $(eval $(call gb_CppunitTest_use_components,desktop_lib,\ svtools/util/svt \ sw/util/sw \ sw/util/swd \ + sc/util/sc \ + sc/util/scd \ toolkit/util/tk \ ucb/source/core/ucb1 \ ucb/source/ucp/file/ucpfile1 \ unoxml/source/service/unoxml \ xmloff/util/xo \ + i18npool/source/search/i18nsearch \ )) $(eval $(call gb_CppunitTest_use_configuration,desktop_lib)) diff --git a/desktop/qa/data/search.ods b/desktop/qa/data/search.ods new file mode 100644 index 0000000000000000000000000000000000000000..ea1d73153828a6a80329cfc617e4276fd2b51ab2 GIT binary patch literal 7636 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 literal 0 HcmV?d00001 diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx index a7696d824bee..3e00e597c314 100644 --- a/desktop/qa/desktop_lib/test_desktop_lib.cxx +++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx @@ -16,6 +16,11 @@ #include #include #include +#include +#include +#include +#include +#include #include "../../inc/lib/init.hxx" @@ -45,14 +50,17 @@ public: UnoApiTest::tearDown(); }; - LibLODocument_Impl* loadDoc(const char* pName); + LibLODocument_Impl* loadDoc(const char* pName, LibreOfficeKitDocumentType eType = LOK_DOCTYPE_TEXT); void closeDoc(); + static void callback(int nType, const char* pPayload, void* pData); + void callbackImpl(int nType, const char* pPayload); void testGetStyles(); void testGetFonts(); void testCreateView(); void testGetFilterTypes(); void testGetPartPageRectangles(); + void testSearchCalc(); CPPUNIT_TEST_SUITE(DesktopLOKTest); CPPUNIT_TEST(testGetStyles); @@ -60,16 +68,31 @@ public: CPPUNIT_TEST(testCreateView); CPPUNIT_TEST(testGetFilterTypes); CPPUNIT_TEST(testGetPartPageRectangles); + CPPUNIT_TEST(testSearchCalc); CPPUNIT_TEST_SUITE_END(); uno::Reference mxComponent; + OString m_aTextSelection; }; -LibLODocument_Impl* DesktopLOKTest::loadDoc(const char* pName) +LibLODocument_Impl* DesktopLOKTest::loadDoc(const char* pName, LibreOfficeKitDocumentType eType) { OUString aFileURL; createFileURL(OUString::createFromAscii(pName), aFileURL); - mxComponent = loadFromDesktop(aFileURL, "com.sun.star.text.TextDocument"); + OUString aService; + switch (eType) + { + case LOK_DOCTYPE_TEXT: + aService = "com.sun.star.text.TextDocument"; + break; + case LOK_DOCTYPE_SPREADSHEET: + aService = "com.sun.star.sheet.SpreadsheetDocument"; + break; + default: + CPPUNIT_ASSERT(false); + break; + } + mxComponent = loadFromDesktop(aFileURL, aService); if (!mxComponent.is()) { CPPUNIT_ASSERT(false); @@ -86,6 +109,23 @@ void DesktopLOKTest::closeDoc() } } +void DesktopLOKTest::callback(int nType, const char* pPayload, void* pData) +{ + static_cast(pData)->callbackImpl(nType, pPayload); +} + +void DesktopLOKTest::callbackImpl(int nType, const char* pPayload) +{ + switch (nType) + { + case LOK_CALLBACK_TEXT_SELECTION: + { + m_aTextSelection = pPayload; + } + break; + } +} + void DesktopLOKTest::testGetStyles() { LibLODocument_Impl* pDocument = loadDoc("blank_text.odt"); @@ -191,6 +231,36 @@ void DesktopLOKTest::testGetFilterTypes() free(pJSON); } +void DesktopLOKTest::testSearchCalc() +{ + LibLibreOffice_Impl aOffice; + comphelper::LibreOfficeKit::setActive(); + LibLODocument_Impl* pDocument = loadDoc("search.ods"); + pDocument->pClass->initializeForRendering(pDocument); + pDocument->pClass->registerCallback(pDocument, &DesktopLOKTest::callback, this); + + uno::Sequence aPropertyValues(comphelper::InitPropertySequence( + { + {"SearchItem.SearchString", uno::makeAny(OUString("foo"))}, + {"SearchItem.Backward", uno::makeAny(false)}, + {"SearchItem.Command", uno::makeAny(static_cast(SvxSearchCmd::FIND_ALL))}, + })); + comphelper::dispatchCommand(".uno:ExecuteSearch", aPropertyValues); + + std::vector aSelections; + sal_Int32 nIndex = 0; + do + { + OString aToken = m_aTextSelection.getToken(0, ';', nIndex); + aSelections.push_back(aToken); + } while (nIndex >= 0); + // This was 1, find-all only found one match. + CPPUNIT_ASSERT_EQUAL(static_cast(2), aSelections.size()); + + closeDoc(); + comphelper::LibreOfficeKit::setActive(false); +} + CPPUNIT_TEST_SUITE_REGISTRATION(DesktopLOKTest); CPPUNIT_PLUGIN_IMPLEMENT(); -- 2.12.0