[Libreoffice-commits] online.git: loolwsd/test

Henry Castro hcastro at collabora.com
Sun Apr 24 18:59:04 UTC 2016


 loolwsd/test/httpwstest.cpp |  158 ++++++++++++++++++++++++++++++++++----------
 1 file changed, 124 insertions(+), 34 deletions(-)

New commits:
commit 05d9e5ae0ca6e7f68bf3d275beb4a30ce263f503
Author: Henry Castro <hcastro at collabora.com>
Date:   Sun Apr 24 14:59:23 2016 -0400

    loolwsd: test: update testInsertDelete

diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp
index 3b888c8..64dca86 100644
--- a/loolwsd/test/httpwstest.cpp
+++ b/loolwsd/test/httpwstest.cpp
@@ -9,6 +9,8 @@
 
 #include "config.h"
 
+#include <regex>
+
 #include <Poco/DirectoryIterator.h>
 #include <Poco/Dynamic/Var.h>
 #include <Poco/FileStream.h>
@@ -67,7 +69,7 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
     CPPUNIT_TEST(testPasswordProtectedDocumentWithWrongPassword);
     CPPUNIT_TEST(testPasswordProtectedDocumentWithCorrectPassword);
     CPPUNIT_TEST(testPasswordProtectedDocumentWithCorrectPasswordAgain);
-    CPPUNIT_TEST(testImpressPartCountChanged);
+    CPPUNIT_TEST(testInsertDelete);
 #if ENABLE_DEBUG
     CPPUNIT_TEST(testSimultaneousTilesRenderedJustOnce);
 #endif
@@ -94,7 +96,7 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
     void testPasswordProtectedDocumentWithWrongPassword();
     void testPasswordProtectedDocumentWithCorrectPassword();
     void testPasswordProtectedDocumentWithCorrectPasswordAgain();
-    void testImpressPartCountChanged();
+    void testInsertDelete();
     void testSimultaneousTilesRenderedJustOnce();
     void testNoExtraLoolKitsLeft();
 
@@ -901,10 +903,13 @@ void HTTPWSTest::testPasswordProtectedDocumentWithCorrectPasswordAgain()
     testPasswordProtectedDocumentWithCorrectPassword();
 }
 
