summaryrefslogtreecommitdiff
path: root/desktop/qa
diff options
context:
space:
mode:
authorAshod Nakashian <ashod.nakashian@collabora.co.uk>2017-01-20 19:11:47 -0500
committerAshod Nakashian <ashnakash@gmail.com>2017-01-23 05:35:52 +0000
commitf6c0e851eff8c22c0ab427245c5eb78e9f396b62 (patch)
treea462e418c3d5957cea1a4c1dabff46cb83b8f354 /desktop/qa
parent0c3f61fb616ce73d1e651013c455410b987d3e12 (diff)
Lok: unittest batch API
Change-Id: I33bc59756f46b51a69efd91b89813ba17eca6218 Reviewed-on: https://gerrit.libreoffice.org/33403 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Diffstat (limited to 'desktop/qa')
-rw-r--r--desktop/qa/desktop_lib/test_desktop_lib.cxx45
1 files changed, 45 insertions, 0 deletions
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index 59bf62079b4b..666deb45375d 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -95,6 +95,7 @@ public:
void testContextMenuImpress();
void testNotificationCompression();
void testTileInvalidationCompression();
+ void testBatching();
void testPartInInvalidation();
void testRedlineWriter();
void testTrackChanges();
@@ -129,6 +130,7 @@ public:
CPPUNIT_TEST(testContextMenuImpress);
CPPUNIT_TEST(testNotificationCompression);
CPPUNIT_TEST(testTileInvalidationCompression);
+ CPPUNIT_TEST(testBatching);
CPPUNIT_TEST(testPartInInvalidation);
CPPUNIT_TEST(testRedlineWriter);
CPPUNIT_TEST(testTrackChanges);
@@ -1580,6 +1582,49 @@ void DesktopLOKTest::testPartInInvalidation()
}
}
+void DesktopLOKTest::testBatching()
+{
+ LibLODocument_Impl* pDocument = loadDoc("blank_text.odt");
+
+ comphelper::LibreOfficeKit::setPartInInvalidation(true);
+ comphelper::ScopeGuard aGuard([]()
+ {
+ comphelper::LibreOfficeKit::setPartInInvalidation(false);
+ });
+
+ std::vector<std::tuple<int, std::string>> notifs;
+ std::unique_ptr<CallbackFlushHandler> handler(new CallbackFlushHandler(pDocument, callbackCompressionTest, &notifs));
+
+ // Enable Batch mode.
+ handler->setEventLatch(true);
+
+ handler->queue(LOK_CALLBACK_INVALIDATE_TILES, "0, 0, 239, 239, 0");
+ handler->queue(LOK_CALLBACK_INVALIDATE_TILES, "EMPTY, 0");
+
+ Scheduler::ProcessEventsToIdle();
+
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), notifs.size());
+
+ handler->queue(LOK_CALLBACK_INVALIDATE_TILES, "0, 0, 239, 240, 0");
+ handler->queue(LOK_CALLBACK_INVALIDATE_TILES, "-121, -121, 300, 300, 0");
+ handler->queue(LOK_CALLBACK_INVALIDATE_TILES, "0, 0, -32767, -32767, 0");
+
+ Scheduler::ProcessEventsToIdle();
+
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), notifs.size());
+
+ // Disable Batch mode.
+ handler->setEventLatch(false);
+
+ Scheduler::ProcessEventsToIdle();
+
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), notifs.size());
+
+ size_t i = 0;
+ CPPUNIT_ASSERT_EQUAL((int)LOK_CALLBACK_INVALIDATE_TILES, (int)std::get<0>(notifs[i]));
+ CPPUNIT_ASSERT_EQUAL(std::string("0, 0, 1000000000, 1000000000, 0"), std::get<1>(notifs[i++]));
+}
+
void DesktopLOKTest::testRedlineWriter()
{
// Load a Writer document, enable change recording and press a key.