From 03921a07696c0abbeada515340f769291e3cf95f Mon Sep 17 00:00:00 2001 From: Ashod Nakashian Date: Sun, 28 Aug 2016 12:25:40 -0400 Subject: [PATCH] loolwsd: unittest cleanups Change-Id: Ic383915012ac1c254960d976cc89d3f7c1a2cb02 Reviewed-on: https://gerrit.libreoffice.org/28440 Reviewed-by: Ashod Nakashian Tested-by: Ashod Nakashian --- loolwsd/test/helpers.hpp | 22 ++++++++++++++-- loolwsd/test/httpwstest.cpp | 52 +++++++++++++++---------------------- 2 files changed, 41 insertions(+), 33 deletions(-) diff --git a/loolwsd/test/helpers.hpp b/loolwsd/test/helpers.hpp index fd7abef80..75bd9d771 100644 --- a/loolwsd/test/helpers.hpp +++ b/loolwsd/test/helpers.hpp @@ -82,9 +82,9 @@ std::vector readDataFromFile(std::unique_ptr& file) } inline -void getDocumentPathAndURL(const char* document, std::string& documentPath, std::string& documentURL) +void getDocumentPathAndURL(const std::string& docFilename, std::string& documentPath, std::string& documentURL) { - documentPath = Util::getTempFilePath(TDOC, document); + documentPath = Util::getTempFilePath(TDOC, docFilename); documentURL = "lool/ws/file://" + Poco::Path(documentPath).makeAbsolute().toString(); std::cerr << "Test file: " << documentPath << std::endl; @@ -388,6 +388,24 @@ std::shared_ptr loadDocAndGetSocket(const Poco::URI& uri, return nullptr; } +inline +std::shared_ptr loadDocAndGetSocket(const std::string& docFilename, const Poco::URI& uri, const std::string& name = "", bool isView = false) +{ + try + { + std::string documentPath, documentURL; + getDocumentPathAndURL(docFilename, documentPath, documentURL); + return loadDocAndGetSocket(uri, documentURL, name, isView); + } + catch (const Poco::Exception& exc) + { + CPPUNIT_FAIL(exc.displayText()); + } + + // Really couldn't reach here, but the compiler doesn't know any better. + return nullptr; +} + inline void SocketProcessor(const std::string& name, const std::shared_ptr& socket, diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp index 97e391af1..423e69825 100644 --- a/loolwsd/test/httpwstest.cpp +++ b/loolwsd/test/httpwstest.cpp @@ -1438,11 +1438,9 @@ void HTTPWSTest::testLimitCursor( std::functionshutdown(); std::cerr << "Reloading " << std::endl; - socket = loadDocAndGetSocket(_uri, documentURL); + socket = loadDocAndGetSocket(docFilename, _uri, testname); // Confirm that the text is in the comment and not doc body. // Click in the body. @@ -1520,11 +1518,9 @@ void HTTPWSTest::testInsertAnnotationWriter() void HTTPWSTest::testEditAnnotationWriter() { - std::string documentPath, documentURL; - getDocumentPathAndURL("with_comment.odt", documentPath, documentURL); - Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, documentURL); - - auto socket = loadDocAndGetSocket(_uri, documentURL); + const auto testname = "editAnnotationWriter "; + const std::string docFilename = "with_comment.odt"; + auto socket = loadDocAndGetSocket(docFilename, _uri, testname); // Click in the body. sendTextFrame(socket, "mouse type=buttondown x=1600 y=1600 count=1 buttons=1 modifier=0"); @@ -1532,7 +1528,7 @@ void HTTPWSTest::testEditAnnotationWriter() // Read body text. sendTextFrame(socket, "uno .uno:SelectAll"); sendTextFrame(socket, "gettextselection mimetype=text/plain;charset=utf-8"); - auto res = getResponseLine(socket, "textselectioncontent:", "insertAnnotationWriter "); + auto res = getResponseLine(socket, "textselectioncontent:", testname); CPPUNIT_ASSERT_EQUAL(std::string("textselectioncontent: Hello world"), res); // Confirm that the comment is intact. @@ -1540,20 +1536,20 @@ void HTTPWSTest::testEditAnnotationWriter() sendTextFrame(socket, "mouse type=buttonup x=13855 y=1893 count=1 buttons=1 modifier=0"); sendTextFrame(socket, "uno .uno:SelectAll"); sendTextFrame(socket, "gettextselection mimetype=text/plain;charset=utf-8"); - res = getResponseLine(socket, "textselectioncontent:", "insertAnnotationWriter "); + res = getResponseLine(socket, "textselectioncontent:", testname); CPPUNIT_ASSERT_EQUAL(std::string("textselectioncontent: blah blah xyz"), res); // Can we still edit the coment? sendTextFrame(socket, "paste mimetype=text/plain;charset=utf-8\nand now for something completely different"); sendTextFrame(socket, "uno .uno:SelectAll"); sendTextFrame(socket, "gettextselection mimetype=text/plain;charset=utf-8"); - res = getResponseLine(socket, "textselectioncontent:", "insertAnnotationWriter "); + res = getResponseLine(socket, "textselectioncontent:", testname); CPPUNIT_ASSERT_EQUAL(std::string("textselectioncontent: and now for something completely different"), res); // Close and reopen the same document and test again. socket->shutdown(); std::cerr << "Reloading " << std::endl; - socket = loadDocAndGetSocket(_uri, documentURL); + socket = loadDocAndGetSocket(docFilename, _uri, testname); // Confirm that the text is in the comment and not doc body. // Click in the body. @@ -1562,7 +1558,7 @@ void HTTPWSTest::testEditAnnotationWriter() // Read body text. sendTextFrame(socket, "uno .uno:SelectAll"); sendTextFrame(socket, "gettextselection mimetype=text/plain;charset=utf-8"); - res = getResponseLine(socket, "textselectioncontent:", "insertAnnotationWriter "); + res = getResponseLine(socket, "textselectioncontent:", testname); CPPUNIT_ASSERT_EQUAL(std::string("textselectioncontent: Hello world"), res); // Confirm that the comment is still intact. @@ -1570,24 +1566,21 @@ void HTTPWSTest::testEditAnnotationWriter() sendTextFrame(socket, "mouse type=buttonup x=13855 y=1893 count=1 buttons=1 modifier=0"); sendTextFrame(socket, "uno .uno:SelectAll"); sendTextFrame(socket, "gettextselection mimetype=text/plain;charset=utf-8"); - res = getResponseLine(socket, "textselectioncontent:", "insertAnnotationWriter "); + res = getResponseLine(socket, "textselectioncontent:", testname); CPPUNIT_ASSERT_EQUAL(std::string("textselectioncontent: and now for something completely different"), res); // Can we still edit the coment? sendTextFrame(socket, "paste mimetype=text/plain;charset=utf-8\nnew text different"); sendTextFrame(socket, "uno .uno:SelectAll"); sendTextFrame(socket, "gettextselection mimetype=text/plain;charset=utf-8"); - res = getResponseLine(socket, "textselectioncontent:", "insertAnnotationWriter "); + res = getResponseLine(socket, "textselectioncontent:", testname); CPPUNIT_ASSERT_EQUAL(std::string("textselectioncontent: new text different"), res); } void HTTPWSTest::testInsertAnnotationCalc() { - std::string documentPath, documentURL; - getDocumentPathAndURL("setclientpart.ods", documentPath, documentURL); - Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, documentURL); - - auto socket = loadDocAndGetSocket(_uri, documentURL); + const auto testname = "insertAnnotationCalc "; + auto socket = loadDocAndGetSocket("setclientpart.ods", _uri, testname); // Insert comment. sendTextFrame(socket, "uno .uno:InsertAnnotation"); @@ -1598,17 +1591,14 @@ void HTTPWSTest::testInsertAnnotationCalc() // Read it back. sendTextFrame(socket, "uno .uno:SelectAll"); sendTextFrame(socket, "gettextselection mimetype=text/plain;charset=utf-8"); - auto res = getResponseLine(socket, "textselectioncontent:", "insertAnnotationCalc "); + auto res = getResponseLine(socket, "textselectioncontent:", testname); CPPUNIT_ASSERT_EQUAL(std::string("textselectioncontent: aaa bbb ccc"), res); } void HTTPWSTest::testCalcEditRendering() { - std::string documentPath, documentURL; - getDocumentPathAndURL("calc_render.xls", documentPath, documentURL); - Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, documentURL); - - auto socket = loadDocAndGetSocket(_uri, documentURL); + const auto testname = "calcEditRendering "; + auto socket = loadDocAndGetSocket("calc_render.xls", _uri, testname); const std::string x = "5000"; const std::string y = "5"; @@ -1617,12 +1607,12 @@ void HTTPWSTest::testCalcEditRendering() sendTextFrame(socket, "key type=input char=98 key=0"); sendTextFrame(socket, "key type=input char=99 key=0"); - assertResponseLine(socket, "cellformula: abc", "calcEditRendering "); + assertResponseLine(socket, "cellformula: abc", testname); const auto req = "tilecombine part=0 width=512 height=512 tileposx=3840 tileposy=0 tilewidth=7680 tileheight=7680"; sendTextFrame(socket, req); - const auto tile = getResponseMessage(socket, "tile:", "calcEditRendering "); + const auto tile = getResponseMessage(socket, "tile:", testname); std::cout << "size: " << tile.size() << std::endl; // Return early for now when on LO >= 5.2.