-void HTTPWSTest::testImpressPartCountChanged()
+void HTTPWSTest::testInsertDelete()
 {
     try
     {
+        std::vector<std::string> parts;
+        std::string response;
+
         // Load a document
         const std::string documentPath = Util::getTempFilePath(TDOC, "insert-delete.odp");
         const std::string documentURL = "file://" + Poco::Path(documentPath).makeAbsolute().toString();
@@ -913,14 +918,10 @@ void HTTPWSTest::testImpressPartCountChanged()
         Poco::Net::WebSocket socket = *connectLOKit(request, _response);
 
         sendTextFrame(socket, "load url=" + documentURL);
-        sendTextFrame(socket, "status");
         CPPUNIT_ASSERT_MESSAGE("cannot load the document " + documentURL, isDocumentLoaded(socket));
 
         // check total slides 1
-        sendTextFrame(socket, "status");
-
-        std::string response;
-        getResponseMessage(socket, "status:", response, true);
+        getResponseMessage(socket, "status:", response, false);
         CPPUNIT_ASSERT_MESSAGE("did not receive a status: message as expected", !response.empty());
         {
             Poco::StringTokenizer tokens(response, " ", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM);
@@ -930,20 +931,46 @@ void HTTPWSTest::testImpressPartCountChanged()
             const std::string prefix = "parts=";
             const int totalParts = std::stoi(tokens[1].substr(prefix.size()));
             CPPUNIT_ASSERT_EQUAL(1, totalParts);
+
+            std::regex endLine("[^\n\r]+");
+            std::regex number("^[0-9]+$");
+            std::smatch match;
+            for (std::sregex_iterator it = std::sregex_iterator(response.begin(), response.end(), endLine);
+                 it != std::sregex_iterator(); ++it)
+            {
+                if (std::regex_match((*it).str(), match, number))
+                {
+                    parts.push_back(match.str());
+                }
+            }
+            CPPUNIT_ASSERT_EQUAL(totalParts, (int)parts.size());
+            parts.clear();
         }
 
-        /* FIXME partscountchanged: was removed, update accordingly
         // insert 10 slides
         for (unsigned it = 1; it <= 10; it++)
         {
             sendTextFrame(socket, "uno .uno:InsertPage");
-            getResponseMessage(socket, "partscountchanged:", response, false);
-            CPPUNIT_ASSERT_MESSAGE("did not receive a partscountchanged: message as expected", !response.empty());
+            getResponseMessage(socket, "status:", response, false);
+            CPPUNIT_ASSERT_MESSAGE("did not receive a status: message as expected", !response.empty());
             {
-                Poco::JSON::Parser parser;
-                Poco::Dynamic::Var result = parser.parse(response);
-                Poco::DynamicStruct values = *result.extract<Poco::JSON::Object::Ptr>();
-                CPPUNIT_ASSERT(values["action"] == "PartInserted");
+                Poco::StringTokenizer tokens(response, " ", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM);
+                const std::string prefix = "parts=";
+                const int totalParts = std::stoi(tokens[1].substr(prefix.size()));
+
+                std::regex endLine("[^\n\r]+");
+                std::regex number("^[0-9]+$");
+                std::smatch match;
+                for (std::sregex_iterator it = std::sregex_iterator(response.begin(), response.end(), endLine);
+                     it != std::sregex_iterator(); ++it)
+                {
+                    if (std::regex_match((*it).str(), match, number))
+                    {
+                        parts.push_back(match.str());
+                    }
+                }
+                CPPUNIT_ASSERT_EQUAL(totalParts, (int)parts.size());
+                parts.clear();
             }
         }
 
@@ -951,13 +978,26 @@ void HTTPWSTest::testImpressPartCountChanged()
         for (unsigned it = 1; it <= 10; it++)
         {
             sendTextFrame(socket, "uno .uno:DeletePage");
-            getResponseMessage(socket, "partscountchanged:", response, false);
-            CPPUNIT_ASSERT_MESSAGE("did not receive a partscountchanged: message as expected", !response.empty());
+            getResponseMessage(socket, "status:", response, false);
+            CPPUNIT_ASSERT_MESSAGE("did not receive a status: message as expected", !response.empty());
             {
-                Poco::JSON::Parser parser;
-                Poco::Dynamic::Var result = parser.parse(response);
-                Poco::DynamicStruct values = *result.extract<Poco::JSON::Object::Ptr>();
-                CPPUNIT_ASSERT(values["action"] == "PartDeleted");
+                Poco::StringTokenizer tokens(response, " ", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM);
+                const std::string prefix = "parts=";
+                const int totalParts = std::stoi(tokens[1].substr(prefix.size()));
+
+                std::regex endLine("[^\n\r]+");
+                std::regex number("^[0-9]+$");
+                std::smatch match;
+                for (std::sregex_iterator it = std::sregex_iterator(response.begin(), response.end(), endLine);
+                     it != std::sregex_iterator(); ++it)
+                {
+                    if (std::regex_match((*it).str(), match, number))
+                    {
+                        parts.push_back(match.str());
+                    }
+                }
+                CPPUNIT_ASSERT_EQUAL(totalParts, (int)parts.size());
+                parts.clear();
             }
         }
 
@@ -965,13 +1005,26 @@ void HTTPWSTest::testImpressPartCountChanged()
         for (unsigned it = 1; it <= 10; it++)
         {
             sendTextFrame(socket, "uno .uno:Undo");
-            getResponseMessage(socket, "partscountchanged:", response, false);
-            CPPUNIT_ASSERT_MESSAGE("did not receive a partscountchanged: message as expected", !response.empty());
+            getResponseMessage(socket, "status:", response, false);
+            CPPUNIT_ASSERT_MESSAGE("did not receive a status: message as expected", !response.empty());
             {
-                Poco::JSON::Parser parser;
-                Poco::Dynamic::Var result = parser.parse(response);
-                Poco::DynamicStruct values = *result.extract<Poco::JSON::Object::Ptr>();
-                CPPUNIT_ASSERT(values["action"] == "PartInserted");
+                Poco::StringTokenizer tokens(response, " ", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM);
+                const std::string prefix = "parts=";
+                const int totalParts = std::stoi(tokens[1].substr(prefix.size()));
+
+                std::regex endLine("[^\n\r]+");
+                std::regex number("^[0-9]+$");
+                std::smatch match;
+                for (std::sregex_iterator it = std::sregex_iterator(response.begin(), response.end(), endLine);
+                     it != std::sregex_iterator(); ++it)
+                {
+                    if (std::regex_match((*it).str(), match, number))
+                    {
+                        parts.push_back(match.str());
+                    }
+                }
+                CPPUNIT_ASSERT_EQUAL(totalParts, (int)parts.size());
+                parts.clear();
             }
         }
 
@@ -979,16 +1032,53 @@ void HTTPWSTest::testImpressPartCountChanged()
         for (unsigned it = 1; it <= 10; it++)
         {
             sendTextFrame(socket, "uno .uno:Redo");
-            getResponseMessage(socket, "partscountchanged:", response, false);
-            CPPUNIT_ASSERT_MESSAGE("did not receive a partscountchanged: message as expected", !response.empty());
+            getResponseMessage(socket, "status:", response, false);
+            CPPUNIT_ASSERT_MESSAGE("did not receive a status: message as expected", !response.empty());
             {
-                Poco::JSON::Parser parser;
-                Poco::Dynamic::Var result = parser.parse(response);
-                Poco::DynamicStruct values = *result.extract<Poco::JSON::Object::Ptr>();
-                CPPUNIT_ASSERT(values["action"] == "PartDeleted");
+                Poco::StringTokenizer tokens(response, " ", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM);
+                const std::string prefix = "parts=";
+                const int totalParts = std::stoi(tokens[1].substr(prefix.size()));
+
+                std::regex endLine("[^\n\r]+");
+                std::regex number("^[0-9]+$");
+                std::smatch match;
+                for (std::sregex_iterator it = std::sregex_iterator(response.begin(), response.end(), endLine);
+                     it != std::sregex_iterator(); ++it)
+                {
+                    if (std::regex_match((*it).str(), match, number))
+                    {
+                        parts.push_back(match.str());
+                    }
+                }
+                CPPUNIT_ASSERT_EQUAL(totalParts, (int)parts.size());
+                parts.clear();
+            }
+        }
+
+        // check total slides 1
+        sendTextFrame(socket, "status");
+        getResponseMessage(socket, "status:", response, false);
+        CPPUNIT_ASSERT_MESSAGE("did not receive a status: message as expected", !response.empty());
+        {
+            Poco::StringTokenizer tokens(response, " ", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM);
+            const std::string prefix = "parts=";
+            const int totalParts = std::stoi(tokens[1].substr(prefix.size()));
+            CPPUNIT_ASSERT_EQUAL(1, totalParts);
+
+            std::regex endLine("[^\n\r]+");
+            std::regex number("^[0-9]+$");
+            std::smatch match;
+            for (std::sregex_iterator it = std::sregex_iterator(response.begin(), response.end(), endLine);
+                 it != std::sregex_iterator(); ++it)
+            {
+                if (std::regex_match((*it).str(), match, number))
+                {
+                    parts.push_back(match.str());
+                }
             }
+            CPPUNIT_ASSERT_EQUAL(totalParts, (int)parts.size());
+            parts.clear();
         }
-        */
 
         socket.shutdown();
         Util::removeFile(documentPath);


More information about the Libreoffice-commits mailing list