[Libreoffice-commits] online.git: loolwsd/test
Henry Castro
hcastro at collabora.com
Sun Sep 25 16:54:10 UTC 2016
loolwsd/test/data/Example.odt |binary
loolwsd/test/httpwstest.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 54 insertions(+)
New commits:
commit d96df0a015423e4fc3f37cd116ba4dbe70b89169
Author: Henry Castro <hcastro at collabora.com>
Date: Sun Sep 25 12:49:52 2016 -0400
loolwsd: test: cursor and view cursor positions
diff --git a/loolwsd/test/data/Example.odt b/loolwsd/test/data/Example.odt
new file mode 100644
index 0000000..bb2fead
Binary files /dev/null and b/loolwsd/test/data/Example.odt differ
diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp
index 333a62f..e566c73 100644
--- a/loolwsd/test/httpwstest.cpp
+++ b/loolwsd/test/httpwstest.cpp
@@ -94,6 +94,7 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
CPPUNIT_TEST(testCellViewCursor);
CPPUNIT_TEST(testGraphicViewSelection);
CPPUNIT_TEST(testGraphicInvalidate);
+ CPPUNIT_TEST(testCursorPosition);
CPPUNIT_TEST_SUITE_END();
@@ -136,6 +137,7 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
void testCellViewCursor();
void testGraphicViewSelection();
void testGraphicInvalidate();
+ void testCursorPosition();
void loadDoc(const std::string& documentURL);
@@ -2152,6 +2154,58 @@ void HTTPWSTest::testGraphicInvalidate()
}
}
+void HTTPWSTest::testCursorPosition()
+{
+ try
+ {
+ // Load a document.
+ std::string docPath;
+ std::string docURL;
+ std::string response;
+ std::vector<std::string> responses;
+
+ getDocumentPathAndURL("Example.odt", docPath, docURL);
+ Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, docURL);
+ Poco::Net::WebSocket socket0 = *connectLOKit(_uri, request, _response);
+
+ sendTextFrame(socket0, "load url=" + docURL);
+ CPPUNIT_ASSERT_MESSAGE("cannot load the document " + docURL, isDocumentLoaded(socket0));
+
+ // receive cursor position
+ getResponseMessage(socket0, "invalidatecursor:", response, false);
+ CPPUNIT_ASSERT_MESSAGE("did not receive a invalidatecursor: message as expected", !response.empty());
+ Poco::StringTokenizer cursorTokens(response, ",", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM);
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), cursorTokens.count());
+
+ // Create second view
+ Poco::Net::WebSocket socket1 = *connectLOKit(_uri, request, _response);
+ sendTextFrame(socket1, "load url=" + docURL);
+ CPPUNIT_ASSERT_MESSAGE("cannot load the document " + docURL, isDocumentLoaded(socket1));
+
+ //receive view cursor position
+ getResponseMessage(socket0, "invalidateviewcursor:", response, false);
+ CPPUNIT_ASSERT_MESSAGE("did not receive a invalidateviewcursor: message as expected", !response.empty());
+
+ Poco::JSON::Parser parser;
+ const auto result = parser.parse(response);
+ const auto& command = result.extract<Poco::JSON::Object::Ptr>();
+ CPPUNIT_ASSERT_MESSAGE("missing property rectangle", command->has("rectangle"));
+
+ Poco::StringTokenizer viewTokens(command->get("rectangle").toString(), ",", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM);
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), viewTokens.count());
+
+ // check both cursor should be equal
+ CPPUNIT_ASSERT_EQUAL(cursorTokens[0], viewTokens[0]);
+ CPPUNIT_ASSERT_EQUAL(cursorTokens[1], viewTokens[1]);
+ CPPUNIT_ASSERT_EQUAL(cursorTokens[2], viewTokens[2]);
+ CPPUNIT_ASSERT_EQUAL(cursorTokens[3], viewTokens[3]);
+ }
+ catch (const Poco::Exception& exc)
+ {
+ CPPUNIT_FAIL(exc.displayText());
+ }
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(HTTPWSTest);
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list