diff options
author | Ashod Nakashian <ashod.nakashian@collabora.co.uk> | 2017-01-20 19:11:47 -0500 |
---|---|---|
committer | Ashod Nakashian <ashnakash@gmail.com> | 2017-01-23 05:35:52 +0000 |
commit | f6c0e851eff8c22c0ab427245c5eb78e9f396b62 (patch) | |
tree | a462e418c3d5957cea1a4c1dabff46cb83b8f354 /desktop/qa | |
parent | 0c3f61fb616ce73d1e651013c455410b987d3e12 (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.cxx | 45 |
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, ¬ifs)); + + // 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. |