diff options
author | Jan Holesovsky <kendy@collabora.com> | 2015-11-03 16:43:03 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2015-11-03 16:48:10 +0100 |
commit | a4988d227c3933721098b2a61a087ec18eaa6c8e (patch) | |
tree | 2a9d4b4a90f5752e81586f72b6278666432e2196 /desktop | |
parent | 788cec0a60dcfce6d86c820e9d0f7a1eb634f7bf (diff) |
lok: Unit test for LOK_CALLBACK_UNO_COMMAND_RESULT.
Change-Id: I917d47478504dc6fafd3fc675fe8458690c7cc2a
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/qa/desktop_lib/test_desktop_lib.cxx | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx index cbd18f7a11ce..cc48f130db99 100644 --- a/desktop/qa/desktop_lib/test_desktop_lib.cxx +++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx @@ -19,6 +19,7 @@ #include <comphelper/lok.hxx> #include <comphelper/dispatchcommand.hxx> #include <comphelper/propertysequence.hxx> +#include <osl/conditn.hxx> #include <svl/srchitem.hxx> #include <LibreOfficeKit/LibreOfficeKitEnums.h> #include <unotools/tempfile.hxx> @@ -67,6 +68,7 @@ public: void testSaveAsCalc(); void testPasteWriter(); void testRowColumnHeaders(); + void testCommandResult(); CPPUNIT_TEST_SUITE(DesktopLOKTest); CPPUNIT_TEST(testGetStyles); @@ -80,12 +82,17 @@ public: CPPUNIT_TEST(testSaveAsCalc); CPPUNIT_TEST(testPasteWriter); CPPUNIT_TEST(testRowColumnHeaders); + CPPUNIT_TEST(testCommandResult); CPPUNIT_TEST_SUITE_END(); uno::Reference<lang::XComponent> mxComponent; OString m_aTextSelection; std::vector<OString> m_aSearchResultSelection; std::vector<int> m_aSearchResultPart; + + // for testCommandResult + osl::Condition m_aCommandResultCondition; + OString m_aCommandResult; }; LibLODocument_Impl* DesktopLOKTest::loadDoc(const char* pName, LibreOfficeKitDocumentType eType) @@ -149,6 +156,12 @@ void DesktopLOKTest::callbackImpl(int nType, const char* pPayload) } } break; + case LOK_CALLBACK_UNO_COMMAND_RESULT: + { + m_aCommandResult = pPayload; + m_aCommandResultCondition.set(); + } + break; } } @@ -378,6 +391,29 @@ void DesktopLOKTest::testRowColumnHeaders() } } +void DesktopLOKTest::testCommandResult() +{ + LibLODocument_Impl* pDocument = loadDoc("blank_text.odt"); + pDocument->pClass->registerCallback(pDocument, &DesktopLOKTest::callback, this); + + // the postUnoCommand() is supposed to be async, let's test it safely + // [no idea if it is async in reality - most probably we are operating + // under some solar mutex or something anyway ;-) - but...] + m_aCommandResultCondition.reset(); + + pDocument->pClass->postUnoCommand(pDocument, ".uno:Bold", 0, true); + + TimeValue aTimeValue = { 2 , 0 }; // 2 seconds max + m_aCommandResultCondition.wait(aTimeValue); + + boost::property_tree::ptree aTree; + std::stringstream aStream(m_aCommandResult.getStr()); + boost::property_tree::read_json(aStream, aTree); + + CPPUNIT_ASSERT_EQUAL(aTree.get_child("commandName").get_value<std::string>(), std::string(".uno:Bold")); + CPPUNIT_ASSERT_EQUAL(aTree.get_child("success").get_value<bool>(), true); +} + CPPUNIT_TEST_SUITE_REGISTRATION(DesktopLOKTest); CPPUNIT_PLUGIN_IMPLEMENT(); |