summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2015-11-03 16:43:03 +0100
committerJan Holesovsky <kendy@collabora.com>2015-11-03 16:48:10 +0100
commita4988d227c3933721098b2a61a087ec18eaa6c8e (patch)
tree2a9d4b4a90f5752e81586f72b6278666432e2196
parent788cec0a60dcfce6d86c820e9d0f7a1eb634f7bf (diff)
lok: Unit test for LOK_CALLBACK_UNO_COMMAND_RESULT.
Change-Id: I917d47478504dc6fafd3fc675fe8458690c7cc2a
-rw-r--r--desktop/qa/desktop_lib/test_desktop_lib.cxx36
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();