test/UnitTyping.cpp | 62 +++-
1 file changed, 61 insertions(+), 1 deletion(-)
New commits:
commit 10caa82b0a2c90d8b7ee1c05ca9a928815c6873c
Author: Michael Meeks
AuthorDate: Mon Feb 3 22:55:52 2020 +0100
Commit: Michael Meeks
CommitDate: Mon Feb 10 23:23:04 2020 +0100
tdf#130382 - unit test for core fix for text input ordering issue.
Requires the relevant core commit.
Change-Id: I1b89c476ed6900bd0c5d981d125824c4bc2bf6da
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/87930
Tested-by: Jenkins CollaboraOffice
Reviewed-by: Michael Meeks
diff --git a/test/UnitTyping.cpp b/test/UnitTyping.cpp
index e3f6263a9..63835e3b4 100644
--- a/test/UnitTyping.cpp
+++ b/test/UnitTyping.cpp
@@ -12,6 +12,7 @@
#include
#include
+#include
#include
#include
@@ -52,7 +53,66 @@ public:
TestResult testWriterTyping()
{
-//const char* testname = "writerMultiViewEdit ";
+const char* testname = "writerCompositionTest ";
+std::string serverURL = LOOLWSD::getServerURL();
+const Poco::URI uri(serverURL);
+
+LOG_TRC("test writer typing");
+
+// Load a doc with the cursor saved at a top row.
+std::string documentPath, documentURL;
+helpers::getDocumentPathAndURL(
+"empty.odt", documentPath, documentURL, testname);
+
+std::shared_ptr socket =
helpers::loadDocAndGetSocket(uri, documentURL, testname);
+
+static const char *commands[] = {
+"key type=up char=0 key=17",
+"textinput id=0 type=input text=%E3%84%98",
+"textinput id=0 type=end text=%E3%84%98",
+"key type=up char=0 key=519",
+
+"textinput id=0 type=input text=%E3%84%9C",
+"textinput id=0 type=end text=%E3%84%9C",
+"key type=up char=0 key=522",
+
+"textinput id=0 type=input text=%CB%8B",
+"textinput id=0 type=end text=%CB%8B",
+"key type=up char=0 key=260",
+
+// replace with the complete character
+"removetextcontext id=0 before=3 after=0",
+"textinput id=0 type=input text=%E6%B8%AC",
+"textinput id=0 type=end text=%E6%B8%AC",
+"key type=up char=0 key=259"
+};
+static const unsigned char correct[] = {
+0xe6, 0xb8, 0xac
+};
+
+// Feed the keystrokes ...
+for (const char *str : commands)
+sendTextFrame(socket, str, testname);
+
+// extract their text
+sendTextFrame(socket, "uno .uno:SelectAll", testname);
+sendTextFrame(socket, "gettextselection
mimetype=text/plain;charset=utf-8", testname);
+
+LOG_TRC("Waiting for test selection:");
+const char response[] = "textselectioncontent:";
+const int responseLen = sizeof(response) - 1;
+std::string result = getResponseString(
+socket, response, testname, 5000 /* 5 secs */);
+
+LOG_TRC("length " << result.length() << " vs. " << (responseLen + 4));
+if (strncmp(result.c_str(), response, responseLen) ||
+result.length() < responseLen + 4 ||
+strncmp(result.c_str() + responseLen + 1, (const char *)correct,
3))
+{
+Util::dumpHex(std::cerr, "Error: wrong textselectioncontent:", "",
result);
+return TestResult::Failed;
+}
+
return TestResult::Ok;
}
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits