[Libreoffice-commits] online.git: loolwsd/test
Henry Castro
hcastro at collabora.com
Sun Aug 14 00:10:26 UTC 2016
loolwsd/test/httpwstest.cpp | 111 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 111 insertions(+)
New commits:
commit e41f8581d29ca2270fd292b205e5d65d8b695748
Author: Henry Castro <hcastro at collabora.com>
Date: Sat Aug 13 20:11:24 2016 -0400
loolwsd: test: column/row re-size
diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp
index 6f5be2f..0888b90 100644
--- a/loolwsd/test/httpwstest.cpp
+++ b/loolwsd/test/httpwstest.cpp
@@ -86,6 +86,7 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
CPPUNIT_TEST(testCalcEditRendering); // Broken with multiview.
CPPUNIT_TEST(testFontList);
CPPUNIT_TEST(testStateUnoCommand);
+ CPPUNIT_TEST(testColumnRowResize);
CPPUNIT_TEST_SUITE_END();
@@ -120,6 +121,7 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
void testCalcEditRendering();
void testFontList();
void testStateUnoCommand();
+ void testColumnRowResize();
void loadDoc(const std::string& documentURL);
@@ -141,6 +143,7 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
std::string getFontList(const std::string& message);
void testStateChanged(const std::string& filename, std::vector<std::string>& vecComands);
+ double getColRowSize(const std::string& property, const std::string& message, int index);
public:
HTTPWSTest()
@@ -1897,6 +1900,114 @@ void HTTPWSTest::testStateUnoCommand()
}
}
+double HTTPWSTest::getColRowSize(const std::string& property, const std::string& message, int index)
+{
+ Poco::JSON::Parser parser;
+ const auto result = parser.parse(message);
+ const auto& command = result.extract<Poco::JSON::Object::Ptr>();
+ auto text = command->get("commandName").toString();
+
+ CPPUNIT_ASSERT_EQUAL(std::string(".uno:ViewRowColumnHeaders"), text);
+ CPPUNIT_ASSERT(command->isArray(property));
+
+ auto array = command->getArray(property);
+
+ CPPUNIT_ASSERT(array->isObject(index));
+
+ auto item = array->getObject(index);
+
+ CPPUNIT_ASSERT(item->has("size"));
+
+ return item->getValue<double>("size");
+}
+
+void HTTPWSTest::testColumnRowResize()
+{
+ try
+ {
+ std::vector<char> response;
+ std::string documentPath, documentURL;
+ double oldHeight, oldWidth;
+
+ getDocumentPathAndURL("setclientpart.ods", documentPath, documentURL);
+ Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, documentURL);
+
+ auto socket = loadDocAndGetSocket(_uri, documentURL, "testColumnRowResize ");
+
+ const std::string commandValues = "commandvalues command=.uno:ViewRowColumnHeaders";
+ sendTextFrame(socket, commandValues);
+ response = getResponseMessage(socket, "commandvalues:", "testColumnRowResize ");
+ CPPUNIT_ASSERT_MESSAGE("did not receive a commandvalues: message as expected", !response.empty());
+ {
+ std::vector<char> json(response.begin() + std::string("commandvalues:").length(), response.end());
+ json.push_back(0);
+
+ // get column 2
+ oldHeight = getColRowSize("rows", json.data(), 1);
+ // get row 2
+ oldWidth = getColRowSize("columns", json.data(), 1);
+ }
+
+ // send column width
+ {
+ std::ostringstream oss;
+ Poco::JSON::Object objJSON, objColumn, objWidth;
+ double newWidth;
+
+ // change column 2
+ objColumn.set("type", "unsigned short");
+ objColumn.set("value", 2);
+
+ objWidth.set("type", "unsigned short");
+ objWidth.set("value", oldWidth + 100);
+
+ objJSON.set("Column", objColumn);
+ objJSON.set("Width", objWidth);
+
+ Poco::JSON::Stringifier::stringify(objJSON, oss);
+ sendTextFrame(socket, "uno .uno:ColumnWidth " + oss.str());
+ sendTextFrame(socket, commandValues);
+ response = getResponseMessage(socket, "commandvalues:", "testColumnRowResize ");
+ CPPUNIT_ASSERT_MESSAGE("did not receive a commandvalues: message as expected", !response.empty());
+ std::vector<char> json(response.begin() + std::string("commandvalues:").length(), response.end());
+ json.push_back(0);
+ newWidth = getColRowSize("columns", json.data(), 1);
+ CPPUNIT_ASSERT(newWidth > oldWidth);
+ }
+
+ // send row height
+ {
+ std::ostringstream oss;
+ Poco::JSON::Object objJSON, objRow, objHeight;
+ double newHeight;
+
+ // change row 2
+ objRow.set("type", "unsigned short");
+ objRow.set("value", 2);
+
+ objHeight.set("type", "unsigned short");
+ objHeight.set("value", oldHeight + 100);
+
+ objJSON.set("Row", objRow);
+ objJSON.set("Height", objHeight);
+
+ Poco::JSON::Stringifier::stringify(objJSON, oss);
+ sendTextFrame(socket, "uno .uno:RowHeight " + oss.str());
+ sendTextFrame(socket, commandValues);
+ response = getResponseMessage(socket, "commandvalues:", "testColumnRowResize ");
+ CPPUNIT_ASSERT_MESSAGE("did not receive a commandvalues: message as expected", !response.empty());
+ std::vector<char> json(response.begin() + std::string("commandvalues:").length(), response.end());
+ json.push_back(0);
+ newHeight = getColRowSize("rows", json.data(), 1);
+ CPPUNIT_ASSERT(newHeight > oldHeight);
+ }
+ }
+ 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